为什么在使用statsmodels logit函数时我获得了p值的NAN?

问题描述 投票:1回答:1

My data

我使用statsmodels构建逻辑回归,如下所示:

        X = np.copy(train_data)
        X = sm_.add_constant(X)

        model = sm.Logit(train_y, X)

        result = model.fit(method='bfgs', maxiter=10000)

        p_values[i-1, j-1, :] = result.pvalues
        logistic_Coefficients[i-1, j-1, :] = result.params

但我得到以下错误,我的p值都是NAN:

C:\Users\maryamr\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\statsmodels\base\model.py:488: HessianInversionWarning: Inverting hessian failed, no bse or cov_params available
  'available', HessianInversionWarning)
C:\Users\maryamr\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\scipy\stats\_distn_infrastructure.py:879: RuntimeWarning: invalid value encountered in greater
  return (self.a < x) & (x < self.b)
C:\Users\maryamr\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\scipy\stats\_distn_infrastructure.py:879: RuntimeWarning: invalid value encountered in less
  return (self.a < x) & (x < self.b)
C:\Users\maryamr\AppData\Local\Continuum\anaconda3\envs\tensorflow\lib\site-packages\scipy\stats\_distn_infrastructure.py:1821: RuntimeWarning: invalid value encountered in less_equal
  cond2 = cond0 & (x <= self.a)

我也尝试过gl中的gl,但我没有得到任何错误,只有其中一个功能有NAN系数和p值。

python-3.x statsmodels mlogit
1个回答
1
投票

基于您收到的第一个错误(“反转Hessian失败”),这是由于Statsmodels逻辑模型无法找到对数似然函数的最大值,随后为您的数据和依赖变量和独立变量集找到解决方案正在使用。

查看您的数据,您有很多0和相同的值,这可能会有助于找到解决方案。但由于看起来你在R中获得了收敛,你可以尝试改变模型的一些Statsmodels参数,看它是否有帮助(或者首先尝试找出R的glm包使用的参数,并用Statsmodels复制它们)。

例如,logit.fit方法允许您选择八种不同的预定义优化方法之一。其他人推荐'nm'(Nelder-Mead)用于此类情况。

您可以在这里找到Statsmodels Logit文档:http://www.statsmodels.org/devel/generated/statsmodels.discrete.discrete_model.Logit.fit.html

您也可以在Cross Validated网站上发布此问题,因为您可能会在那里得到更多回复。

© www.soinside.com 2019 - 2024. All rights reserved.