Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用统计软件包对数百个协变量进行最大似然估计的方法_Python_Optimization_Statistics_Statsmodels_Singular - Fatal编程技术网

Python 使用统计软件包对数百个协变量进行最大似然估计的方法

Python 使用统计软件包对数百个协变量进行最大似然估计的方法,python,optimization,statistics,statsmodels,singular,Python,Optimization,Statistics,Statsmodels,Singular,我试图研究大量协变量p和高维区域(即样本量为n的p/n约为1/5)的最大似然估计的分布。我正在生成数据,然后使用statsmodels.api.Logit使参数适合我的模型 问题是,这似乎只适用于低维区域(如300个协变量和40000个观测值)。具体地说,我得到迭代次数已达到最大值,对数似然为inf,即已发散,以及“奇异矩阵”误差 我不知道该如何补救。最初,当我还在处理较小的值(比如80个协变量,4000个观察值)时,我偶尔会遇到这个错误,我将最大迭代次数设置为70次,而不是35次。这似乎有帮助

我试图研究大量协变量p和高维区域(即样本量为n的p/n约为1/5)的最大似然估计的分布。我正在生成数据,然后使用
statsmodels.api.Logit
使参数适合我的模型

问题是,这似乎只适用于低维区域(如300个协变量和40000个观测值)。具体地说,我得到迭代次数已达到最大值,对数似然为inf,即已发散,以及“奇异矩阵”误差

我不知道该如何补救。最初,当我还在处理较小的值(比如80个协变量,4000个观察值)时,我偶尔会遇到这个错误,我将最大迭代次数设置为70次,而不是35次。这似乎有帮助

然而,这显然不会有帮助,因为我的对数似然函数正在发散。这不仅仅是迭代次数不收敛的问题

很容易回答,这些软件包根本不打算处理这些数字,但是有一些论文专门研究这种高维状态,比如说使用了
p=800
协变量和
n=4000
观察值

诚然,本文使用的是R而不是python。不幸的是,我不知道R。但是我应该认为python优化应该具有可比的“质量”

我的问题是:

与python statsmodels相比,R是否更适合在这种高p/n模式下处理数据?如果是这样,为什么可以使用R的技术来修改python statsmodels代码?


我如何修改我的代码,使其适用于p=800和n=4000左右的数字?

在您当前使用的代码中(从几个其他问题中),您隐式使用了牛顿-拉斐逊方法。这是
sm.Logit
模型的默认值。它计算并反转Hessian矩阵以加快估计速度,但这对于大型矩阵来说是非常昂贵的——更不用说当矩阵接近奇异时会导致数值不稳定,正如您已经看到的那样。相关维基百科对此进行了简要解释

您可以通过使用不同的解算器来解决此问题,例如
bfgs
(或
lbfgs
),如下所示

model = sm.Logit(y, X)
result = model.fit(method='bfgs')
即使使用
n=10000,p=2000
,这对我来说也运行得非常好


除了估计之外,更麻烦的是,生成样本的代码会导致数据具有很大程度的准可分性,在这种情况下,整个MLE方法充其量是有问题的。您应该立即对此进行调查,因为这表明您的数据可能没有您希望的那么好。准可分离性得到了很好的解释。

这个问题需要代码和数据(或生成一些数据的方法)。话虽如此,我记得你几天前提出的一个类似问题。你的主要目标是什么?这是对通过逻辑回归获得的最大似然估计的渐近行为的好奇,还是你对这么多数据有一个具体的研究问题,你认为逻辑回归可能是解决这个问题的方法吗?@N.Wouda这确实只是对逻辑回归渐近行为的研究。我问过类似的问题,但没有一个是相同的。以前,我甚至不确定哪种包最适合用于最大似然估计。你的帖子对此很有帮助。但现在我意识到,statsmodels软件包似乎无法在我感兴趣的领域获得MLE(大量的协变量,少量的观察)。然而,我意识到不同的软件包工作非常不同。有些人有内在的正规化,这在我的研究中是不好的。statsmodels似乎不具备这一点,但它无法获得大维度数据的估计值。我尝试过修改逻辑回归模块中的代码,但没有效果。然而,有一些论文已经在这种情况下进行了模拟,所以t必须可以用一些软件包进行探索。。。除非他们只是试着运行了很多次,并且幸运地得到了现在,我只是想弄清楚如何让计算工具工作(我的薄弱部分),这样我就可以将理论(我的强大部分)与模拟进行比较。太棒了!bfgs确实工作得很好,我真的很感兴趣地看到它给了我一个更大的估计方差——就像我读过的论文一样。我将尝试找出原因:)