python - np.polyfit 图在 python 中具有不确定性

标签 python numpy dataframe statistics polynomials

我有以下数据框:

x      y           error_on_y
1      1.2         0.1
2      0.87        0.23
4      1.12        0.11
5      0.75        0.06
5      0.66        0.15
6      0.98        0.08
7      1.34        0.05
7      2.86        0.12

对于这个框架,我想使用 np.polyfit 来拟合回归线。 我已经安装了这条线:

x = np.array(dataframe['x'])
y = np.array(dataframe['y'])

y_err = np.array(dataframe['error_on_y'])

np.polyfit(x,y,deg=1, w=1/y_err, cov=True)

但是我找不到如何根据我在 python 中定义的错误绘制此拟合图。到目前为止,我发现的使用 np.polyfit 绘图的唯一示例是不涉及指定权重的拟合。

有谁知道我如何绘制这条线?或者有人知道血统示例的链接吗?我一直没能找到,现在我已经找了很长一段时间,所以非常欢迎和非常感谢任何有关此事的专业知识!

编辑/澄清:

当 weight(w) 未在函数中定义时,polyfit 函数将返回一个向量,其系数可使平方误差最小化。然而,当 w 被定义时,另一个向量也会被添加:

np.polyfit(x,y,deg=1, w=1/y_err, cov=True)

输出:

(array([0.00097481, 0.82290694]), array([[ 4.75261249e-09, -2.28408710e-07],
    [-2.28408710e-07,  1.41696109e-05]]))

编辑/附加信息:

找到此链接(https://peteris.rocks/blog/extrapolate-lines-with-numpy-polyfit/)后,我发现使用未定义的权重时,polyfit 函数仅返回第一个数组。即

vector = array([0.00097481, 0.82290694])

在行函数 y = mx + b 然后 m =vector[0] 和 b = vector[1] 。又名 m = 斜率和 b = 截距。这意味着上面示例中的附加向量必须是函数中定义的权重的结果。

我正在尝试找到如何使用包含的权重来解释/绘制它:)

可能的答案: 我发现了以下内容:

import numpy as np
new = np.polyfit(x,y,deg=1, w=1/y_err, cov=True)
m, b = new[0]
a,c = new[1][0]
d,e = new[1][1]
m, b, a,c, d,e

for i in range(min(x), max(x)):
    plt.plot(i, i * m + b, 'go')
    plt.plot(i, i * (m+a) + (b+c), 'bo')
    plt.plot(i, i * (m-d) + (b-e), 'ro')

plt.show()

在这个例子中,我假设在

中给出的第一个数组/向量
(array([0.00097481, 0.82290694]), array([[ 4.75261249e-09, -2.28408710e-07],
        [-2.28408710e-07,  1.41696109e-05]]))

是拟合回归线的系数。以下 2 个数组将是回归线上的错误。这是我尝试过的,我相信这是有道理的。虽然它不是确定的,所以我将保留该帖子以供评论和评论/更好的解决方案。

最佳答案

当您执行 np.polyfit(x,y,deg=1, w=1/y_err, cov=True) 时,您正在计算(除其他外)多项式的系数。要轻松操纵此类系数,您可以创建一个多项式对象

p, mycov = np.poly1d(np.polyfit(x,y,deg=1, w=1/y_err, cov=True))

并使用

绘制它
x_plot = np.linspace(1, 7, 100)
plt.plot(x_plot, p(x_plot))

关于python - np.polyfit 图在 python 中具有不确定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51420951/

相关文章:

python - selenium webdriver python - 如果自定义编写的 python 代码中存在错误,则使 selenium 测试用例失败

python - 如何使用 python + NumPy/SciPy 计算滚动/移动平均值?

python Pandas : multi-index unstack taking forever

apache-spark - pyspark 数据框列 : Hive column

python - 关于仅打印矩阵中某些值的问题

python - Celery + Gevent 池在执行 1000 多个任务后挂起

python - 将 MATLAB 矩阵对象转换为 Python NumPy 数组

python - 减去数据帧 Pandas 时的NaN

python - 如何在 scikit-learn 或 Neuraxle 中并行运行 2 个管道?

python - 来自 postgres 的非规范化 numpy 数组