使用Python线性模型的固定效果模型

使用Python线性模型的固定效果模型,python,regression,linearmodels,Python,Regression,Linearmodels,对于使用linearmodels PanelOLS的多索引要求,我有点困惑。我正在尝试创建表单的模型 y=pidi+ridj+eij 其中e是误差项。 我的数据基本上如下所示: 在这种情况下,我基本上希望得到6个系数:p1,p2,p3,r1,r2,r3 设置: import pandas as pd df = pd.DataFrame() df['pid'] = [1,1,1,2,2,2,3,3,3] df['rid'] = [1,2,3,1,2,3,1,2,3] df['y'] = [100

对于使用linearmodels PanelOLS的多索引要求,我有点困惑。我正在尝试创建表单的模型 y=pidi+ridj+eij 其中e是误差项。 我的数据基本上如下所示:

在这种情况下,我基本上希望得到6个系数:p1,p2,p3,r1,r2,r3

设置:

import pandas as pd
df = pd.DataFrame()
df['pid'] = [1,1,1,2,2,2,3,3,3]
df['rid'] = [1,2,3,1,2,3,1,2,3]
df['y'] = [100,102,101,98,96,101,101,100,103]
尝试使用此选项:

from linearmodels.panel import PanelOLS
mod = PanelOLS(df.y, df[['pid','rid']], entity_effects=True)
res = mod.fit(cov_type='clustered', cluster_entity=True)
这给出了一个错误,说我需要一个2级多索引。我不确定这应该包括什么,所以非常感谢您的帮助


我尝试过将其更改为正常线性回归的方法,通过交叉制表符将数组设置为6个字段,并将值设置为1和0,但我的实际数据集有5000个p值和1000个r值。

嗨,Daniel,您只需通过在代码中添加以下行来创建适当的多索引:

import pandas as pd
df = pd.DataFrame()
df['pid'] = [1,1,1,2,2,2,3,3,3]
df['rid'] = [1,2,3,1,2,3,1,2,3]
df['y'] = [100,102,101,98,96,101,101,100,103]

df['individual'] = ['a','a','a','b','b','b','c','c','c']
df['time'] = [10,11,12,10,11,12,10,11,12]
df = df.set_index(['individual','time'])


from linearmodels.panel import PanelOLS
mod = PanelOLS(df.y, df[['pid','rid']], entity_effects=False)
res = mod.fit(cov_type='clustered', cluster_entity=True)
print(res.params)

pid    22.756410
rid    23.589744
Name: parameter, dtype: float64

这是因为面板的变量有多个索引X_it来识别它。

我有类似的困惑,但是,我想你可以试试:mod=PanelOLSdf.y,df['rid'],entity_effects=True,然后df['pid']不确定这是否正确,我在这里进行头脑风暴。