我有两个数据点,x和y以及相关的y错误。我希望在数据点中插入一条直线并计算斜率和截距中的误差。当我尝试使用带有cov = True的numpy ployfit来获取协方差矩阵以便找到错误时它会给我以下错误:
ValueError: operands could not be broadcast together with shapes (2,2) (0,)
示例代码:
import numpy as np
x=np.array([1,5])
y=np.array([1,5])
errors=np.array([0.2,0.4])
np.polyfit(x,y,1, w=errors, cov=True)
任何帮助将不胜感激。
答案 0 :(得分:1)
我不认为这是可能的。为了计算协方差矩阵,polyfit
(调用numpy.lstsq
)需要残差。但是你的拟合残差必须为零,因为你的直线总是会经过两个数据点。
事实上,只要系数矩阵的排名小于或等于lstsq
(数据点的数量),resid
就会为N
返回一个空数组。
也许你应该问一下你希望从斜率和拦截中得到什么信息":他们可能采取什么样的其他价值,使得那些"适合"在某种意义上是最好的吗?