繁体   English   中英

numpy.polyfit给出协方差矩阵的误差

[英]numpy.polyfit giving error for covariance matrix

这是代码:

p=[1,2,3,4]

q=[4,5,6,7]

z,n=numpy.polyfit(p,q,1,cov=True)

它给了我这个信息:

4 z,n = np.polyfit(p,q,1,cov = True)

C:\\ Users \\ Rekha \\ Anaconda3 \\ lib \\ site-packages \\ numpy \\ lib \\ polynomial.py in polyfit(x,y,deg,rcond,full,w,cov)

601#Plus,它给出了一些不确定性的保守估计。

602如果len(x)<=阶+ 2:

-> 603提高ValueError(“数据点的数量必须超过阶数+ 2” 604“用于贝叶斯估计协方差矩阵”)

605 fac =残渣/(len(x)-阶-2.0)

ValueError:贝叶斯估计协方差矩阵的数据点数必须超过顺序+ 2

我不知道为什么会这样? 我有四个数据点,足以容纳一条线

错误恰恰说明了问题所在:您没有足够的数据点来估计协方差矩阵 (并且执行拟合)。

import numpy as np

p = [1, 2, 3, 4]
q = [4, 5, 6, 7]

z = np.polyfit(p, q, 1, cov=False)
print(z)

或者,如果满足建议的条件(即多一个数据点),则可以估算协方差矩阵。

import numpy as np

p = [1, 2, 3, 4, 5]
q = [4, 5, 6, 7, 8]

z, n = np.polyfit(p, q, 1, cov=True)

print(z, n)

我不知道您需要什么协方差矩阵,但是如果您所需要的只是fit参数的误差,则可以考虑手动计算,例如,通过取C(n, k) n数据点的所有可能的C(n, k)组合对于k所有有效值,然后计算所获得系数的标准偏差。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM