statsmodels线性回归 - 包含模型中所有预测变量的patsy公式

Gre*_*reg 13 python r statsmodels

假设我有一个数据帧(让我们称之为DF),其中y是因变量,并且x1, x2, x3是我的自变量.在RI中可以使用以下代码拟合线性模型,并且.将包括模型中的所有自变量:

# R code for fitting linear model
result = lm(y ~ ., data=DF)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使用patsy公式使用patsy公式而不显式地将所有自变量添加到公式中.patsy是否与R相当.?我在patsy文档中找不到任何运气.

Sud*_*kar 20

我也没有.在patsy文档中找到相同的文档.但它缺乏简洁性,它可以通过在Python中提供强大的字符串操作来弥补.因此,您可以在DF使用中获得涉及所有变量列的公式

all_columns = "+".join(DF.columns - ["y"])
Run Code Online (Sandbox Code Playgroud)

这给出x1+x2+x3了你的情况.最后,您可以使用创建字符串公式y并将其传递给任何拟合过程

my_formula = "y~" + all_columns
result = lm(formula=my_formula, data=DF)
Run Code Online (Sandbox Code Playgroud)

  • `DF.columns - ["y"]` 给了我一个错误。对我有用的语法是`DF.columns.difference(["y"])` (6认同)
  • 它没有在patsy中实现的唯一原因是我和其他任何人都没有找到时间来做这件事:-)这里有一个部分尝试,如果其他人想要去讨论,讨论可能很有用:https ://github.com/pydata/patsy/pull/28 (4认同)

jse*_*old 7

不幸的是,这还不存在于patsy中.看到这个问题.


小智 6

由于这仍未包含在 中patsy,我编写了一个小函数,当我需要运行statsmodels包含所有列的模型时调用该函数(可选地有例外)

def ols_formula(df, dependent_var, *excluded_cols):
    '''
    Generates the R style formula for statsmodels (patsy) given
    the dataframe, dependent variable and optional excluded columns
    as strings
    '''
    df_columns = list(df.columns.values)
    df_columns.remove(dependent_var)
    for col in excluded_cols:
        df_columns.remove(col)
    return dependent_var + ' ~ ' + ' + '.join(df_columns)
Run Code Online (Sandbox Code Playgroud)

例如,对于df使用 columns调用的数据框y, x1, x2, x3,运行ols_formula(df, 'y', 'x3')返回'y ~ x1 + x2'