我对python中的线性回归问题的统计验证感兴趣。传统上,这些问题可以通过scipy的linregress
函数来解决。例如:
x = np.linspace(0,1,25)
y = 0.5*x + np.random.normal(0,0.15,len(x))
err = np.random.uniform(3.8,0.5,len(x))
plt.scatter(x,y)
然后我们可以使用linregress(x,y)
来计算p值。在这种情况下,我们得到一个pvalue=1.3e-8
,所以我们的拟合是显着的,考虑到我们的图,这似乎是合理的。
然而,如果我们也绘制误差线,情况会发生变化:
现在,考虑到误差的大小,拟合显著的结论似乎令人怀疑。有没有一种方法可以将错误大小的信息合并到python的pvalue测试中?
1条答案
按热度按时间f0brbegy1#
据我所知,常见的线性回归只是最小化回归线误差的平方和,所以它不考虑数据点的个体误差。
我认为你可能对p值有一个解释错误,即使这个错误绝对是巨大的,相关性和斜率看起来是存在的。
这样想,如果误差线是如此之大,难道你不奇怪,你有这样一个明确的上升线的点?所以p值很小
从文档:
pvalue浮点数
零假设为斜率为零的假设检验的p值,使用Wald检验和检验统计量的t分布。
所以对我来说,它看起来不错,你也可以考虑你的测量是精确的但不准确的情况,所以你可能会在y轴上有非常大的变化(因此如果你想要的话,误差条),就像在一个未校准的仪器(具有线性响应)中一样,这仍然不会影响p值,这与这个情况类似。