Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Die Analyse von Proportionen: c2 und Logistic Regression

Ähnliche Präsentationen


Präsentation zum Thema: "Die Analyse von Proportionen: c2 und Logistic Regression"—  Präsentation transkript:

1 Die Analyse von Proportionen: c2 und Logistic Regression
Jonathan Harrington Befehle: proportion.txt

2 Kontinuierlich und kategorisch
Was ist die Wahrscheinlichkeit, dass: F2 von [i:] höher ist als von [I] (t-test) F1 und Dauer von [a] miteinander korreliert sind (Regression)? Kategorisch Eine steigende Melodie in Aussagen von jugendlichen im Vergleich zu aelteren Personen verwendet wird? Ein [r] statt [R] in Bayern im Vergleich zu Schleswig-Holstein verwendet wird? Was ist die Wahrscheinlichkeit, dass:

3 In einer kategorischen Analyse werden meistens 2 Proportionen miteinander verglichen.
Die tests dafür: c2 und Logistic Regression. zB wir zählen wie oft steigende Melodien in Aussagen bei jugendlichen (35%) und älteren Leuten (11%) vorkommen. Sind diese Proportionen (35%, 11%) signifikant unterschiedlich?

4 Solche Methoden haben insbesondere in der Soziolinguistik/phonetik eine Anwendung, in der sehr oft auditiv die Proportionen wahrgenommener Allophone miteinander als Funktion von Alter, Dialekt usw. verglichen werden, ohne unbedingt die kontinuierlichen akustischen (oder artikulatorischen) Parameter (Dauer, Formanten usw.) zu analysieren. (In der Soziolinguistik: Logistic Regression = VARBRUL)

5 Terminologie: Klassen (Gruppen) und Ebenen (levels)
Eine Gruppe Was ist die Wahrscheinlichkeit, dass ein silbenfinaler /t/ gelöst wird? Gruppe = silbenfinaler /t/ mit 2 Ebenen: gelöst oder nicht gelöst. Was ist die Wahrscheinlichkeit, dass ein silbenfinaler /t/ gelöst, nicht-gelöst oder lenisiert wird? Gruppe = silbenfinaler /t/ mit 3 Ebenen (gelöst, nicht-gelöst, lenisiert)

6 Zwei Gruppen Wird ein silbenfinaler /t/ häufiger in Bayern als in Hessen gelöst? Gruppe 1: /t/ mit 2 Ebenen (gelöst, nicht-gelöst) Gruppe 2: Dialekt mit 2 Ebenen (bayerisch, hessisch). Ist die Verteilung der /t/ Realisierungen – ob sie gelöst, lenisiert oder nicht-gelöst werden – dieselbe in Bayern, Hessen, und Sachsen? Zwei Gruppen ( /t/ und Dialekt) jeweils mit 3 Ebenen.

7 Drei Gruppen Unterscheidet sich die Häufigkeit der /l/-Vokalisierungen zwischen Männern und Frauen in Bayern und Hessen? Gruppe 1: /l/ mit 2 Ebenen (vokalisiert oder nicht) Gruppe 2: Geschlecht mit 2 Ebenen: (M, F) Gruppe 3: Dialekt mit 2 Ebenen (Bayern, Hessen).

8 Die statistische Analyse von Proportionen
Eine oder zwei Gruppen Analyse von Proportionen c2-test = prop.test() chisq.test() (aber prop.test() kann nicht eingesetzt werden, wenn beide Gruppen mehr als 2 Ebenen haben) Mehr als 2 Gruppen** Logistic Regression (kann auch bei 2 Gruppen eingesetzt werden**, und gibt fast das gleiche Ergebnis wie ein c2-test). glm() = generalized linear model (der Name soll an lm() erinnern – da sie miteinander viele Ähnlichkeiten haben) **eine Gruppe muss 2 Ebenen haben

9 1. Eine Gruppe, zwei Ebenen
(Gruppe = Münze, Ebenen = Kopf, Zahl) Ich werfe eine Münze 20 Mal und bekomme 5 Mal Kopf. Ist die Münze gezinkt? d.h. weicht die Proportion 5/20 = ¼ signifikant von 10/20 = ½ ab? prop.test(5, 20, .5) data: 5 out of 20, null probability 0.5 X-squared = 4.05, df = 1, p-value = alternative hypothesis: true p is not equal to 0.5 95 percent confidence interval: sample estimates: p 0.25 Die Münze ist gezinkt: c2(1) = 4.05, p < 0.05

