Logistische Regression mit R.


7

Ich führe eine logistische Regression durch. Ich habe die folgenden Testdaten erstellt (die beiden Prädiktoren und das Kriterium sind binäre Variablen):

   UV1 UV2 AV
1    1   1  1
2    1   1  1
3    1   1  1
4    1   1  1
5    1   1  1
6    1   1  1
7    1   1  1
8    0   0  1
9    0   0  1
10   0   0  1
11   1   1  0
12   1   1  0
13   1   0  0
14   1   0  0
15   1   0  0
16   1   0  0
17   1   0  0
18   0   0  0
19   0   0  0
20   0   0  0

AV =dependentvariablecriterion

UV1UV2=bothindependantvariablespredictors

Zur Messung des UV-Effekts auf den AV ist eine logistische Regression erforderlich, da der AV eine binäre Variable ist. Daher habe ich den folgenden Code verwendet

> lrmodel <- glm(AV ~ UV1 + UV2, data = lrdata, family = "binomial")

einschließlich "family =" binomial "" . Ist das richtig?

In Bezug auf meine Testdaten habe ich mich über das gesamte Modell gewundert, insbesondere über die Schätzer und die Bedeutung:

> summary(lrmodel)


Call:
glm(formula = AV ~ UV1 + UV2, family = "binomial", data = lrdata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.7344  -0.2944   0.3544   0.7090   1.1774  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.065e-15  8.165e-01   0.000    1.000
UV1         -1.857e+01  2.917e+03  -0.006    0.995
UV2          1.982e+01  2.917e+03   0.007    0.995

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 27.726  on 19  degrees of freedom
Residual deviance: 17.852  on 17  degrees of freedom
AIC: 23.852

Number of Fisher Scoring iterations: 17
  1. Warum ist UV2 nicht signifikant? Sehen Sie daher, dass es für die Gruppe AV = 1 7 Fälle mit UV2 = 1 und für die Gruppe AV = 0 nur 3 Fälle mit UV2 = 1 gibt. Ich hatte erwartet, dass UV2 ein signifikanter Diskriminator ist.

  2. Trotz der Nichtbedeutung der UVs sind die Schätzer meiner Meinung nach sehr hoch (zB für UV2 = 1,982e + 01). Wie ist das möglich?

  3. Warum ist der Achsenabschnitt nicht 0,5? Wir haben 5 Fälle mit AV = 1 und 5 Fälle mit AV = 0.

Weiter: Ich habe UV1 als Prädiktor erstellt, von dem ich erwartet hatte, dass er nicht signifikant ist: Für die Gruppe AV = 1 gibt es 5 Fälle mit UV1 = 1 und für die Gruppe AV = 0 gibt es 5 Fälle mit UV1 = 1.

Das ganze "Bild", das ich aus der Logistik gewonnen habe, verwirrt mich ...

Was mich mehr verzehrte: Wenn ich eine "NICHT-logistische" Regression durchführe (indem ich "family =" binomial " weglasse )

> lrmodel <- glm(AV ~ UV1 + UV2, data = lrdata,)

Ich bekomme die erwarteten Ergebnisse

Call:
glm(formula = AV ~ UV1 + UV2, data = lrdata)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.7778  -0.1250   0.1111   0.2222   0.5000  

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)   0.5000     0.1731   2.889  0.01020 * 
UV1          -0.5000     0.2567  -1.948  0.06816 . 
UV2           0.7778     0.2365   3.289  0.00433 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for gaussian family taken to be 0.1797386)

    Null deviance: 5.0000  on 19  degrees of freedom
Residual deviance: 3.0556  on 17  degrees of freedom
AIC: 27.182

Number of Fisher Scoring iterations: 2
  1. UV1 ist nicht signifikant! :-)
  2. UV2 wirkt sich positiv auf AV = 1 aus! :-)
  3. Der Achsenabschnitt ist 0,5! :-)

Meine allgemeine Frage: Warum führt die logistische Regression (einschließlich "family =" binomial ") nicht erwartungsgemäß zu Ergebnissen, eine" NOT-logistic "-Regression (ohne" family = "binomial") jedoch nicht?

Update: sind die oben beschriebenen Beobachtungen aufgrund der Korrelation von UV1 und UV 2. Corr = 0,56 Nach Manipulation der UV2-Daten

AV: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

UV1: 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0

UV2: 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0

