【发布时间】:2017-09-08 17:39:36
【问题描述】:
假设我有一个pandas 数据框:
df = pd.DataFrame({'x1': [0, 1, 2, 3, 4],
'x2': [10, 9, 8, 7, 6],
'x3': [.1, .1, .2, 4, 8],
'y': [17, 18, 19, 20, 21]})
现在我使用公式拟合 statsmodels 模型(在引擎盖下使用 patsy):
import statsmodels.formula.api as smf
fit = smf.ols(formula='y ~ x1:x2', data=df).fit()
我想要的是fit 所依赖的df 的列列表,以便我可以在另一个数据集上使用fit.predict()。例如,如果我尝试list(fit.params.index),我会得到:
['Intercept', 'x1:x2']
我尝试重新创建 patsy 设计矩阵,并使用 design_info,但我仍然只能得到 x1:x2。我想要的是:
['x1', 'x2']
甚至:
['Intercept', 'x1', 'x2']
我怎样才能从 fit 对象中得到这个?
【问题讨论】:
-
为什么不直接将
'x1:x2'拆分为':',那么,如果您只是在交互x1和x2?像fit.model.formula.split(':')这样的东西,然后适当地过滤掉其余的东西。地狱,正则表达式拆分会更好,处理+、:等。 -
@bwk 你在这个问题上有什么进展吗?看看我的回答,应该符合你的需求。
标签: python pandas statsmodels patsy