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

如何从Python中的OLSResults获取变量中的P值?,python,linear-regression,statsmodels,Python,Linear Regression,Statsmodels,研究结果 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位 我需要提取每个属性的p值,如距离,CarrierNum等,并以科学记数法打印

研究结果

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位

我需要提取每个属性的p值,如
距离
CarrierNum
等,并以科学记数法打印

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

需要为所有的p值获取它


另外,所有p值为0意味着什么?

我们必须进行
fit.pvalues[i]
来得到答案,其中
i
是自变量的数量


我们还可以使用
dir()

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

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值表明预测值的变化与响应的变化无关。

dir(fit)
并寻找可能的候选对象因为
pvalues
是一个系列,可以使用
fit.pvalues.loc['Price']