(Ich habe die Positionen der drei Nullen mit den drei Einsen in UV2 geändert, um eine Korrelation <0,1 zwischen UV1 und UV2 zu erhalten.) Daher:

UV1 UV2 AV
1    1   0  1
2    1   0  1
3    1   0  1
4    1   1  1
5    1   1  1
6    1   1  1
7    1   1  1
8    0   1  1
9    0   1  1
10   0   1  1
11   1   1  0
12   1   1  0
13   1   0  0
14   1   0  0
15   1   0  0
16   1   0  0
17   1   0  0
18   0   0  0
19   0   0  0
20   0   0  0

Um Korrelationen zu vermeiden, kommen meine Ergebnisse meinen Erwartungen näher:

Call:
glm(formula = AV ~ UV1 + UV2, family = "binomial", data = lrdata)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-1.76465  -0.81583  -0.03095   0.74994   1.58873  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  -1.1248     1.0862  -1.036   0.3004  
UV1           0.1955     1.1393   0.172   0.8637  
UV2           2.2495     1.0566   2.129   0.0333 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 27.726  on 19  degrees of freedom
Residual deviance: 22.396  on 17  degrees of freedom
AIC: 28.396

Number of Fisher Scoring iterations: 4

Aber warum beeinflusst die Korrelation die Ergebnisse der logistischen Regression und nicht die Ergebnisse der "nicht logistischen" Regression?


2
Wenn Sie nicht wissen, wie die Antwort von den Regressoren generiert wurde, sind Ihre Daten für Tests fast unbrauchbar. Warum nicht AV nach einem bestimmten Modell basierend auf UV1 und UV2 (mit bekannten Koeffizienten) erzeugen? Dann haben Sie Daten, die es wert sind, betrachtet und daraus gelernt zu werden.
whuber

Danke für diesen Vorschlag, aber: Ich weiß, wie man die Werte für AV nach bekannten Koeffizienten für UV1 und UV2 für eine lineare / multiple Regression erzeugt. Es wäre beispielsweise einfach, y = 5 + 10 * UV1 + 20 * UV2 (für die lineare Regressionsgleichung y = b0 + b1 * UV1 + b2 * UV2) zu definieren und auf der Grundlage dieser Gleichung a zu erstellen Datensatz für X und Y. Hier geht es jedoch um eine logistische Regression.
Flobrr

Wie kann ich dieses Verfahren an eine logistische Regression anpassen, insbesondere wenn man bedenkt, dass eine logistische Regression nicht t calculating an exact y-value but an value which can be defined as the probability to be part of group AV = 1 (and not part of group AV = 0); and this value isngenau 0 oder 1 ist, sondern zwischen 0 und 1 liegt und Sie einen Schwellenwert für Ihr Modell auswählen müssen, um der Gruppe AV = 1 einen Fall zuzuweisen, wenn Der Schwellenwert wird überschritten. Daher gibt es in der logistischen Regression einen "abstrakteren" Wert und keinen klaren y-Wert wie in der linearen Regression. Wie gehe ich damit um?
Flobrr

Die logistische Regression verwendet ein spezifisches mathematisches Modell, das genau beschreibt, wie Daten generiert werden. Ich habe ein funktionierendes RBeispiel in einer Lösung unter stats.stackexchange.com/a/40609/919 veröffentlicht : siehe Codezeile unter dem Kommentar "Simulation durchführen".
whuber

Antworten:


1

Meine allgemeine Frage: Warum führt die logistische Regression (einschließlich "family =" binomial ") nicht erwartungsgemäß zu Ergebnissen, eine" NOT-logistic "-Regression (ohne" family = "binomial") jedoch nicht?

Sie erhalten unterschiedliche Ergebnisse, wenn die linearen Modelle minimiert werden

i=1n(yiηi)2
während die logistische Regression minimiert:

i=1nyilog(11+exp(ηi))+(1yi)log(111+exp(ηi))
wobei
ηi=β0+β1UV1+β2UV2

Es gibt keinen Grund, warum die Ergebnisse gleich sein sollten.

Aber warum beeinflusst die Korrelation die Ergebnisse der logistischen Regression und nicht die Ergebnisse der "nicht logistischen" Regression?

Es wird beides betreffen. Ich nehme an, Sie sehen Std. Errorim linearen Modell auch niedrigere s. Dies ist ein Problem mit Multikollinearität, obwohl Sie diese Multikollinearität möglicherweise nicht aufrufen, wenn Sie nur zwei Variablen mit Korrelation haben ..56

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.