Python的Statsmodels glm抛出PerfectSeparationError,R返回结果

时间:2018-12-05 14:58:50

标签: python r statsmodels glm

我试图将一些原型R代码移植到Python中,并且在R中的stats :: glm映射中遇到问题。第一个测试集在R中返回了合理的外观值,但在python中失败了。

Python代码:

tar -zcvf target.tar.gz target/ --exclude="target/backups" --exclude="target/cache"

R代码

import numpy
import pandas
from statsmodels.formula.api import glm
from statsmodels.api import families
from statsmodels.genmod.families.links import logit

my_data = pandas.DataFrame({
    'success': [1, 0, 1, 1, 0, 0, 1, 1, 0, 1],
    'col_a': [5000.0, 10000.0, 11000, 20000.0, 20000.0, 25000.0, 30000.0, 30000.0, 40000.0, 41000.0],
    'col_b': ['a', 'a', 'b', 'b', None, 'b', 'c', 'c', None, 'd'],
    'col_c': [5487.0, 5654, numpy.NaN, 2918.0, 912.0, numpy.NaN, 1236.0, 234.0, 2390.0, 21092.0],
})
formula = 'success ~ col_a + col_b + col_c'

result = glm(formula, family=families.Binomial(link=logit), data=my_data, missing='drop').fit()

# Throws statsmodels.tools.sm_exceptions.PerfectSeparationError:
#    Perfect separation detected, results not available

在阅读其他StackOverflow帖子时,典型的问题是只有一个值的成功变量,或者是一个完美捕捉成功变量的单个预测变量。但是,至少通过此处没有的人工检查(R并未指出)。我想知道Python和R之间是否存在一些隐藏的默认值不同,但是粗略的分析未发现任何默认值。

0 个答案:

没有答案