分类变量面板 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
对于我的 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