• Keine Ergebnisse gefunden

Logistic Regression

N/A
N/A
Protected

Academic year: 2021

Aktie "Logistic Regression"

Copied!
26
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Logistic Regression

Jonathan Harrington

Befehle: logistic.txt

(2)

1. Logistic Regression: allgemeine Einführung

Dalgaard, P. (2002) Introductory Statistics with R.

Insbesondere Kap. 11

D. Cook, P. Dixon, W. M. Duckworth, M.S. Kaiser, K. Koehler, W.

Q. Meeker and W. R. Stephenson. Binary Response and Logistic Regression Analysis.

http://www.faculty.sbc.edu/bkirk/Biostatistics/course%20documents%20for

%202006/Logistic%20Regression%20Analysis.doc

Literatur

Baayen, R.H. Analyzing Linguistic Data: A practical introduction to Statistics. S. 213-234

Johnson, Keith (in press). Quantitative Methods in Linguistics.

Blackwell. Kapitel 5.

Verzani, J. (2005). Using R for Introductory Statistics

(Ebook ueber die LMU UB). Kapitel 12

(3)

1. Logistic Regression: allgemeine Einführung

Mit logistic Regression wird eine Regressionslinie an Proportionen angepasst.

Aus verschiedenen Gründen kann jedoch die lineare (least-squares) Regression nicht auf Proportionen angewandt werden.

Vor allem liegen Proportionen zwischen 0 und 1 während lineare Regression keine solchen Grenzen kennt (und

daher könnte ein lineares Regressionsmodell Proportionen unter 0 oder über 1 vorhersagen).

Außerdem wird in der linearen Regression eine konstante

Varianz angenommen; jedoch kann bewiesen werden,

dass je höher der Proportionsdurchschnitt, umso größer

die Varianz.

(4)

Diese (und andere) Probleme können überwunden werden:

1. wenn log-odds statt Proportionen modelliert werden

2. Durch Einsetzung von 'maximum likelihood' anstatt 'least squares'.

1. Logistic Regression: allgemeine Einführung

y = mx + b

logodds(y) = mx + b

Least-squares Regression Logistic Regression

Es wird nicht angenommen, dass die Werte Stichproben aus einer Normalverteilung sind.

Ein Vorteil von logistic Regression:

(5)

Einige Daten

high low 1950 30 5 1960 18 21 1971 15 26 1980 13 20 1993 4 32 2005 2 34

In 1950 produzierten 30 Sprecher /lo:st/ und 5 /lɔst/.

jahr = as.numeric(rownames(lost)) jahr = jahr - 1950

lost

(6)

Log-odds

p q=1-p Odds = p/q Log-Odds = log(p/q)

0.8 0.2 log(4) = 1.39

0.5 0.5 1 0

4

bedeutet 4:1 (wie im Pferderennen). Die Wahrscheinlichkeit vom Erfolg (p) ist 4 Mal so groß wie Scheitern (q)

p: Proportion 'Erfolg'.

lo:st lɔst

32 8

n 40

p 0.8 (prop. lOst)

(prop. lo:st)

(7)

Log-odds also log (p/q) als Funktion von p Log-odds haben Werte zwischen ±∞

Log-odds

(8)

2. Anwendung der logistic Regression in R: glm()

Das Ziel: nach der Anwendung von logistic Regression geben wir einen beliebigen Jahrgang ein, und das Modell soll uns die Proportion von /lo:st/ vorhersagen. zB Eingabe 1962, Proportion (lo:st) = ?

Jahr ist daher in diesem Fall die unabhängige Variable, Proportion von /lo:st/ die abhängige Variable.

Mit logistic Regression ist die abhängige Variable immer ein kategorialer Wert von 2 Möglichkeiten: ja oder nein, rot oder grün, 0 oder 1, weiblich oder

männlich, wach oder eingeschlafen, /lo:st/ oder /lɔst/,

Erfolg oder Scheitern, usw.

(9)

g = glm(lost ~ jahr, binomial) Ergebnis: ein Log-

Odd pro Jahr

unabhängige Variable (der Jahrgang)

bedeutet:

logistic

Regression ('binomial' weil wie in der

binomialen Verteilung wir mit 2 Werten (ja/nein,

Erfolg/Scheitern zu tun haben).

wird modelliert durch Abhängige Variable

Eine 2-spaltige Matrix: Anzahl von 'ja' und 'nein' (hier /lo:st/ und /lOst/)

lost

high low

1950 30 5

1960 18 21

1971 15 26

1980 13 20

1993 4 32

2005 2 34

(10)

Da die Ausgabe der Regression in log-odds ist,

müssen wir die Proportionen ebenfalls umwandeln, wenn wir die Regressionslinie sehen wollen.

Die vorhergesagten Werte überlagern

text(jahr, predict(g), "x", col=3)

Eine Abbildung der Daten in diesem Raum:

# Proportion von /lo:st/ berechnen p = lost[,1]/apply(lost, 1, sum)

# log-odds

lodd = log(p/(1-p))

plot(jahr, lodd, type="b")

# Regressionslinie überlagern abline(g, col=2)

3. Abbildung der Regressionslinie

(11)

neuerwert = data.frame(jahr = 12)

ergebnis = predict(g, neuerwert, se.fit=T) ergebnis$fit

Vorhersage: Wert für 1962

abline(h=ergebnis$fit, lty=2, col="blue")

(12)

Wir können durch die Transformation (2) die Regressionslinie auch in einem Raum von Jahr x Proportionen abbilden.

Von Proportionen in log-odds

Von log-odds zurück in Proportionen

1 )

