gpt4 book ai didi

python - python 与 R 中的 glm

转载 作者:太空狗 更新时间:2023-10-30 02:15:54 24 4
gpt4 key购买 nike

我有一些数据集:泰坦尼克号

在 R 中这样做

glm(Survived ~ Sex, titanic, family = "binomial")

我明白了

(Intercept)     SexMale 
1.124321 -2.477825

R 将幸存 视为积极结果。

但是当我在 Python 中做同样的事情时

sm.formula.glm("Survived ~ Sex", family=sm.families.Binomial(), data=titanic).fit()

我得到负面结果:即 Python 将 not survived 作为正面结果。

如何调整 Python 的 glm 函数行为,使其返回与 R 相同的结果?

最佳答案

您只需要将您的引用组设置为男性或女性(取决于您感兴趣的内容):

使用 R 中的小型测试数据集,代码和模型摘要如下所示:

df <- data.frame(c(0,0,1,1,0), c("Male", "Female", "Female", "Male", "Male"))
colnames(df) <- c("Survived", "Sex")

model <- glm(Survived ~ Sex, data=df, family="binomial")
summary(model)

输出:

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.084e-16 1.414e+00 0.000 1.000
SexMale -6.931e-01 1.871e+00 -0.371 0.711

要在 Python/statsmodels 中获得类似的东西:

import pandas as pd
import statsmodels.api as sm

df = pd.DataFrame({"Survived": [0,0,1,1,0],
"Sex": ["Male", "Female", "Female", "Male", "Male"]})

model = sm.formula.glm("Survived ~ C(Sex, Treatment(reference='Female'))",
family=sm.families.Binomial(), data=df).fit()
print(model.summary())

将给出:

                                                    coef    std err          z      P>|z|      [0.025      0.975]
-----------------------------------------------------------------------------------------------------------------
Intercept 5.551e-16 1.414 3.93e-16 1.000 -2.772 2.772
C(Sex, Treatment(reference='Female'))[T.Male] -0.6931 1.871 -0.371 0.711 -4.360 2.974

注意使用 Treatment() 来设置引用组。在这种情况下,我将其设置为 Female 以匹配 R 输出,但对于您的数据集,使用 Male 可能更有意义。无论哪种方式,这只是一个明确使用哪个组作为引用的问题。

关于python - python 与 R 中的 glm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47551557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com