如何从Python中的OLSResults获取变量中的P值?

时间:2016-12-10 11:38:24

标签: python linear-regression statsmodels

的OLSResults
df2 = pd.read_csv("MultipleRegression.csv")
X = df2[['Distance', 'CarrierNum', 'Day', 'DayOfBooking']]
Y = df2['Price']
X = add_constant(X)
fit = sm.OLS(Y, X).fit()
print(fit.summary())

将每个属性的P值显示为仅3个小数位。

我需要为DistanceCarrierNum等每个属性提取p值,并以科学计数法打印出来。

我可以使用fit.params[0]fit.params[1]等提取系数

需要获得所有P值。

所有P值为0的意思是什么?

2 个答案:

答案 0 :(得分:9)

我们需要fit.pvalues[i]来获得答案,其中i是自变量的数量。

我们还可以使用dir(<object>)查找对象的所有属性。这是另一个有用的知识。

答案 1 :(得分:2)

您可以在 for 循环中使用 fit.pvalues[attributeIndex] 来打印所有特征/属性的 p 值,而不是使用 fit.summary(),如下所示:

df2 = pd.read_csv("MultipleRegression.csv")
X = df2[['Distance', 'CarrierNum', 'Day', 'DayOfBooking']]
Y = df2['Price']
X = add_constant(X)
fit = sm.OLS(Y, X).fit()
for attributeIndex in range (0, numberOfAttributes):
    print(fit.pvalues[attributeIndex])

================================================ ============================

此外,所有 P 值为 0 意味着什么?

这可能是个好结果。每一项的 p 值检验系数 (b1, b2, ..., bn) 为零的原假设,这对拟合方程没有影响 y = b0 + b1x1 + b2x2... 低 p 值 (< 0.05) 表示您可以拒绝原假设。换句话说,具有低 p 值的预测变量可能是对模型有意义的补充,因为预测变量值的变化与响应变量 (y) 的变化有关。

另一方面,较大(不显着)的 p 值表明预测变量的变化与响应的变化无关。