10 2 Gruppen jeweils 2 Ebenen
Die Anzahl der glottalisierten silbenfinalen /t/s ist in einem englischen Dialekt getrennt fuer Männer und Frauen gemessen worden. Silbenfinaler /t/ n 200 190 Genauer: sind 110/200 und 82/190 voneinander signifikant unterschiedlich? Geschlecht glottalisiert nicht-glottalisiert Männer 110 90 Frauen 82 108 Kommt die Glottalisierung häufiger bei Männern vor? Die Frage in eine Proportion umsetzen: unterscheiden sich die Proportionen der Glottalisierungen zwischen M und F?

11 Silbenfinaler /t/ Geschlecht glottalisiert nicht-glottalisiert n
Männer 110 90 200 Frauen 82 108 190 prop.test(c(110, 82), c(200, 190)) data: c(110, 82) out of c(200, 190) X-squared = , df = 1, p-value = alternative hypothesis: two.sided 95 percent confidence interval: sample estimates: prop 1 prop 2 Männer und Frauen dieses Dialekts unterscheiden sich in der Häufigkeit der silbenfinalen /t/-Glottalisierung c2(1) = 5.00, p < 0.05.

12 2 Gruppen, eine Gruppe mit 2 Ebenen, die andere mit mehr als 2 Ebenen
Die Verteilung der /l/ Vokalisierungen in einem Dialekt in 4 Altersgruppen ist wie folgt: lvoc Alter /l/ A20min A20bis30 A31bis40 A41plus vok nicht-vok Hat Alter einen signifikanten Einfluss auf /l/-Vokalisiertung?

13 und vergleichen dann miteinander 58/92, 55/104, 62/146, 38/97
lvoc A20min A20bis30 A31bis40 A41plus vok nicht-vok In Proportionen umwandeln – und dazu brauchen wir die jeweiligen Gruppensummen apply(lvoc, 2, sum) prop.test(c(58, 55, 62, 38), c(92, 104, 146, 97)) A20min A20bis30 A31bis40 A41plus und vergleichen dann miteinander 58/92, 55/104, 62/146, 38/97

14 Das gleiche mit chisq.test()
prop.test(c(58, 55, 62, 38), c(92, 104, 146, 97)) data: c(58, 55, 62, 38) out of c(92, 104, 146, 97) X-squared = , df = 3, p-value = alternative hypothesis: two.sided sample estimates: prop 1 prop 2 prop 3 prop 4 Alter hat einen signifikanten Einfluss auf /l/-Vokalisierung, c2(3) = 14.10, p < 0.01 Das gleiche mit chisq.test() chisq.test(lvoc) Pearson's Chi-squared test data: lvoc X-squared = , df = 3, p-value =

15 Wie wird c2 berechnet? c2 ist die Abweichung der tatsächlich vorkommenden (Observed) von den zu erwartenden (Expected) Verteilungen, unter der Annahme (Null Hypothese) dass die Verteilungen pro Gruppe gleich sind. A20min A20bis30 A31bis40 A41plus vok nicht-vok Null Hypothese: die Proportion der vokalisierten /l/s ist in allen 4 Gruppen gleich. [1] Proportion der vok /l/s unabhängig vom Alter = sum(lvoc[1,])/sum(lvoc) Anzahl der vokalisierten /l/s dividiert durch Anzahl aller /l/s. d.h. unter der Null-Hypothese müssten der /l/s in jeder Altersgruppe vokalisiert sein. zB für A20min: * sum(lvoc[,1]) [1]

16 Observed 0.4851936 * sum(lvoc[,1]) Expected
A20min A20bis30 A31bis40 A41plus vok nicht-vok * sum(lvoc[,1]) Expected A20min A20bis30 A31bis40 A41plus vok nicht-vok ( ) * sum(lvoc[,1]) oder sum(lvoc[,1]) r = chisq.test(lvoc) r$expected A20min A20bis30 A31bis40 A41plus vok nicht-vok

17 Wie wird c2 berechnet? Wir wollen die Größe der Abweichung, d, zwischen Observed und Expected prüfen (die Null Hypothese: d = 0). O = lvoc E = r$expected d = (O - E)^2/E d < s s >41 mitvok ohnevok Je größer die Abweichung von 0 (Null) umso mehr trägt eine Zelle zum signifikanten Ergebnis bei. c2 ist dann einfach die Summe der Abweichungen: sum(d)

