使用R和Python获得不同的Logistic回归结果

时间:2018-10-10 14:49:40

标签: python r scikit-learn logistic-regression glm

在R中运行逻辑回归与在Python上对相同数据运行逻辑回归时,得到的结果完全不同。截距和系数互不相同

我在here上看到了同样的问题,但是解决方案是对于给定的数据集,X和Y变量表现出完美的分隔,但是在我自己的数据中没有完美的分隔。

这是R中可重复的示例:

x_examp <- c(1,4,7,9,13,17,22,25,29,30,35,40,44,47,50)
y_examp <- c(1,1,1,1,0,1,0,0,1,0,0,0,0,0,0)
mod = glm(y_examp ~ x_examp, family = 'binomial')
summary(mod)

给出这些系数(估计值):

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  3.15324    1.75197   1.800   0.0719 .
x_examp     -0.16534    0.07996  -2.068   0.0387 *

这是Python中使用相同数据的逻辑回归:

x_examp = np.array([1,4,7,9,13,17,22,25,29,30,35,40,44,47,50])
x_examp = x_examp.reshape(-1, 1)
y_examp = np.array([1,1,1,1,0,1,0,0,1,0,0,0,0,0,0])

from sklearn.linear_model import LogisticRegression

LR = LogisticRegression()
LR.fit(x_examp, y_examp)

print('intercept:', LR.intercept_)
print('coefficient:', LR.coef_[0])

返回:

intercept: [ 1.11232593]
coefficient: [-0.08579351]

鉴于标准误差是使用预测值计算的,而预测值又取决于系数,因此标准误差将与R中计算的误差不同,并且z统计量和相应的概率也将不同。 / p>

显然结果是非常不同的,有谁知道为什么会这样,哪个是正确的?

0 个答案:

没有答案