scipy.odr
为了解决这个问题,我使用x和y的不确定性进行拟合,使用scipy
curve_fit进行正确拟合,包括x中的错误?
拟合之后,我想计算参数的不确定性。因此,我看一下协方差矩阵对角元素的平方根。我得到:
>>> print(np.sqrt(np.diag(output.cov_beta)))
[ 0.17516591 0.33020487 0.27856021]
但是根据odr的文档,在其中Output
也有output.sd_beta
形状(p,)的估计参数的标准误差。
但是,它不会给我相同的结果:
>>> print(output.sd_beta)
[ 0.19705029 0.37145907 0.31336217]
编辑
这是笔记本上的示例:https
:
//nbviewer.jupyter.org/github/gvallverdu/cookbook/blob/master/fit_odr.ipynb
最小平方
stop reason: ['Sum of squares convergence']
params: [ -1.94792946 11.03369235 -5.43265555]
info: 1
sd_beta: [ 0.26176284 0.49877962 0.35510071]
sqrt(diag(cov): [ 0.25066236 0.47762805 0.34004208]
使用ODR
stop reason: ['Sum of squares convergence']
params: [-1.93538595 6.141885 -3.80784384]
info: 1
sd_beta: [ 0.6941821 0.88909997 0.17292514]
sqrt(diag(cov): [ 0.01093697 0.01400794 0.00272447]
差异的原因sd_beta
是由剩余方差来衡量,而cov_beta
并非如此。
scipy.odr
是ODRPACK
FORTRAN库的接口,该库薄包装在中__odrpack.c
。sd_beta
并cov_beta
通过索引到work
FORTRAN例程内部使用的向量中进行恢复。其第一个元素的索引work
是名为sd
和的变量vcv
(请参见此处)。
从ODRPACK文档(第85页):
WORK(SDI)
是包含函数参数的标准偏差(即协方差矩阵的对角项的平方根)的p × 1
数组的第一个元素,其中SD``̂σβK``β
WORK(SDI-1+K) = SD(K) = ̂V 1/2 β (K, K) = ̂σβK
为
K = 1,... ,p
。
WORK(VCVI)
是p × p
数组的第一个元素,其中VCV
包含β
按残差进行缩放之前 的参数协方差矩阵的值,其中WORK(VCVI-1+I+(J-1)*(NP)) = VCV(I,J) = ̂σ⁻²V β(I, J)
为
I = 1,... ,p
和J = 1,... ,p
。
换句话说,np.sqrt(np.diag(output.cov_beta * output.res_var))
将为您带来与相同的结果output.sd_beta
。
我在这里打开了一个错误报告。
问题内容: 我在这里很新,目前正在尝试使用Java计算标准偏差(我已经用谷歌搜索了哈哈),但是在使其正常工作方面存在很多问题 我有一个由用户输入的十个值,然后我必须计算到目前为止我所理解的标准偏差,这要归功于已经回答过的人们,我找到了数组的均值然后完成了计算 我已经将数据存储在10个值的数组中,但是我不太确定如何从数组中打印数据,然后进行计算而不必将输入代码存储在这里数据中,而这些数据我已经处理过
基本上,在每次打印之前,在windows的代码块中我有“fflush(stdin);”这很有效。当我将代码复制到Linux时,它不起作用,“fflush(stdin);”的任何替代方案也不起作用我找到了。无论我用哪种方式做,输入在缓冲区中似乎没有被清除,或者我的代码中的某些内容不正确。
但是由于某种原因,当我运行我的程序时,它似乎没有完全接受输入,并且给我一个错误的答案,当按下按钮时,它给我的答案是179.0的男性和169.0的女性。 我看了一遍又一遍,似乎无法找出这个逻辑错误。这是我的代码。
问题内容: 我应该将“如果查询结果行IS = 1进行验证的代码”替换为什么? 我已经尝试过使用num_rows的多种方法,但无法正常工作。 我的PHP代码: 问题答案: 要么
我创建这段代码是为了创建随机数和运算符,但它如何计算并显示结果呢? 它现在做的是,例如打印出来:4+1-3或9*2-8等。我不知道如何计算出4+1-3或9*2-8的结果,然后打印出来。
我应该用什么来替换'code TO VERIFY IF QUERY RESULT ROW IS=1'? 我用num_rows尝试了很多种方法,但都行不通。 我的PHP代码: