如何在具有多个独立变量的 Pandas 数据帧上运行 OLS 回归?

时间:2021-06-11 17:15:21

标签: python pandas dataframe linear-regression

我有这个数据框:

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

df = pd.DataFrame({"A1": [10,20,30,40,50], "A2": [40,30,50,60,70], "B": [20, 30, 10, 40, 50],\
                   "C": [32, 234, 23, 23, 42523], "D": [55,462,564,13,56],})
   
    A1  A2  B   C   D
0   10  40  20  32  55
1   20  30  30  234 462
2   30  50  10  45  564
3   40  60  40  33  13
4   50  70  50  425 56

我想使用此数据框执行具有多个自变量(A1 和 A2)的多元线性回归,但我对如何在公式中使用此数据框感到困惑:

result = sm.ols(formula = "A1,A2 ~ B + C + D", data = df).fit()

这不起作用,因为我只能给出一个自变量,我是否必须制作多个数据框?

1 个答案:

答案 0 :(得分:1)

具有 2 个自变量的回归等效于 2 个线性回归模型,每个模型具有一个自变量。这概括为 N

所以,你可以这样做:

reshape2::recast(a, fac~Year+variable, id.var = c('Year', 'fac'))
   fac 2018_a 2018_b 2018_c 2019_a 2019_b 2019_c 2020_a 2020_b 2020_c
1 this      1      a      d      2      b      e      3      c      f

例如,如果您有 2 个以上并且它们都以 result_1 = sm.ols(formula="A1 ~ B + C + D", data=df).fit() result_2 = sm.ols(formula="A2 ~ B + C + D", data=df).fit() 开头,我们可以将其概括为

A

然后您可以索引到 indep_vars = df.filter(regex="^A").columns dependents = df.columns.difference(indep_vars) results = [sm.ols(formula=f"{indep} ~ {' + '.join(dependents)}", data=df).fit() for indep in indep_vars]

相关问题