Firthlogit, marginale Effekte und Interaktionen

Regressionsmodelle aller Art mit Stata.

Firthlogit, marginale Effekte und Interaktionen

Beitragvon solo_anna » Mi 9. Jun 2021, 12:58

Hallo,

ich habe veruscht, eine logistische Regression mit einem Interaktionseffekt zu rechnen, was leider aufgrund von Separation nicht funktionierte:
Code: Alles auswählen
. logit care_benefits c.health_lim##i.onecareperson_3 if valid==1 & onecarepersononly==1

note: 2.onecareperson_3 != 0 predicts failure perfectly
      2.onecareperson_3 dropped and 65 obs not used

note: 3.onecareperson_3#c.health_lim != 0 predicts failure perfectly
      3.onecareperson_3#c.health_lim dropped and 32 obs not used

note: 2.onecareperson_3#c.health_lim omitted because of collinearity
Iteration 0:   log likelihood = -47.883416 
Iteration 1:   log likelihood = -39.596133 
Iteration 2:   log likelihood = -35.881327 
Iteration 3:   log likelihood = -35.798874 
Iteration 4:   log likelihood = -35.798488 
Iteration 5:   log likelihood = -35.798488 

Logistic regression                             Number of obs     =        320
                                                LR chi2(2)        =      24.17
                                                Prob > chi2       =     0.0000
Log likelihood = -35.798488                     Pseudo R2         =     0.2524

----------------------------------------------------------------------------------------------
               care_benefits |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-----------------------------+----------------------------------------------------------------
                  health_lim |   .3637094    .085982     4.23   0.000     .1951877     .532231
                             |
             onecareperson_3 |
               wider family  |          0  (empty)
                 not family  |  -.3931463   1.182315    -0.33   0.739    -2.710441    1.924148
                             |
onecareperson_3#c.health_lim |
               wider family  |          0  (empty)
                 not family  |          0  (omitted)
                             |
                       _cons |  -4.360444   .6238969    -6.99   0.000    -5.583259   -3.137628
----------------------------------------------------------------------------------------------


Um das zu korrigieren, habe ich das Modell mit dem Befehl firthlogit gerechnet, was auch funktioniert hat:
Code: Alles auswählen
. firthlogit care_benefits c.health_lim##i.onecareperson_3 if valid==1 & onecarepersononly==1

initial:       penalized log likelihood = -45.352147
rescale:       penalized log likelihood = -45.352147
Iteration 0:   penalized log likelihood = -45.352147 
Iteration 1:   penalized log likelihood = -32.617258 
Iteration 2:   penalized log likelihood = -31.545871 
Iteration 3:   penalized log likelihood = -31.462159 
Iteration 4:   penalized log likelihood =   -31.4621 
Iteration 5:   penalized log likelihood =   -31.4621 

                                                Number of obs     =        417
                                                Wald chi2(5)      =      27.73
Penalized log likelihood =   -31.4621           Prob > chi2       =     0.0000

----------------------------------------------------------------------------------------------
               care_benefits |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-----------------------------+----------------------------------------------------------------
                  health_lim |   .3502754   .0817553     4.28   0.000      .190038    .5105129
                             |
             onecareperson_3 |
               wider family  |  -.6839636   1.635612    -0.42   0.676    -3.889704    2.521777
                 not family  |  -.4077488   1.045765    -0.39   0.697    -2.457411    1.641913
                             |
onecareperson_3#c.health_lim |
               wider family  |  -.0106092   .3302318    -0.03   0.974    -.6578516    .6366332
                 not family  |  -.0372747   .3046006    -0.12   0.903     -.634281    .5597315
                             |
                       _cons |  -4.206488   .5869453    -7.17   0.000    -5.356879   -3.056096
----------------------------------------------------------------------------------------------


Nun möchte ich daraus gerne die marginalen Effekte berechnet haben. Dafür habe ich den margins-Befehl mit der Option expression(invlogit(predict(xb))) verwendet (die notwendige Option habe ich u.a. in diesem Forenthread gefunden). Das Ergebnis sieht folgendermaßen aus:
Code: Alles auswählen
. margins, dydx(*) expression(invlogit(predict(xb)))

Average marginal effects                        Number of obs     =        417
Model VCE    : OIM

Expression   : invlogit(predict(xb))
dy/dx w.r.t. : health_lim 2.onecareperson_3 3.onecareperson_3

---------------------------------------------------------------------------------
                |            Delta-method
                |      dy/dx   Std. Err.      z    P>|z|     [95% Conf. Interval]
----------------+----------------------------------------------------------------
     health_lim |   .0091291    .002512     3.63   0.000     .0042057    .0140525
                |
onecareperson_3 |
  wider family  |  -.0174202   .0227347    -0.77   0.444    -.0619794    .0271389
    not family  |   -.014628   .0252153    -0.58   0.562    -.0640492    .0347931
---------------------------------------------------------------------------------
Note: dy/dx for factor levels is the discrete change from the base level.


Interpretieren würde ich das Ganz folgendermaßen:

Der marginale Effekt von health_lim auf care_benefits beträgt für Befragte mit einer Pflegeperson aus der engen Familie (Referenzkategorie) 0,009.
Der marginale Effekt von health_lim auf care_benefits beträgt für Befragte mit einer Pflegeperson aus der weiteren Familie -0,017.
Der marginale Effekt von health_lim auf care_benefits beträgt für Befragte mit einer Pflegeperson, die nicht aus der Familie stammt, -0,015.

Ist diese Interpretation korrekt? Und grundsätzlich: Ist das Vorgehen korrekt? Würdet ihr ein anderes Vorgehen wählen?

Vielen Dank für Rückmeldungen!
solo_anna
 
Beiträge: 1
Registriert: Di 8. Jun 2021, 17:44
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Firthlogit, marginale Effekte und Interaktionen

Beitragvon Staxa » Mi 9. Jun 2021, 14:46

Grundsätzlich wäre es wichtig die Skalen der beiden Items zu kennen. Dydx sollte dir immer die Änderung in Prozentpunkten geben, also wenn der Wert etwa -.014628 ist, dann wären das 1,4 Prozentpunkte weniger als bei der Referenzkategorie. Bei metrischen Variablen dann eben die Änderung von Prozentpunkten wenn die Variable um den Wert 1 ansteigt. Im Zweifel kannst du auch margins weglassen und bei der Regressionstabelle nur Vorzeichen und p-Werte nutzen.
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 680
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Regressionsmodelle

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron