gpt4 book ai didi

python - 计算线性回归的斜率和截距误差

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:39 26 4
gpt4 key购买 nike

我有一个非常简单的 3 个数据点的情况,我想使用 np.polyfit 通过这些点进行线性拟合 y=a0 + a1x >scipy.stats.linregress

为了进一步传播误差,我需要斜率和截距中的误差。到目前为止,我不是统计方面的专家,但在 scipy 方面,我只知道 stderr 不会在斜率和截距上 split 。Polyfit 可以估计协方差矩阵,但这不适用于仅 3 个数据点。

例如,当使用 qtiplot 时,它会产生斜率和截距错误。

B (y-intercept) = 9,291335740072202e-12 +/- 2,391260092282606e-13
A (slope) = 2,527075812274368e-12 +/- 6,878180102259077e-13

在 python 中计算这些的合适方法是什么?

编辑:

np.polyfit(x, y, 1, cov=True)

结果

ValueError: the number of data points must exceed order + 2 for Bayesian estimate the covariance matrix

最佳答案

scipy.stats.linregress为您提供斜率、截距、相关系数、p 值和标准误差。拟合线不存在与其斜率或截距相关的误差,这些误差与点到线的距离有关。 Have a read through this to clear up the point

一个例子...

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

points = np.array([[1, 3], [2, 4], [2, 7]])
slope, intercept, r_value, p_value, std_err = stats.linregress(points)

print("slope = ", slope)
print("intercept = ", intercept)
print("R = ", r_value)
print("p = ", p_value)
print("Standard error = ", std_err)

for xy in points:
plt.plot(xy[0], xy[1], 'ob')

x = np.linspace(0, 10, 100)
y = slope * x + intercept
plt.plot(x, y, '-r')

plt.grid()
plt.show()

关于python - 计算线性回归的斜率和截距误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722266/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com