Sie müssen nur auf Ihre Referenzgruppe gesetzt entweder männlich oder weiblich (je nachdem, was Sie interessiert sind):
Mit einem kleinen Testdatensatzes in R, der Code und Modell Zusammenfassung sieht wie folgt aus:
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)
Ausgang:
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
Um etwas ähnliches in Python/statsmodels zu erhalten:
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())
Welche geben:
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
Beachten Sie die Verwendung von Treatment()
die Referenzgruppe zu setzen. Ich habe es auf Female
in diesem Fall eingestellt, um die R-Ausgabe zu entsprechen, aber mit Ihrem Dataset könnte es sinnvoller sein, Male
zu verwenden. Wie auch immer, es ist nur eine Frage der expliziten Angabe, welche Gruppe als Referenz verwendet wird.
Ich bezweifle, dass 'sm.formula.glm' im Basis-Python verfügbar ist. Bitte listen Sie alle Module/Pakete auf, die Sie im Hauptteil Ihrer Frage verwenden, oder fügen Sie das entsprechende Tag hinzu. – lmo
'import numpy als np' ' importiere pandas als pd' 'import statsmodels.api as sm' – user2528473