以下内容并不能回答所有问题,但它可以帮助你使用python、pandas和statsmodels进行回归分析。
给定一个像这样的数据框...
import pandas as pd
import numpy as np
import itertools
np.random.seed(123)
rows = 12
listVars= ['y','x1', 'x2', 'x3']
rng = pd.date_range('1/1/2017', periods=rows, freq='D')
df_1 = pd.DataFrame(np.random.randint(100,150,size=(rows, len(listVars))), columns=listVars)
df_1 = df_1.set_index(rng)
print(df_1)
![enter image description here](https://istack.dev59.com/LfnJf.webp)
...你可以使用statsmodels库并修改以下代码片段中的result = model.rsquared
部分,来获得任何回归结果:
x = df_1['x1']
x = sm.add_constant(x)
model = sm.OLS(df_1['y'], x).fit()
result = model.rsquared
print(result)
![enter image description here](https://istack.dev59.com/orZ5S.webp)
现在你已经有了R平方。使用
model.pvalues
获取p值。并使用
dir(model)
更仔细地查看其他模型结果(输出中有比下面看到的更多内容):
![enter image description here](https://istack.dev59.com/XDBb2.webp)
现在,这应该可以帮助您获得所需的结果。
要获取所有变量/列的所需结果,问题和答案here应该能够帮助您迈出很大的一步。
编辑:您可以使用model.summary()
更仔细地查看一些常见的回归结果。与dir(model)
一起使用,您可以看到并非所有回归结果都可以像使用model.pvalues
那样轻松获得p值。例如,要获取Durbin-Watson值,您将需要使用durbinwatson = sm.stats.stattools.durbin_watson(model.fittedvalues, axis=0)
。
此帖子提供了有关此问题的更多信息。