Python中的面板probit

Python中的面板probit,python,panel,panel-data,Python,Panel,Panel Data,我的数据集(“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

我的数据集(“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估算一个面板probit模型(y是我的左侧变量,x1、x2、x3是右侧变量)。Panel实体应该是id,它们位于数据帧索引的第一部分(100200等)。据我所知,我需要一个类似于Stata的“xtprobit”的Python函数

我想出的唯一办法是:

mod=PanelOLS(prob.dummy,prob['x1','x2','x3']],entity_effects=True)
res=mod.fit(cov_type='clustered',cluster_entity=True)
打印(res)

这是面板probit型号吗

输出看起来与probit模型不同(通过statsmodels的“sm.probit”函数接收),我不知道如何估计probit边际效应。或者,我应该修改“sm.Probit”使其成为面板Probit?(现在我只知道如何以“时间序列”的方式仅对一个实体使用它)

一些背景:

面板数据模型的行为取决于我们是否在实体或组n_i(长面板)中有大量观察值,还是在组(宽面板)中有大量的g_组和少量观察值

statsmodels主要使用术语
来指代实体

模型的渐近行为取决于所有n_i是否变大,或者n_i是否保持小且组数是否变大。此外,不同估计器的实现针对两种情况中的任何一种

在长面板的情况下,我们可以使用标准估计器,并且使用每组的固定效应可以一致地进行估计

因此,在这种情况下,我们可以为组或实体效果使用虚拟变量,例如,使用公式界面使用patsy自动创建实体效果,
data
是一个数据帧或类似dict的对象,变量名为键

mod=probit('y~x1+x2+x3+C(组id)),数据)

Patsy为
C(组id)
创建固定效果假人。如果包含一个常量(默认情况下是这样),那么将删除一个参考级别以避免“虚拟变量陷阱”

长面板和宽面板之间的类似区别适用于对组内相关性稳健的标准误差

cov_type='cluster'
假设我们有宽面板案例,即大量实体,每个实体只有少量观察结果。计算假设实体或簇的数量大于簇中的观测数量IIRC

对于实体内具有序列相关性的长面板,我们可以在实体内使用HAC cov_类型。在这种情况下,statsmodels具有cov_类型“hac面板”和“hac组和”

statsmodels仍然没有一个中心位置来记录三明治cov_类型,但在支持它的模型中是相同的。此处提供了可用的cov_类型和所需的附加信息:


对于宽面板,statsmodels中提供的主要型号是GEE。最近添加了一个贝叶斯混合LM。目前还没有可用的frequentist MixedLM模型,唯一可用的是线性高斯混合LM。

每个面板实体有多少观测值?问题在于,在短面板中,实体固定效应无法得到一致的估计。“真实生活”中的单位是什么,具体来说是实体内部的相关性,而不是实体之间的相关性?对于32个实体,我有23028个观察值,对于其他7个,最少有14264个。请你告诉我,我如何检查实体内部和实体之间的相关性,我认为这确实是一个好主意!约瑟夫,谢谢!从你令人惊讶的描述中我了解到:我的案例是一个“长”面板,几乎没有实体(但每个实体有许多OB)。因此,我将“cov_类型”从“集群”更改为“HAC”。请你解释一下,帕特西的公式到底是做什么的?它是否为每个实体创建虚拟对象?还是评估小组?公式中的“数据”是带有变量的数据框吗?当我在IPython控制台中写入:mod=probit('y~x1+x2+x3+C(id),df)->我在扫描字符串文字时得到:SyntaxError:EOL-您能指出是什么问题吗?我输入了一个错误,您在
C(id)
df是包含数据的数据帧之后缺少结束引号。probit来自statsmodels.formula.api,与probit相同。从_formula`HAC假设有一个时间序列,您需要“HAC panel”或“HAC groupsum”,它们本质上是每个组中的HAC。约瑟夫,当我运行patsy formula时,我收到一个错误:“如果len(endog)=1:#从不压缩到标量-->>类型错误:未大小对象的len. 当我检查Y和每个X的len()时,它们都不是1。你能建议一下是什么导致了这个问题吗?检查一些公式界面的例子。小写字母
probit
statsmodels.formula.api
sm.probit.from_formula
的别名,例如,您可以使用
mod=sm.probit.from_formula('dummy~x1+x2+C(group_id'),df)