log( p L p

  L = log(p/(1-p))

L L

e p e

 

1 p = exp(L)/(1+exp(L)) [1] 1.386294

[1] 0.8

Abbildung der Regression

(1)

(2)

p = 0.8

(13)

curve(exp(m*x + k)/(1+ exp(m*x+k)), xlim=c(0, 60), add=T, col=2)

# Regression überlagern

# Proportionen von /lo:st/ berechnen p = lost[,1]/apply(lost, 1, sum)

plot(jahr,p)

# Abbildung Jahr x Proportionen

Die Regression

) (

) (

1 mx k

k mx

e

y e

 

coef(g)

(Intercept) jahr 1.10432397 -0.07026313

k = coef(g)[1]

m = coef(g)[2]

Abbildung: Jahr x Proportionen

(14)

und die vorhergesagten Werte liegen wieder auf der Linie:

vorher = predict(g)

text(jahr, exp(vorher)/(1+exp(vorher)), "x", col=3)

Abbildung Jahr x Proportionen

(15)

Lineare Regression: R

2

oder adjusted R

2

und ein F-test Logistic Regression: G

2

und ein 

2

-test.

G

2

= Null deviance – residual deviance

Für ein signifikantes Ergebnis wollen wir daher, dass Null deviance hoch und Residual deviance klein ist.

wenn dieser Wert 0 wäre, dann wären alle Proportionen in allen Jahren gleich (und die Regressionslinie wäre horizontal)

je höher dieser Wert, umso unwahrscheinlicher ist es, dass die Werte überhaupt durch die Regression

modelliert werden können.

Signifikanz-Test

Was ist die Wahrscheinlichkeit, dass die Proportion von /lo:st-

lɔst/ durch den Jahrgang vorhergesagt werden kann?

(16)

69.3634 - 8.2422

[1] 61.1212

G

2

= Null deviance - residual deviance summary(g)

Null deviance: 69.3634 on 5 degrees of freedom

Residual deviance: 8.2422 on 4 degrees of freedom

Der Test mit anova() ist ob G

2

signifikant von 0 abweicht:

anova(g, test="Chisq")

Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 5 69.363 jahr 1 61.121 4 8.242 5.367e-15

Die Proportionen folgen einem Trend (

2

(1)=61.2, p < 0.001)

g = glm(lost ~ jahr, binomial)

(17)

Zwei unabhängige Variablen.

Zwei unabhängige Variablen.

pfad = "das Verzeichnis wo ich lost2.txt gespeichert habe"

lost2 = as.matrix(read.table(paste(pfad, "lost2.txt", sep="/"))) (dieselben Daten wie in lost.txt aber zusätzlich nach

männlich-weiblich aufgeteilt)

pfad = "das Verzeichnis wo ich lost2.txt gespeichert habe"

lost = as.matrix(read.table(paste(pfad, "lost.txt", sep="/")))

(18)

Zwei unabhängige Variablen.

Zwei unabhängige Variablen.

high low 00.0 16 0 10.0 9 6 21.0 8 10 30.0 8 7 43.0 4 10 55.0 1 15 00.1 14 5 10.1 9 15 21.1 7 16 30.1 5 13 43.1 0 22 55.1 1 19

M

W

1950 1960 1971 1980 1993 2005 1950 1960 1971 1980 1993 2005

} }

(a) Gibt es einen

Trend? Also weniger [lo:st] in späteren

Jahren?

(b) Ist die Proportion [lost]/[lo:st] in M und W unterschiedlich verteilt?

Interaktion: Jahr x Geschlecht

Haupteffekt: Jahr

Haupteffekt:

Geschlecht

Ist der Trend derselbe für M und F?

(19)

high low 0.0 16 0 10.0 9 6 21.0 8 10 30.0 8 7 43.0 4 10 55.0 1 15 0.1 14 5 10.1 9 15 21.1 7 16 30.1 5 13 43.1 0 22 55.1 1 19

M

W

1950 1960 1971 1980 1993 2005 1950 1960 1971 1980 1993 2005

} }

r = rownames(lost2)

J = as.numeric(substring(r, 1, 2))

G = factor(substring(r, 4, 4))

(20)

Zuerst eine Abbildung…

p = lost2[,1]/apply(lost2, 1, sum)

interaction.plot(J, G, p) Nimmt die Proportion von

/lo:st/ in späteren Jahren ab?

(Die Unterschiede zwischen m und f ignorieren).

Ja Nein Vielleicht

