Stat5: Lösung 2

Veröffentlichungsdatum

13. November 2023

Musterlösung Übung 5.2: GLMM

Kommentierter Lösungsweg

# lade datei
df <- read_delim("datasets/stat5-8/Datensatz_novanimal_Uebung_Statistik5.2.csv", ";")

# sieht euch die Verteilung zwischen Fleisch und  kein Fleisch an,
# beide Kategorien kommen nicht gleich häufig vor, ist aber nicht tragisch
prop.table(table(df$meat)) # gibt die Prozente an

        0         1 
0.3959218 0.6040782 
table(df$meat) # gibt die absoluten Werte an

    0     1 
 7087 10813 
# definiert das logistische Modell mit ccrs als random intercept und
# wendet es auf den Datensatz an

# Exkurs für Neugierige
# check out ICC: https://www.datanovia.com/en/lessons/intraclass-correlation-coefficient-in-r/
# attention: however data needs to be wide format

# dauert ein paar Sekunden
mod0 <- glmer(meat ~ gender + member + age_group + (1 | ccrs),
  data = df, binomial("logit")
)

# lasst euch das Modell anzeigen: sieht so aus, als ob v.a. Geschlecht eine
# Rolle spielt
# Wahrnmeldung kann vernachlässigt werden (aufgrund der unicode resp.
# Umlaute in den Variablen)
summary(mod0)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: binomial  ( logit )
Formula: meat ~ gender + member + age_group + (1 | ccrs)
   Data: df

     AIC      BIC   logLik deviance df.resid 
 21124.3  21178.8 -10555.1  21110.3    17893 

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-3.8652 -0.7267  0.4335  0.6449  3.4115 

Random effects:
 Groups Name        Variance Std.Dev.
 ccrs   (Intercept) 1.487    1.219   
Number of obs: 17900, groups:  ccrs, 1427

Fixed effects:
                          Estimate Std. Error z value Pr(>|z|)    
(Intercept)               -0.12569    0.14484  -0.868   0.3855    
genderM                    0.94466    0.08386  11.265   <2e-16 ***
memberStudierende         -0.17822    0.12655  -1.408   0.1591    
age_group26 bis 34-jährig -0.16855    0.10175  -1.657   0.0976 .  
age_group35 bis 49-jährig -0.02040    0.15634  -0.131   0.8962    
age_group50 bis 64-jährig  0.09752    0.20159   0.484   0.6286    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Correlation of Fixed Effects:
            (Intr) gendrM mmbrSt a_26b3 a_35b4
genderM     -0.337                            
membrStdrnd -0.834 -0.023                     
ag_gr26b34- -0.537 -0.025  0.349              
ag_gr35b49- -0.737  0.043  0.662  0.463       
ag_gr50b64- -0.637  0.018  0.597  0.389  0.515
## erste Interpretation: Geschlecht (Referenzkategorie: Mann) und Alter (Referenzkategorie: junge Personen) scheinen den Fleischkonsum positiv zu beeinflussen + Hochschulzugehörigkeit spielt keien Rolle
# d.h. könnte man vernachlässigen. Ich lasse aus inhaltlichen Gründen aber im Modell drin

# Pseudo R^2
library("MuMIn")
r.squaredGLMM(mod0)
                   R2m       R2c
theoretical 0.04069363 0.3392838
delta       0.03537645 0.2949517
# das marginale R^2 (r2m) gibt uns die erklärte Varianz der fixen Effekte: hier 4% (das ist sehr wenig)
# das conditionale R^2 (r2c) gibt uns die erklärte Varianz für das ganze Modell
# (mit fixen und variablen Effekten): hier 29% (ganz ok, aber auch nicht sehr hoch)
# für weitere Informationen: https://rdrr.io/cran/MuMIn/man/r.squaredGLMM.html

# zusätzliche Informationen, welche für die Interpretation gut sein kann
# berechnet den Standardfehler (mehr infos: https://www.youtube.com/watch?v=r-txC-dpI-E oder hier: https://mgimond.github.io/Stats-in-R/CI.html)
# weitere info: https://stats.stackexchange.com/questions/26650/how-do-i-reference-a-regression-models-coefficients-standard-errors
se <- sqrt(diag(vcov(mod0)))

# zeigt eine Tabelle der Schätzer mit 95% Konfidenzintervall (KI)
# => Faustregel: falls 0 im KI enthalten ist, dann ist der Unterschied statistisch NICHT signifikant
tab1 <- cbind(
  Est = fixef(mod0), LL = fixef(mod0) - 1.96 * se,
  UL = fixef(mod0) + 1.96 * se
)

# erzeugt die Odds Ratios
tab2 <- exp(tab1)

Methoden

Die Responsevariable “Fleischkonsum” ist eine binäre Variable. Demnach wird eine multiple logistische Regression mit den Prädiktoren “Alter (Gruppen)”, “Geschlecht” und “Hochschulzugehörigkeit” gerechnet. Da in den Daten gewisse Individuen mehrmals vorkommen, wird das Individuum (Variable ccrs) als variabler Effekt in das Modell aufgenommen.

Ergebnisse

Das Geschlecht und das Alter nehmen einen signifikanten Einfluss auf den Fleischkonsum (siehe Table 1): Männer kaufen signifikant häufiger ein fleischhaltiges Gericht als Frauen; junge Personen (15 bis 25-jährig) kaufen signifikant häufiger ein fleischhaltiges Gericht in der Mensa. Es sieht so aus, als ob die Hochschulzugehörigkeit auf den ersten Blick keinen Einfluss nimmt. Aber man müsste auch die Interaktion zwischen Geschlecht und Hochschulzugehörigkeit berücksichtigen, um ein abschliessendes Bild zu bekommen. Das kleine marginale Pseudo-R^2 zeigt auf, dass es nicht das “beste” Modell ist. Insbesondere die tiefe Varianzaufklärung für die randomisierte Variable (r2c; ccrs) scheint mit (nur) 4% sehr gering. Das sind Hinweise dafür, dass im Modell gegebenenfalls noch weitere Faktoren miteinbezogen werden müssten (z.B. Standort Mensa).

Modellschätzer (Coefficients) mit dazugehörigem 95% Konfidenzintervall
Coefficients Lower Limit (LL) Uppewr Limit (UL)
Intercept -0.13 -0.41 0.16
Männer 0.94 0.78 1.11
Mitarbeitende -0.18 -0.43 0.07
26 bis 34-jährig -0.17 -0.37 0.03
35 bis 49-jährig -0.02 -0.33 0.29
50 bis 64-jährig 0.10 -0.30 0.49

Die Chance, dass Männer ein fleischhaltiges Gericht kaufen ist 2.57mal (+157%) höher als bei Frauen (siehe Table 2). Die Chance, dass 26 bis 34-jährige Personen ein fleischhaltiges Gericht kaufen ist kleiner (-16%) als bei den 15 bis 25-jährigen Personen.

Odds Ratio (OR) mit dazugehörigem 95% Konfidenzintervall
OR Lower Limit (LL) Uppewr Limit (UL)
Intercept 0.88 0.66 1.17
Männer 2.57 2.18 3.03
Mitarbeitende 0.84 0.65 1.07
26 bis 34-jährig 0.84 0.69 1.03
35 bis 49-jährig 0.98 0.72 1.33
50 bis 64-jährig 1.10 0.74 1.64