18 c2-Test für einen Trend pfad = "das Verzeichnis der gespeicherten Datei lost.txt" lost = as.matrix(read.table(paste(pfad, "lost.txt", sep="/"))) In der Standardaussprache von England, RP, wurde von einer vornehmeren Schichte der Gesellschaft vor 50 Jahren 'lost' mit einem hohen Vokal gesprochenen (auch 'often'). Hier ist die Häufigkeit der Verwendung von /lo:st/ (Vokal = high) oder /lOst/ (Vokal = low) in Sprechern, die in 6 verschiedenen Jahren aufgenommen wurden (hypothetische Daten). high low Gibt es einen Trend? d.h. nimmt die Proportion der /lOst/ Erzeugungen zu? In 1950 produzierten 30 Sprecher /lo:st/ und 5 /lOst/.

19 Abbildung Wir standardisieren die Jahre, sodass 0 = 1950.
jahr = as.numeric(rownames(lost)) jahr = jahr # Proportion von /lo:st/ berechnen p = lost[,1]/apply(lost, 1, sum) plot(jahr, p, type="b") Proportionen von /lo:st/ über 55 Jahre 10 20 30 40 50 0.2 0.4 0.6 0.8 jahr Proportion Test: prop.trend.test(x, n, score) x: die Anzahl von /lo:st/ n: Gesamtanzahl pro Jahr score: die X-Achsen Werte, für die wir einen linearen Trend berechnen wollen.

20 # Spalte 1 hat die Anzahl von /lo:st/ x = lost[,1]
# Summe lo:st + lOst getrennt pro Jahr n = apply(lost, 1, sum) prop.trend.test(lost[,1], n, jahr) data: lost[, 1] out of n , using scores: X-squared = , df = 1, p-value = 1.550e-13 Die Proportion von /lo:st/ nimmt in späteren Jahren signifikant ab (c2(1) = 54.5, p < 0.001)

21 1. Logistic Regression: allgemeine Einführung
Literatur Baayen, R.H. Analyzing Linguistic Data: A practical introduction to Statistics. S 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. Dalgaard, P. (2002) Introductory Statistics with R. Insbesondere Kap. 11 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

22 1. Logistic Regression: allgemeine Einführung
Mit logistic Regression wird eine Regressionslinie an Proportionen angepasst werden. 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 beweisen werden, dass je höher der Proportionsdurchschnitt, umso größer die Varianz.

23 1. Logistic Regression: allgemeine Einführung
Diese (und andere) Probleme können überwunden werden: 1. wenn log-odds statt Proportionen modelliert werden y = mx + b logodds(y) = mx + b Least-squares Regression Logistic Regression 2. Wenn anstatt die Regressionslinie durch den kleinsten Abstand der Linie zu den Werten (=least squares regression) zu berechnen, die Methode der 'maximum likelihood' eingesetzt wird. Es wird nicht angenommen, dass die Werte Stichproben aus einer Normalverteilung sind. Ein Vorteil von logistic Regression:

24 Log-odds p: Proportion 'Erfolg'. p lo:st lOst n 32 8 40 0.8
(prop. lo:st) (prop. lOst) p q=1-p Odds = p/q Log-Odds = log(p/q) 4 bedeutet 4:1 (wie im Pferderennen). Die Wahrscheinlichkeit vom Erfolg (p) ist 4 Mal so groß wie Scheitern (q) 0.8 0.2 log(4) = 1.39 0.5 1

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

26 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. In 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 /lOst/, Erfolg oder Scheitern, usw.

