9

我正在尝试对 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)

所以,现在的问题是:w=w在这些情况下使用 polyfit 是否正确,或者我w = sqrt(w)应该使用我应该使用什么?

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

4

1 回答 1

4

如果您有正态分布的测量值,那么每个值的不确定性将与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))
于 2013-10-29T21:12:34.860 回答