差异的原因
sd_beta是由剩余方差来衡量,而
cov_beta并非如此。
scipy.odr是ODRPACK
FORTRAN库的接口,该库薄包装在中
__odrpack.c。
sd_beta并
cov_beta通过索引到
workFORTRAN例程内部使用的向量中进行恢复。其第一个元素的索引
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。
我在这里打开了一个错误报告。



