在 numpy polyfit 中使用什么权重值以及拟合的误差是多少



我正在尝试对numpy中的某些数据进行线性拟合。

例如(其中 w 是我对该值的样本数,即对于点(x=0, y=0)我只有 1 个测量值并且该测量值是 2.2 ,但对于点(1,1)我有 2 个测量值为 3.5 .

x = np.array([0, 1, 2, 3])
y = np.array([2.2, 3.5, 4.6, 5.2])
w = np.array([1, 2, 2, 1])
z = np.polyfit(x, y, 1, w = w)

所以,现在的问题是:在这些情况下,在 Polyfit 中使用 w=w 是否正确,还是应该使用w = sqrt(w)我应该使用的内容?

另外,如何从 polyfit 获得拟合误差?

如果您有正态分布测量值,则每个值的不确定性将与1/sqrt(n)成正比,其中n是测量次数。 你想通过不确定性的倒数来衡量你的拟合度,所以你的第二个猜测是最好的:w=np.sqrt(n)

要获得参数的协方差,还要给出cov=True

x = np.array([0, 1, 2, 3])
y = np.array([2.2, 3.5, 4.6, 5.2])
n = np.array([1, 2, 2, 1])
p, c = np.polyfit(x, y, 1, w=np.sqrt(n), cov=True)

cov矩阵的对角线是每个参数的单个方差,当然非对角线是协方差。 因此,您最想要的"拟合误差"很可能是这些对角线的平方根:

e = np.sqrt(np.diag(c))

最新更新