Unterscheiden sich m und f in der Proportion von /lo:st/?

(Die Unterschiede in den Jahrgängen ignorieren).

Ja Nein Vielleicht

(21)

Modell berechnen…

mehrg = glm(lost2 ~ J + G, binomial)

g2 = glm(lost2 ~ J, binomial) anova(g2, test="Chisq")

Analysis of Deviance Table

Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 11 89.557 year 1 61.121 10 28.436 5.367e-15

Wenn wir übrigens G weglassen, dann müssten wir

trotz der anderen Aufteilung der Daten das gleiche

Ergebnis wir vorhin bekommen:

(22)

Coefficients:

(Intercept) J Gm

1.87754 -0.07524 1.20282

Degrees of Freedom: 11 Total (i.e. Null); 9 Residual Null Deviance: 89.56

Residual Deviance: 15.61 AIC: 51.51

logodds(lo:st) = 1.87754 - 0.07524J+ 1.20282G mehrg = glm(lost2 ~ J + G, binomial)

anova(mehrg, test="Chisq")

Df Deviance Resid.Df Resid. Dev P(>|Chi|) NULL 11 89.557 J 1 61.121 10 28.436 5.367e-15 G 1 12.822 9 15.613 3.425e-04

M und F unterscheiden sich in der Proportion von lo:st/lOst, 

2

(1) = 12.82, p < 0.001

Die Proportion von 'lo:st' nimmt in späteren Jahren ab,

2

(1) = 61.12, p < 0.001.

mehrg

(23)

Mit 2 oder mehr Variablen soll auch geprüft werden, ob sie miteinander interagieren.

Eine Interaktion zwischen den unabhängigen Variablen – in diesem Fall Geschlecht und Jahrgang – liegt vor, wenn sie eine unterschiedliche Wirkung auf die abhängige

Variable ausüben wie in 1 und 2, aber nicht in 3 und 4

Die Interaktion zwischen 2 Variablen

1950 2000

prop(lo:st)

1950 2000 1950 2000 1950

2000 prop(lo:st) prop(lo:st) prop(lo:st)

1 2 3 4

m

f

(24)

Wenn eine Interaktion vorliegt, dann können signifikante Ergebnisse in einer der unabhängigen Variablen nicht uneingeschränkt akzeptiert werden.

zB wenn eine Interaktion vorkommt, gibt es vielleicht eine Wirkung von Jahrgang auf die Proportion von /lo:st/ nur in Männern aber nicht in Frauen usw.

Die Interaktion zwischen 2 Variablen

dies scheint aber hier nicht

der Fall zu sein.

(25)

Die Interaktion zwischen 2 unabhängigen Variablen, A und B, kann in R mit A:B geprüft werden.

Daher in diesem Fall

g = glm(lost2 ~ J + G + J:G, binomial)

Eine Abkürzung dafür (und mit genau demselben Ergebnis) g = glm(lost2 ~ J * G, binomial)

Die Interaktion zwischen 2 Variablen

anova(g, test="Chisq")

Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL 11 89.557

J 1 61.121 10 28.436 5.367e-15 G 1 12.822 9 15.613 3.425e-04 J:G 1 0.017 8 15.596 0.896

d.h. die Interaktion ist nicht signifikant und J:G kann

aus dem Regressionsmodell weggelassen werden.

(26)

Start: AIC= 53.49 lost2 ~ J * G

Df Deviance AIC - J:G 1 15.613 51.506

<none> 15.596 53.489 Df Deviance AIC

<none> 15.613 51.506 - G 1 28.436 62.328 - J 1 80.018 113.910

Wir bleiben also bei

Call: glm(formula = lost2 ~ J + G, family = binomial) Residual Deviance: 15.61 AIC: 51.51

library(MASS) stepAIC(g)

Dies wird auch durch stepAIC() bestätigt:

AIC wird kleiner wenn wir

J:G weglassen

Abbildung

Abbildung Jahr x Proportionen

Referenzen

ÄHNLICHE DOKUMENTE

Our contributions are: (1) accumulating a dataset for pun detection; (2) utilizing a logistic regression model to show the relations with straightforward features on both sentence

In Section 4.3.1 we analyzed weights and expression values of the genes and exons selected by group ` 1 and elastic net.. In the following we consider publications about

The Logistic Regression will implement both ideas: It is a model of a posterior class distribution for classification and can be interpreted as a probabilistic linear classifier.

The Logistic Regression will implement both ideas: It is a model of a posterior class distribution for classification and can be interpreted as a probabilistic linear classifier..

One approach that has been used in the literature is to estimate marginal effects by comparing point estimates of the expected probability of various characteristics (Pohlmann

example, the LPC of the impact of female gender on the probability of unemployment can be derived from the results of a logistic regression by estimating the female and male

■ Assume effect of either independent variable is the same, regardless of the value of the other variable (additivity, parallel regression lines).. ■ Usual assumptions on

Outside this range we get fitted values that are smaller than zero or larger than one.. ◆ Nonparametric regression shows S-shaped fit, not a