[英]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.