Wie interpretiere ich Regressionsoutput binärer Variablen?

Alle Verfahren der Regressionanalyse.

Wie interpretiere ich Regressionsoutput binärer Variablen?

Beitragvon lope » Sa 12. Mär 2022, 00:51

Hallo zusammen,

ich versuche mich erstmalig an einem kleinen Datenprojekt, auch um Kenntnisse für die baldige Bachelorarbeit zu sammeln. Auf Grundlage eines entsprechenden Datensatzes untersuche ich, ob Freiwilligenarbeit einen positiven Effekt auf die Lebenszufriedenheit junger Leute hat. In einem weiteren Modell möchte ich feststellen, ob materielle Zufriedenheit ein möglicher Confounder sein könnte.
Leider bin ich mir unsicher mit der Interpretation des Regressionsoutputs. Ich tat mir bereits in den Klausuren schwer damit, habe aber bei numerischen Variablen wenigstens noch einfache Schlussfolgerungen ("Erhöhung X um 1 führt zu Reduktion Y um 2,23") hinbekommen. Im jetzigen Fall arbeite ich ausschließlich mit binären Variablen und habe daher keine Ahnung, wie ich die Ergebnisse einzuordnen habe.
Über Ideen und Hilfe würde ich mich sehr freuen.


Modell ohne Confounder

Call:
svyglm(formula = life_satisf ~ volunteer, design = genZ_prep_str_nowe,
family = binomial)

Survey design:
svydesign(data = genZ_prep, id = ~1, strata = ~state)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.0193 0.1946 -10.375 <2e-16 ***
volunteerno 0.2797 0.2221 1.259 0.208
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1



Modell mit Confounder

Call:
svyglm(formula = life_satisf ~ volunteer + mat_satisf, design = genZ_prep_str_nowe,
family = binomial)

Survey design:
svydesign(data = genZ_prep, id = ~1, strata = ~state)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.6623 0.2616 -10.176 < 2e-16 ***
volunteerno 0.2207 0.2247 0.982 0.326
mat_satisfno 0.9861 0.2267 4.349 1.52e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
lope
Grünschnabel
Grünschnabel
 
Beiträge: 2
Registriert: Sa 12. Mär 2022, 00:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Wie interpretiere ich Regressionsoutput binärer Variable

Beitragvon strukturmarionette » Sa 12. Mär 2022, 10:28

Hi,

- 'binär' ist keine statistische Variablentypisierung
- eher was für maschinennahe Hackeraktivitäten
- du musst deine Inputvariablen zunächst statistisch konkret darlegen, um jegliche Outputs interpretieren zu können

Gruß
S.
strukturmarionette
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 4352
Registriert: Fr 17. Jun 2011, 22:15
Danke gegeben: 32
Danke bekommen: 586 mal in 583 Posts

Re: Wie interpretiere ich Regressionsoutput binärer Variable

Beitragvon bele » Sa 12. Mär 2022, 11:30

Hallo lope,

ich habe keine Ahnung von svyglm aber wenn das der Output eines anderen logistischen Modells wäre, dann würde ich davon ausgehen, dass die Nummer der volunteers als metrischer Prädiktor eingegangen ist. Bist Du sicher, dass Du der Funktion deutlich genug gemacht hast, dass die volunteers eine Dummycodierung brauchen und nicht metrisch sind?

Vielleicht magst Du ja mal das Ergebnis von
Code: Alles auswählen
str(genZ_prep)
summary(genZ_prep$volunteer)

posten.

LG,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5908
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1396 mal in 1382 Posts

Re: Wie interpretiere ich Regressionsoutput binärer Variable

Beitragvon lope » Sa 12. Mär 2022, 15:01

bele hat geschrieben:Hallo lope,

ich habe keine Ahnung von svyglm aber wenn das der Output eines anderen logistischen Modells wäre, dann würde ich davon ausgehen, dass die Nummer der volunteers als metrischer Prädiktor eingegangen ist. Bist Du sicher, dass Du der Funktion deutlich genug gemacht hast, dass die volunteers eine Dummycodierung brauchen und nicht metrisch sind?

Vielleicht magst Du ja mal das Ergebnis von
Code: Alles auswählen
str(genZ_prep)
summary(genZ_prep$volunteer)

posten.

LG,
Bernhard


Hi Bernhard,

Output wäre das hier:


