分类变量面板 ols

categorical variable panel ols

对于我的 PanelOLS,我喜欢包括分类变量。 这是我的模型:

import statsmodels.api as sm

exog_vars = ['x1', 'x2', 'x3']
exog = sm.add_constant(df[exog_vars])
mod = PanelOLS(df.y, exog, entity_effects=True, time_effects=True)
result = mod.fit(cov_type='clustered', cluster_entity=True)

类别变量是一个行业的数字。这个数字存储在我的数据框中(df['x4'])。 你知道如何包含分类变量吗?或者您需要更多信息来回答问题。

我的数据框:

我试过了:

df['x4'] = pd.Categorical(gesamt.x4)

mod = PanelOLS(gesamt.CAR, exog, other_effects=df['x4'], entity_effects=True, time_effects=True)

出现以下错误:

raise ValueError('At most two effects supported.')

ValueError: At most two effects supported.

最简单的方法可能是对您的列进行单热编码 x4

如果你有

df = pd.DataFrame({'x1': [1,2,3], 'x4': ['bob', 'cat' ,'cat']})
df

看起来像

   x1   x4
0   1  bob
1   2  cat
2   3  cat

然后

pd.get_dummies(df, 'x4')

给你

   x1  x4_bob  x4_cat
0   1       1       0
1   2       0       1
2   3       0       1

或者,

df['x4'] = pd.Categorical(df.x4).codes
df

会给你

   x1  x4
0   1   0
1   2   1
2   3   1