python - 如何在 numpy.polyfit 中包含测量误差

标签 python numpy

文档 HERE for numpy.polyfit 将可选输入向量 w 定义为“应用于 y 坐标的权重”。该定义不清楚,并且似乎不是最小二乘拟合中权重的标准定义(参见例如 HERE )。

在输入测量值存在 1σ 误差(标准差)的常见情况下,如何计算 numpy.polyfit 中使用的权重?

最佳答案

简短回答

w与numpy.polyfit中1σ误差之间的关系为

w = 1/sigma

这与每个人的期望不同。

编辑:根据我在 Github 上的评论,numpy.polyfit 1.16 文档现在明确指出“使用 1/sigma(而不是 1/sigma**2)”以避免人们认为公式中存在拼写错误。

说明

在最小二乘拟合中,通常以一种使拟合最小化平方误差的方式定义权重向量(参见例如WikipediaNIST)

chi2 = np.sum(权重*(p(x) - y)**2)

在 1σ 误差(标准差)“sigma”已知的常见情况下,具有熟悉的教科书关系,其中权重是方差的倒数

权重 = 1/sigma**2

但是 numpy.polyfit 文档将权重定义为“应用于 y 坐标的权重”。这个定义不太正确。权重适用于拟合残差,而不仅仅是 y 坐标。

更重要的是,看看 Numpy (v1.9.1) 代码中的数学,Numpy 代码似乎解决了下面最后平方意义上的线性问题,其中 w 向量确实解决了乘以 y 坐标

(vander*w[:, np.newaxis]).dot(x) == y*w

但是在最小二乘意义上求解上面的数组表达式相当于最小化下面括号内的 w 表达式

chi2 = np.sum((w*(vander.dot(x) - y))**2)

或者,使用 Numpy 文档的表示法

chi2 = np.sum((w*(p(x) - y))**2)

这样w与1σ误差之间的关系为

w = 1/sigma

这与每个人的期望不同。

关于python - 如何在 numpy.polyfit 中包含测量误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26799467/

相关文章:

python - 如何从Python上的html标签获取某些文本?

python - 类对象的属性 `get_context_data`

Pandas:将复数列转换为模数和参数列

python - 获取 2 个 pandas 列的范围列表

python - 解释为什么不应从源目录导入 numpy

python - 如何读取不受信任的证书以使用 Python 提取信息?

python - Azure 长音频 API - NodeJS

python - Django http 连接超时

python - 如何将 numpy 数组的两个数组轴折叠在一起?

numpy - numpy 数组 C_CONTIGUOUS 和 F_CONTIGUOUS 怎么可能