> str(genZ_prep)
tibble [1,006 × 5] (S3: tbl_df/tbl/data.frame)
$ weight : num [1:1006] 0.838 1.08 1.031 1.175 1.066 ...
$ life_satisf: Factor w/ 2 levels "satisfied","unsatisfied": 1 2 1 2 1 2 1 1 1 1 ...
$ mat_satisf : Factor w/ 2 levels "yes","no": 1 2 2 1 2 2 2 2 2 2 ...
$ volunteer : Factor w/ 2 levels "yes","no": 2 2 2 1 2 2 2 2 2 2 ...
$ state : chr [1:1006] "Rheinland-Pfalz" "Hessen" "Niedersachsen" "Schleswig-Holstein" ...

> summary(genZ_prep$volunteer)
yes no NA's
256 712 38


Was meinst du mit "Nummer"? Die jeweilige ID im Datensatz?
lope
Grünschnabel
Grünschnabel
 
Beiträge: 2
Registriert: Sa 12. Mär 2022, 00:36
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Wie interpretiere ich Regressionsoutput binärer Variable

Beitragvon bele » Sa 12. Mär 2022, 17:44

HI!

Gut, ich habe mich geirrt. volunteer ist dichotom/binär und life_satisf ist auch binär. Es bleibt dabei, dass ich svyglm nicht kenne und das mal so deute, als wäre es mit "normalem" glm gerechnet:

Code: Alles auswählen
Call:
svyglm(formula = life_satisf ~ volunteer, design = genZ_prep_str_nowe,
family = binomial)

Survey design:
svydesign(data = genZ_prep, id = ~1, strata = ~state)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.0193 0.1946 -10.375 <2e-16 ***
volunteerno 0.2797 0.2221 1.259 0.208


Dann ist der lineare Anteil des Modells:

logit(Lebenszufriedenheit) = 0,2797 mal Nicht-Freiwilliger minus 2,019

Das Modell ist sich sehr sicher mit dem negativen Intercept, dass also im Grundsatz bei der lineare Regression also mal was negatives herauskommt, mithin die Wahrscheinlichkeit für eine "1" gering und, wenn ich das richtig interpretiere(*), "satisfied" generell wahrscheinlicher ist. Wenn man "nicht freiwilliger" ist, dann wird auf der logit-Ebene noch etwa 0,3 addiert, und damit steigt die Wahrscheinlichkeit für ein "unsatisfied", aber dieser Wert ist nicht signifikant geworden, trifft also für die Stichprobe zu, lässt sich aber nicht auf die Grundgesamtheit verallgemeinern.

(*) - solche Sachen überprüft man am besten immer nochmal mit predict.


Code: Alles auswählen
Call:
svyglm(formula = life_satisf ~ volunteer + mat_satisf, design = genZ_prep_str_nowe,
family = binomial)

Survey design:
svydesign(data = genZ_prep, id = ~1, strata = ~state)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -2.6623 0.2616 -10.176 < 2e-16 ***
volunteerno 0.2207 0.2247 0.982 0.326
mat_satisfno 0.9861 0.2267 4.349 1.52e-05 ***


Man sieht entweder an den Sternchen oder an den p-Werten, dass nicht nur der Intercept, sondern auch die Materielle Zufriedenheit einen signifikanten Einfluss haben, der Freiwilligenstatus aber nicht.

Hilft irgendwas davon? Ich mag die StatQuest-Videos auf Youtube. Gibt es auch für binär-logistische Regression:
https://youtu.be/yIYKR4sgzI8 -- Einführung in das Thema logistische Regression
https://youtu.be/vN5cNN2-HWE -- Hier geht es um die Koeffizienten und wie sie zu deuten sind. Das scheint Deine Frage am besten zu treffen
https://youtu.be/C4N3_XJJ-jU -- aus der gleichen Serie. Hier wird der Bezug zwischen der Statistik und der Anwendung in R beschrieben.

HTH,
Bernhard
----
`Oh, you can't help that,' said the Cat: `we're all mad here. I'm mad. You're mad.'
`How do you know I'm mad?' said Alice.
`You must be,' said the Cat, `or you wouldn't have come here.'
(Lewis Carol, Alice in Wonderland)
bele
Schlaflos in Seattle
Schlaflos in Seattle
 
Beiträge: 5908
Registriert: Do 2. Jun 2011, 23:16
Danke gegeben: 16
Danke bekommen: 1396 mal in 1382 Posts


Zurück zu Regressionanalyse

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 6 Gäste