【问题标题】:After fitting a linear function to a set of data, how can I find the error on the gradient of the function?将线性函数拟合到一组数据后,如何找到函数梯度的误差?
【发布时间】:2013-02-24 23:06:01
【问题描述】:

我目前将线性函数拟合到距离与时间的关系图上,以便计算出粒子的速度...

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

然后我怎样才能找到该速度测量中的误差估计值?

【问题讨论】:

    标签: python numpy matplotlib curve-fitting


    【解决方案1】:

    你试过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)
    

    【讨论】:

    • 这看起来可行。在文档中它说“估计的标准误差”。这是否意味着梯度或截距的标准误差?
    • 对不起,我的代码乱码。这是整个拟合的标准误差,因此两者 (displacement = gradient * time + intercept) 作为位移的误差是两者的函数。
    【解决方案2】:

    您的时间值是否等距放置?如果是,你可以简单地通过

    插值速度
    velocitiy_between = (displacement[1:]-displacement[:-1])/(time[1:]-time[:-1])
    

    这些速度现在不是在数据点上定义,而是在数据点之间定义。然后,您可以为每个数据点分配其左右近似的平均值

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

    通过这种方式,您可以获得所有内部数据点的速度数组,您可以将其与拟合结果进行比较。

    如果您的时间值不是等距放置的,您仍然可以使用这种方法。但是您必须根据数据密度为您的错误分配额外的加权因子,以考虑到附近点之间的斜率可以更好地近似这一事实。邻居之间的平均也取决于到邻居的距离。

    如果您需要关于第二种情况的更多详细信息,请发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      • 2015-01-07
      • 2020-11-30
      • 2017-01-09
      • 2022-06-10
      • 1970-01-01
      相关资源
      最近更新 更多