如何使用for循环将线性回归结果(变量名,p_value)放入数据框?
How to put linear regression results (variable name, p_value) into a dataframe using for loop?
我有 1 个目标变量和数百个预测变量。我正在尝试一次对一个预测变量进行 运行 线性回归,然后使用 for 循环创建一个数据框来保存所有单变量线性回归结果(即 - 变量名称,p_value)。
这是我在 python 中的回归代码(X_data 具有所有预测变量,y_data 具有目标变量:
import statsmodels.api as sm
for column in X_Data:
exog = sm.add_constant(X_data[column],prepend = False)
mod = sm.OLS(y_data, exog)
res = mod.fit()
print(column, ' ', res.pvalues[column])
打印结果如下:
variable1 0.003
variable2 0.3
...
如何创建 pandas 数据框来保存所有 p_value 结果?
您可以在循环之前初始化一个空容器,比如 dict
,然后填充它并在之后构造 DataFrame。
d = {}
for column in X_Data:
exog = sm.add_constant(X_data[column],prepend = False)
mod = sm.OLS(y_data, exog)
res = mod.fit()
d[column] = res.pvalues[column])
df = pd.DataFrame.from_dict(d, orient='index', columns=['pval'])
# pval
#variable1 0.003
#variable2 0.300
如果您需要存储多条信息(系数、置信区间、标准误差...),那么您的 dict
可以为每个键存储 dict
个属性。
d = {}
for column in X_Data:
...
d[column] = {'pval': res.pvalues[column], 'other_feature': ...}
print(d)
#{'variable1': {'pval': 0.003, 'other_feature': 'XX'},
# 'variable2': {'pval': 0.300, 'other_feature': 'YY'}}
df = pd.DataFrame.from_dict(d, orient='index')
# pval other_feature
#variable1 0.003 XX
#variable2 0.300 YY
为此,您可以将应用与 lambda 函数结合使用。
X_Data['Prediction'] = X_Data.apply(lambda x: sm.OLS(y_data,x))
我有 1 个目标变量和数百个预测变量。我正在尝试一次对一个预测变量进行 运行 线性回归,然后使用 for 循环创建一个数据框来保存所有单变量线性回归结果(即 - 变量名称,p_value)。
这是我在 python 中的回归代码(X_data 具有所有预测变量,y_data 具有目标变量:
import statsmodels.api as sm
for column in X_Data:
exog = sm.add_constant(X_data[column],prepend = False)
mod = sm.OLS(y_data, exog)
res = mod.fit()
print(column, ' ', res.pvalues[column])
打印结果如下:
variable1 0.003
variable2 0.3
...
如何创建 pandas 数据框来保存所有 p_value 结果?
您可以在循环之前初始化一个空容器,比如 dict
,然后填充它并在之后构造 DataFrame。
d = {}
for column in X_Data:
exog = sm.add_constant(X_data[column],prepend = False)
mod = sm.OLS(y_data, exog)
res = mod.fit()
d[column] = res.pvalues[column])
df = pd.DataFrame.from_dict(d, orient='index', columns=['pval'])
# pval
#variable1 0.003
#variable2 0.300
如果您需要存储多条信息(系数、置信区间、标准误差...),那么您的 dict
可以为每个键存储 dict
个属性。
d = {}
for column in X_Data:
...
d[column] = {'pval': res.pvalues[column], 'other_feature': ...}
print(d)
#{'variable1': {'pval': 0.003, 'other_feature': 'XX'},
# 'variable2': {'pval': 0.300, 'other_feature': 'YY'}}
df = pd.DataFrame.from_dict(d, orient='index')
# pval other_feature
#variable1 0.003 XX
#variable2 0.300 YY
为此,您可以将应用与 lambda 函数结合使用。
X_Data['Prediction'] = X_Data.apply(lambda x: sm.OLS(y_data,x))