我想知道如何计算多元线性回归中各种变量的 p 值。我确信在阅读了一些资源后,<5% 表明该变量对模型很重要。但是多元线性回归中每个变量的 p 值是如何计算的呢?
我尝试使用summary()函数查看statsmodels摘要。我只能看到值(value)观。我没有找到任何关于如何计算多元线性回归中各种变量的 p 值的资源。
import statsmodels.api as sm
nsample = 100
x = np.linspace(0, 10, 100)
X = np.column_stack((x, x**2))
beta = np.array([1, 0.1, 10])
e = np.random.normal(size=nsample)
X = sm.add_constant(X)
y = np.dot(X, beta) + e
model = sm.OLS(y, X)
results = model.fit()
print(results.summary())
本题没有错误,但需要直观地了解如何计算多元线性回归中各个变量的 p 值。
最佳答案
推论统计通过与已知分布进行比较来发挥作用。在回归的情况下,该分布通常是 t-distribution
您会注意到每个变量都有一个估计系数,可以根据该系数计算相关的 t 统计量。例如,x1
的 t 值为 -0.278
。为了获得 p 值,我们采用该 t 值,将其置于 t 分布上,并计算获得与您计算的 t 值一样极端的值的概率。通过注意到 p 值列称为 P>|t|
这里的另一个问题是 t 分布的确切形状取决于自由度
因此,要计算 p 值,您需要 2 条信息:t 统计量和模型的剩余自由度(在您的情况下为 97)
以x1
为例,您可以在Python中计算p值,如下所示:
import scipy.stats
scipy.stats.t.sf(abs(-0.278), df=97)*2
0.78160405761659357
使用各自的 t 值对其他每个预测变量执行相同的操作
关于python - 线性回归中多个变量的 p 值是如何计算的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56920135/