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)
小智 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'
| 归档时间: |
|
| 查看次数: |
7029 次 |
| 最近记录: |