Ответ 1
Нет, к сожалению, этого еще не существует. Смотрите issue.
Скажем, у меня есть фрейм данных (пусть его называют DF
), где y
- зависимая переменная, а x1, x2, x3
- мои независимые переменные. В R я могу поместить линейную модель, используя следующий код, а .
будет включать в себя все мои независимые переменные в модели:
# R code for fitting linear model
result = lm(y ~ ., data=DF)
Я не могу понять, как это сделать с помощью statsmodels, используя формулы patcy без явного добавления всех моих независимых переменных в формулу. Имеет ли patsy эквивалент R .
? Мне не повезло найти его в патчей документации.
Нет, к сожалению, этого еще не существует. Смотрите issue.
Я не нашел эквивалент .
в документации по патентам. Но то, чего ему не хватает в лаконичности, он может компенсировать, давая сильные манипуляции с строками в Python. Таким образом, вы можете получить формулу, включающую все столбцы переменных в DF
, используя
all_columns = "+".join(DF.columns - ["y"])
Это дает x1+x2+x3
в вашем случае. Наконец, вы можете создать формулу строки с помощью y
и передать ее в любую процедуру подбора
my_formula = "y~" + all_columns
result = lm(formula=my_formula, data=DF)
Поскольку это еще не включено в 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)
Например, для фрейма данных, называемого df
с столбцами y, x1, x2, x3
, запуск ols_formula(df, 'y', 'x3')
возвращает 'y ~ x1 + x2'