首页 > 解决方案 > Python回归FOR循环中的行不匹配错误

问题描述

我正在寻找在 Python 中构建一个 FOR 循环程序来迭代地运行数百个 OLS 回归。我有一个包含 24 个观察值和 701 个变量的数据框。“Y”是因变量,所有其他都是自变量(X1 到 X700)。

我的目标是运行 700 次简单回归——通过在每个 X 上回归 Y。

这是我目前使用的代码:

import pandas as pd
import numpy as np
import statsmodels.formula.api as sm

df = pd.read_csv(r'file_location\regression_data.csv') # input dataset that contain 701 variables and 24 observations

list_iv   #  this list contains names of all the 700 independent variables (X1 to X700). Read from a .csv file
list_dsn  # this contains list of strings (v1, v2, v3…..v700). Read from a .csv file

gbl = globals()
for i, k in zip(list_iv, list_dsn):
    gbl['output_'+k] = sm.ols('Y ~ i',data=df).fit()

当我运行上面的代码时,我收到以下错误:

raise PatsyError(msg, origin)
PatsyError: Number of rows mismatch between data argument and i (24 versus 1)
    DR ~ i
         ^

我在这里错过了什么吗?请帮忙。

请注意 - 在每次迭代中,我将分别使用 output_k.params、output_k.pvalues 和 output_k.bse 创建一个包含回归系数、p 值和标准误差的数据框。所有这 700 个数据帧将被连接起来以创建包含 700 个观测值的最终数据帧。

标签: python

解决方案


推荐阅读