【问题标题】:covariance in numpy polyfit for two data points两个数据点的 numpy polyfit 中的协方差
【发布时间】:2016-08-11 17:48:57
【问题描述】:

我有两个数据点 x 和 y 以及相关的 y 误差。我想通过数据点拟合一条直线并计算斜率和截距的误差。当我尝试使用带有 cov=True 的 numpy ployfit 来获取协方差矩阵以找到错误时,它给了我以下错误:

ValueError: operands could not be broadcast together with shapes (2,2) (0,)

示例代码:

import numpy as np
x=np.array([1,5])
y=np.array([1,5])
errors=np.array([0.2,0.4])
np.polyfit(x,y,1, w=errors, cov=True)

任何帮助将不胜感激。

【问题讨论】:

  • 也许是np.polyfit(x,y,0, w=errors, cov=True)?
  • @NickilMaveli 将绘制一个 0 度多项式。此函数属于 x=y 类型(因此为 1 次多项式)。

标签: python numpy


【解决方案1】:

我认为这是不可能的。为了计算协方差矩阵,polyfit(调用numpy.lstsq)需要残差。但是适合您的残差必然为零,因为您的直线将始终通过两个数据点。

事实上,只要系数矩阵的秩小于或等于数据点数 Nlstsq 就会为 resid 返回一个空数组。

也许您应该问一下您希望从“斜率和截距中的错误”中获得什么信息:他们可能会采用哪些其他值以使“拟合”的值在某种意义上是最好的?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多