假設我有一個pandas
數據幀:如何獲取statsmodels/patsy公式所依賴的列?
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]})
現在我適合使用公式(使用patsy
引擎蓋下)一個statsmodels
模式:
import statsmodels.formula.api as smf
fit = smf.ols(formula='y ~ x1:x2', data=df).fit()
我要的是列的列表df
即fit
依賴於,以便我可以在另一個數據集上使用fit.predict()
。如果我嘗試list(fit.params.index)
,例如,我得到:
['Intercept', 'x1:x2']
我試圖重現帕齊設計矩陣,並使用design_info
,但我仍然只能永遠得到x1:x2
。我要的是:
['x1', 'x2']
甚至:
['Intercept', 'x1', 'x2']
我怎樣才能得到這正好從fit
對象?
爲什麼不把'':'x1:x2'分開到'':'',然後,如果你只是在交互'x1'和'x2'?就像'fit.model.formula.split(':')',然後適當地過濾掉其餘部分。地獄,正則表達式分裂會更好,處理'+',''''等。 – blacksite
@bwk你有沒有在這個問題上取得任何進展?看看我的答案,它應該適合你的需求。 –