在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>
显然结果是非常不同的,有谁知道为什么会这样,哪个是正确的?