如何计算线性函数拟合后梯度的误差?

1 投票
2 回答
1325 浏览
提问于 2025-04-17 16:58

我现在正在把一个线性函数应用到距离和时间的图表上,以便计算一个粒子的速度...

velocity, intercept = numpy.polyfit(time, displacement, 1)

那么我该如何估算这个速度测量的误差呢?

2 个回答

0

你的时间值是不是均匀分布的?如果是的话,你可以通过下面的方法简单地计算速度:

velocitiy_between = (displacement[1:]-displacement[:-1])/(time[1:]-time[:-1])

这些速度现在不是在你的数据点上定义,而是在数据点之间定义的。接下来,你可以通过下面的方法给每个数据点分配它左边和右边的平均值:

velocity = (velocity_between[1:]+velocity_between[:-1])/2.0

这样,你就能得到一个包含所有内部数据点速度的数组,可以用来和你的拟合结果进行比较。

如果你的时间值不是均匀分布的,你仍然可以使用这个方法。不过,你需要根据数据的密度给你的误差分配额外的权重,以考虑到相邻点之间的斜率更容易被准确估计的事实。同时,邻居之间的平均值也会受到与邻居距离的影响。

如果你对第二种情况需要更多细节,随时留言哦。

2

你试过 scipy.stats.linregress 吗?

from scipy import stats
import numpy as np

coefficients = numpy.polyfit(time, displacement, 1)
fitted_data = np.poly1d(coefficients)

slope, intercept, r_value, p_value, std_err = stats.linregress(fitted_data, displacement)

撰写回答