【问题标题】:Perfect Separation on linear model线性模型上的完美分离
【发布时间】:2020-01-25 05:27:34
【问题描述】:

在运行逻辑回归时,这里有很多关于 statsmodels 中的"Perfect Separation Error" 的帖子。但我不是在做逻辑回归。我正在使用频率权重和高斯分布进行 GLM。所以基本上是 OLS。

我所有的自变量都是分类的,有很多类别。如此高维的二进制编码特征集。

但我经常从 statsmodels 中得到“perfectseperationerror”

我正在运行许多模型。我认为当我的数据对于这么多变量来说太薄时,我会收到此错误。但是,理论上,使用频率权重,我实际上拥有比数据框更多的特征,因为观察值应该乘以频率。

关于如何进行的任何指导?

reg = sm.GLM(dep, Indies, freq_weights = freq)


<p>Error: class 'statsmodels.tools.sm_exceptions.PerfectSeparationError'>

【问题讨论】:

    标签: python-3.x statsmodels glm


    【解决方案1】:

    检查是关于完美预测的,并且独立于家庭使用。

    目前,使用irls 时有解决方法。使用 scipy 优化器,例如method="bfgs",避免完美的预测/分离检查。

    https://github.com/statsmodels/statsmodels/issues/2680

    完美分离仅针对二元情况定义,即 GLM 中的家庭二项式,并且可以扩展到其他离散模型。

    但是,如果残差为零,推理可能会出现其他问题,即我们有一个完美的拟合。
    这是 OLS 中完美预测的问题 https://github.com/statsmodels/statsmodels/issues/1459

    【讨论】:

    • 任何受支持的 scipy 优化器都应该工作并避免 irls。可能有必要使用max_start_irls=0 来避免使用 irls 为使用 scipy 优化器的非线性优化找到好的起始值。
    • 是的,没错。仅将方法设置为 scipy 时,我仍然遇到分离错误,但是一旦我也将 max_start 更改为其他东西,它就可以工作了。
    • 对于我的特殊用例,这似乎是一个容易修复的错误。因为我使用的是 freq_weights statsmodels 应该在它的过程中使用 freq_weights 来决定是否抛出这个错误。当考虑我的 freq_weights 时,我实际上有比我拥有的特征更多的观察结果。
    猜你喜欢
    • 2015-10-21
    • 2018-07-24
    • 2021-04-16
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2020-11-13
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多