27 Ergebnis: ein Log-Odd pro Jahr unabhängige Variable (der Jahrgang)
g = glm(lost ~ jahr, binomial) wird modelliert durch Abhängige Variable Eine 2-spaltige Matrix: Anzahl von 'ja' und 'nein' (hier /lo:st/ und /lOst/) lost high low bedeutet: logistic Regression ('binomial' weil wie in der binomialen Verteilung wir mit 2 Werten (ja/nein, Erfolg/Scheitern zu tun haben).

28 3. Abbildung der Regressionslinie
Da die Ausgabe der Regression in log-odds ist, müssen wir die Proportionen ebenfalls umwandeln, wenn wir die Regressionslinie sehen wollen. 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 ueberlagern abline(g, col=2) Die vorhergesagten Werte überlagern text(jahr, predict(g), "x", col=3)

29 Abbildung der Regression
Wir können durch die Transformation (2) die Regressionslinie auch in einem Raum von Jahr x Proportionen abbilden. Von Proportionen in log-odds L = log(p/(1-p)) log(0.8/0.2) (1) [1] Von log-odds zurück in Proportionen (2) p = exp(L)/(1+exp(L)) exp( )/(1+ exp( )) [1] 0.8

30 Abbildung der Regressionslinie
Die Regressionslinie in log-odds logodds(y) = mx + k Die entsprechende Regression in Proportionen coef(g) (Intercept) jahr k = coef(g)[1] m = coef(g)[2] plot(jahr,p) p = lost[,1]/apply(lost, 1, sum) curve(exp(m*x + k)/(1+ exp(m*x+k)), xlim=c(0, 60), add=T, col=2)

31 Abbildung der Regression
und die vorhergesagten Werte liegen wieder auf der Linie: vorher = predict(g) text(jahr, exp(vorher)/(1+exp(vorher)), "x", col=3)

32 4. Signifikanz-Test Was ist die Wahrscheinlichkeit, dass die Proportion von /lo:st/ durch den Jahrgang vorhergesagt werden kann? Lineare Regression: R2 oder adjusted R2 und ein F-test Logistic Regression: G2 und ein c2-test. G2 = Null deviance – residual deviance 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. Für ein signifikantes Ergebnis wollen wir daher, dass Null deviance hoch und Residual deviance klein ist.

33 G2 = Null deviance - residual deviance
summary(g) Null deviance: on 5 degrees of freedom Residual deviance: on 4 degrees of freedom [1] Der Test mit anova() ist ob G2 signifikant von 0 abweicht: anova(g, test="Chisq") Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL jahr e-15 Die Proportionen folgen einem Trend (c2(1)=61.2, p < 0.001)

34 5. Zwei unabhängige Variablen.
Hier sind genau dieselben Daten aber zusätzlich nach männlich-weiblich aufgeteilt. female lost n n y n n y y y In 1971 waren 26 Tokens [lost] und 15 [lo:st] lost high low von diesen 26 waren 10 von Männern und 16 von Frauen erzeugt. 8M, 7F (a) Gibt es einen Trend? Also weniger [lo:st] in späteren Jahren? (b) Ist die Proportion [lost]/[lo:st] in M und F unterschiedlich verteilt?

35 Dies ist ein Problem der mehrfachen Logistic Regression:
female lost n n y n n y y y Dies ist ein Problem der mehrfachen Logistic Regression: (also in diesem Fall eine Linie im 3D-Raum) logodds (lo:st) = b0 + b1year + b2Geschlecht logodds(lo:st) (b0 ist das Intercept, b1 und b2 die Neigungen) Geschlecht Und eine gerade Linie in einem 3D-Raum Year

36 } } Daten-Vorbereitung
pfad = "das Verzeichnis wo ich lost2.txt gespeichert habe" lost2 = as.matrix(read.table(paste(pfad, "lost2.txt", sep="/"))) high low } 1950 1960 1971 1980 1993 2005 high = Spalte 1 = /lo:st/ M low = Spalte 2 = /lOst/ } 1950 1960 1971 1980 1993 2005 J = c(jahr, jahr) G = c(rep("m",6), rep("f", 6)) J G [1] [1] m m m m m m f f f f f f W

37 Zuerst eine Abbildung…
p = lost2[,1]/apply(lost2, 1, sum) 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). interaction.plot(J, G, p) 0.0 0.4 0.8 J mean of p 10 21 30 43 55 G m f

38 mehrg = glm(lost2 ~ J + G, binomial)
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 year e-15 Wenn wir übrigens G weglassen, dann müssten wir trotz der anderen Aufteilung der Daten das gleiche Ergebnis wir vorhin bekommen:

39 mehrg = glm(lost2 ~ J + G, binomial) mehrg
Coefficients: (Intercept) J Gm Degrees of Freedom: 11 Total (i.e. Null); 9 Residual Null Deviance: Residual Deviance: AIC: 51.51 logodds(lo:st) = J G anova(mehrg, test="Chisq") Df Deviance Resid.Df Resid. Dev P(>|Chi|) NULL J e-15 G e-04 M und F unterscheiden sich in der Proportion von lo:st/lOst, c2(1) = 12.82, p < 0.001 Die Proportion von 'lo:st' nimmt in späteren Jahren ab, c2(1) = 61.12, p <

