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!