我的数据集(“prob”)是一个不平衡的面板,如下所示:
index x1 x2 x3 y (dummy 0/1)
(100, Timestamp('2016-01-26 09:10:00')) 19.9 13.44 -0.006 0
(100, Timestamp('2016-01-26 09:15:00')) 17.2 13.25 -0.046 0
(200, Timestamp('2016-01-26 09:20:00')) 19.4 19.06 0.04 1
我想估计Python中的面板概率模型(y是我的左侧变量,x1,x2,x3是右侧变量)。面板实体应该是ID,它们位于数据框索引的第一部分(100,200等)据我所知,我需要一个类似于Stata的“xtprobit”的Python函数。 / p>
我想出的唯一方法是:
mod = PanelOLS(prob.dummy,prob [['x1','x2','x3']],entity_effects = True)
res = mod.fit(cov_type ='clustered',cluster_entity = True)
打印(RES)
这是面板概率模型吗?
输出看起来与probit模型的输出不同(通过 statsmodels 的“sm.Probit”函数接收),我不知道如何估计概率边缘效应。或者,我应该以某种方式修改“sm.Probit”以使其成为面板概率? (现在我只知道如何以“时间序列”的方式为一个实体使用它)。
答案 0 :(得分:1)
一些背景知识:
面板数据模型的行为取决于我们是否在实体或组n_i(长面板)中有大量观察结果,或者我们是否有大量的g_groups在组内具有少量观察结果(宽面板)。
statsmodels主要使用术语infixr 0 `k`
来引用实体。
模型的渐近行为取决于是否所有n_i变大,或者n_i是否保持较小并且组的数量变大。此外,不同估算器的实现针对两种情况中的任何一种。
对于长面板,我们可以使用标准估算器,并且可以持续估计每组的固定效果。
因此,在这种情况下,我们可以使用虚拟变量来实现组或实体效果,例如使用公式界面使用patsy自动创建实体效果,其中groups
是pandas DataFrame或dict类似于具有变量的对象名称为键。
data
Patsy为mod = probit('y ~ x1 + x2 + x3 + C(group_id)', data)
创建固定效果假人。如果包含常量(默认情况下),则将丢弃一个参考级别以避免“虚拟变量陷阱”。
长面板和宽面板之间的类似区别适用于对组内相关性具有鲁棒性的标准误差。
C(group_id)
假设我们有广泛的小组案例,即大量实体,每个实体只有少数观察。计算假设实体或集群的数量大于集群中的观察数量,IIRC。
对于在实体内具有序列相关性的长面板,我们可以在实体中使用HAC cov_type。对于这种情况,statsmodels有cov_types“hac-panel”和“hac-groupsum”可用。
statsmodels仍然没有中心位置来记录三明治cov_types,但它在支持它的模型中是相同的。此处提供了可用的cov_types和所需的其他信息:
对于宽面板,statsmodels中可用的主要模型是GEE。最近增加了贝叶斯混合GLM。目前还没有频繁使用的MixedGLM模型,唯一可用的是线性Gaussian MixedLM。