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

jbs*_*ssm 7 python statistics numpy curve-fitting

我试图在numpy中对某些数据进行线性拟合.

Ex(其中w是我对该值的样本数,即对于(x=0, y=0)I 点仅有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)
Run Code Online (Sandbox Code Playgroud)

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

另外,我怎样才能从polyfit中得到拟合误差?

ask*_*han 5

如果测量结果呈正态分布,则每个值的不确定性将与测量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)
Run Code Online (Sandbox Code Playgroud)

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

e = np.sqrt(np.diag(c))
Run Code Online (Sandbox Code Playgroud)