40 6. Die Interaktion zwischen 2 Variablen
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 1950 2000 prop(lo:st) 1 2 3 4 m f

41 Die Interaktion zwischen 2 Variablen
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. dies scheint aber hier nicht der Fall zu sein.

42 Die Interaktion zwischen 2 Variablen
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) anova(g, test="Chisq") Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL J e-15 G e-04 J:G d.h. die Interaktion ist nicht signifikant und J:G kann aus dem Regressionsmodell weggelassen werden.

43 Dies wird auch durch stepAIC() bestätigt:
library(MASS) stepAIC(g) AIC wird kleiner wenn wir J:G weglassen Start: AIC= 53.49 lost2 ~ J * G Df Deviance AIC - J:G <none> Df Deviance AIC <none> - G - J Wir bleiben also bei Call: glm(formula = lost2 ~ J + G, family = binomial) Residual Deviance: AIC: 51.51

44 7. Logistic Regression und zwei Ebenen
Aus dem vorigen Beispiel wird auch klar, dass ähnlich wie c2 Logistic Regression angewandt werden kann, auch wenn die Gruppe nur aus 2 Ebenen besteht. Gibt es einen signifikanten Unterschied zwischen M und F? gmf = glm(lost2 ~ G, "binomial") anova(gmf, test="Chisq") Df Deviance Resid. Df Resid. Dev P(>|Chi|) NULL G M und F unterscheiden sich in der Proportion von lo:st/lOst (c2(1) = 9.5, p < 0.002).

45 Wir bekommen dasselbe Ergebnis wenn Logistic Regression auf die entsprechende Tabelle angewandt wird: m = apply(lost2[1:6,], 2, sum) f = apply(lost2[7:12,], 2, sum) mf = rbind(m, f) rownames(mf) = c(0, 1) colnames(mf) = c("high", "low") mf lost2 high low high low = (kodiert nur nach M und F) l.mf = c(0,1) gmf2 = glm(mf ~ l.mf, "binomial") anova(gmf2, test="Chisq")

46 und man bekommt dann fast das gleiche Ergebnis mit einem c2-Test, der direkt auf die Tabelle angewandt wird: chisq.test(mf) Pearson's Chi-squared test with Yates' continuity correction data: mf X-squared = , df = 1, p-value = Ein c2-Test kann jedoch nicht verwendet werden, bei einer Gruppenanzahl von > 2 …

47 3 Gruppen jeweils 2 Ebenen
lost3 = as.matrix(read.table(paste(pfad, "alter.txt", sep="/"), header=T)) high low alt alt jung jung lost3 Hier sind dieselben Daten aufgeteilt in 2 Altersgruppen sowie M/F Gruppe 1 = Vokal = high/low Gruppe 2 = Geschl = M/F (=0/1) Gruppe 3 = Alter = alt/jung Haben (a) Alter und (b) Geschlecht einen Einfluss auf die Proportion von /lo:st/?

48 Zuerst eine Abbildung high low alt alt jung jung # Alter kodieren A = c(0, 0, 1, 1) # Geschlecht kodieren G = c(0, 1, 0, 1) prop = lost3[,1]/apply(lost3, 1, sum) interaction.plot(A, G, prop)

49 Signifikanter Einfluss auf lo:st/lOst?
0.6 1 0.5 0.4 mean of prop 0.3 0.2 0.1 A 1 Signifikanter Einfluss auf lo:st/lOst? ja nein vielleicht im Alter? im Geschlecht? ja nein vielleicht Interaktion zwischen A und G? ja nein vielleicht

50 g = glm(lost3 ~ A * G, binomial)
anova(g, test="Chisq") Df Deviance Resid Df Resid. Dev P(>|Chi|) NULL A e-16 G A:G e Es gab einen signifikanten Einfluss vom Alter (c2(1)=64.2, p < 0.001) aber nicht vom Geschlecht auf die Proportion von /lo:st/. Die Interaktion zwichen Alter und Geschlecht war nicht signifikant (p > 0.05).


Herunterladen ppt "Die Analyse von Proportionen: c2 und Logistic Regression"

Ähnliche Präsentationen


Google-Anzeigen