这是this older SO question的扩展,但是对于python而不是R.我也认为这个解决方案并不是最好的。
假设我的数据看起来像这样......
State Y
AL 5
AK 10
AZ 8
我想编写一个patsy公式来将State转换为Region,然后使用statsmodels使用Region进行预测。所以表格看起来像......
State Region Y
AL Southeast 5
AK Northwest 10
AZ Southwest 8
我希望有一个功能
model = sm.OLS('Y ~ C(State, StateToRegionGrouping)').fit()
我认为有两种方法。首先,在原始数据上添加一个查找列,或者为patsy编写一个分类变换器函数来处理。
哪种方式更好,如果patsy分类变换器更好,有什么好的方法来编程呢?
答案 0 :(得分:1)
保持简单,只需使用字典映射:
import statsmodels.formula.api as smf
mapping = {'AL': 'Southeast',
'AK': 'Northwest',
'AZ': 'Southwest'}
df = pd.DataFrame({'State': ['AL', 'AK', 'AZ'], 'Y': [5, 10, 8]})
df['Region'] = df.State.map(mapping)
>>> df
State Y Region
0 AL 5 Southeast
1 AK 10 Northwest
2 AZ 8 Southwest
model = smf.ols('Y ~ Region', data=df).fit()