我一直在SAS中运行一些大型逻辑回归模型,这些模型需要4个多小时才能收敛。但是最近,我获得了对Hadoop集群的访问权限,并且可以使用Python更快地拟合相同的模型(大约10到15分钟)。
问题是,我的数据中的数据点有一些完全/准完全的分离,导致无法收敛;尽管如此,我还是在SAS中使用FIRTH命令来生成可靠的参数估计值,但是在sklearn或statsmodels中,Python似乎没有等效的选项(我主要使用后者)。
还有另一种方法可以解决Python中的这个问题吗?
答案 0 :(得分:0)
AFAIK,Python中没有Firth惩罚。 Statsmodels有一个未解决的问题,但目前尚无人在研究。
作为替代,可以使用其他类型的惩罚,例如如sklearn或statsmodels中可用。
另一个选择是更改观察到的响应变量。可以通过扩展数据集来实现广度。但是,我不知道在Python中有任何配方或原型。
https://github.com/statsmodels/statsmodels/issues/3561
Statsmodels正在进行惩罚方面的工作,但目前的重点是针对通用加性模型GAM(尤其是样条)的特征/变量选择(弹性网,SCAD)和二次惩罚。
Firth使用数据相关的惩罚,这不适用于惩罚结构是数据独立的“先验”的通用惩罚框架。
答案 1 :(得分:0)
条件似然是解决完美分离的另一种方法。这在基本上可以使用的Statsmodels PR中: