我正在尝试使用statsmodels运行ANOVA,为此我正在使用循环为数据框中的每个列(分类特征)创建模型,与一列“imp”相关。
for cat_feature in df:
data_model = pd.DataFrame({
'x': df[cat_feature],
'y': df['imp']})
model = smf.ols('y ~ x',data=data_model).fit()
res = sm.stats.anova_lm(model, typ=1)
但是我想要做的是:
smf.ols(df['imp'] ~ df[cat_feature],data=df).fit()
但这不是正确的语法。
不必每次都创建数据模型,其中一个列始终相同。
有可能吗?
或者简单地说
model = smf.ols('A~B', data=df).fit()
能够正常工作但是
model2 = smf.ols(df.A ~ df.B, data=df).fit()
不可以。
df[cat_feature]
中的值是数字还是字符串或其他类型? - Josefmodel2 = smf.ols('df.A ~ df.B', data=df).fit()
能够正常工作。因为名称对我来说并不重要。 - julian joseph