modèle statistique régression linéaire-formule patsy pour inclure tous les prédicteurs dans le modèle
Dire que j'ai un dataframe (appelons DF
) où y
est la variable dépendante et x1, x2, x3
mes variables indépendantes. Dans R je peux ajuster un modèle linéaire en utilisant le code suivant, et le .
comprendra toutes mes variables indépendantes dans le modèle:
# R code for fitting linear model
result = lm(y ~ ., data=DF)
Je ne peux pas comprendre comment faire cela avec statsmodels en utilisant des formules patsy sans ajouter explicitement toutes mes variables indépendantes à la formule. Est-ce que patsy a l'équivalent de R <!--4? Je Je n'ai pas eu de chance de le trouver dans la documentation de patsy.
3 réponses
je n'ai pas trouvé .
équivalent dans la documentation patsy soit. Mais ce qui lui manque en concision, il peut le compenser en donnant de fortes manipulations de cordes en Python. Ainsi, vous pouvez obtenir la formule impliquant toutes les colonnes variables dans DF
en utilisant
all_columns = "+".join(DF.columns - ["y"])
cela donne x1+x2+x3
dans votre cas. Enfin, vous pouvez créer une formule de chaîne de caractères en utilisant y
et passer à une procédure d'application
my_formula = "y~" + all_columns
result = lm(formula=my_formula, data=DF)
Comme ce n'est pas encore inclus dans patsy
, j'ai écrit une petite fonction que j'appelle quand j'ai besoin de courir statsmodels
modèles avec toutes les colonnes (éventuellement avec des exceptions)
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)
par exemple, Pour un dataframe appelé df
avec des colonnes y, x1, x2, x3
, running ols_formula(df, 'y', 'x3')
retourne 'y ~ x1 + x2'