Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Regression (zweiter Teil) Jonathan Harrington. 1. Regression und die Locus-Theorie 2. Voraussetzungen für die Durchführung einer Regression 3. Mehrfache.

Ähnliche Präsentationen


Präsentation zum Thema: "Regression (zweiter Teil) Jonathan Harrington. 1. Regression und die Locus-Theorie 2. Voraussetzungen für die Durchführung einer Regression 3. Mehrfache."—  Präsentation transkript:

1 Regression (zweiter Teil) Jonathan Harrington

2 1. Regression und die Locus-Theorie 2. Voraussetzungen für die Durchführung einer Regression 3. Mehrfache (multiple) Regression: zwei oder mehrere Regressoren Neigungen von Regressionslinien miteinander vergleichen 4. Polynomiale Regression

3 /g/ vor hinteren Vokalen: keine einheitliche Locus-Frequenz F2-Transitionenen und die Locus-Theorie Die F2-Transitionen, die die Artikulationsstelle auditiv vermitteln, sind durch eine Kombination vom Locus und der Vokalzielposition voraussagbar Frequenz Dauer i b F2-Lokus /b/ ca. 700 Hz d /d/ ca Hz g /g/ vor vorderen Vokalen: 3000 Hz

4

5 In der gesprochenen Sprache weichen F2-Onsets (F2- Offsets) von der theoretischen Locusfrequenz ab, teilweise wegen antizipatorischer oder perzeveratorischer V-auf-K Koartikulation. F2 (Hz) di: o: d d d Time (ms) i: o:

6 Max. V auf K Koartikulation Dauer Dauer b I b b b Keine V-auf-K Koartikulation F2-Locus und V-auf-K Koartikulation daher ist der F2 Target vom F2 Onset nicht vorhersagbar F2 Target ist vom F2 Onset vorhersagbar Kein Locus Locus ist vom Vokal unabhängig

7 (Regressionlinie im Raum von F2 Target x F2 Onset) Die Neigung liegt zwischen 0 und 1 Je steiler (näher an 1) die Neigung, umso bedeutender die V auf K Koartikulation Locusgleichung bIbbIbb b F2(Onset)=Locus, Regressionsneigung = 0 Dauer F2 Onset b I b b b F2 Target bIbbIb b b F2(Target) = F2(Onset) Regressionsneigung =1 Dauer F2 Target F2 Onset

8 V-auf-K Koartikulation in /dV/ im Vgl. zu /Vd/ Ein Sprecher (australisch Englisch) erzeugte /dVd/ Silben, fuer verschiedene Vokale. In welchen Reihenfolgen, initiale /dV/, oder finale /Vd/, ist die V-auf-K Koartikulation wahrscheinlich am bedeutendsten: initial oder final?

9 F2 (Hz) o: d d Dauer (ms) V-target = 600 Hz, F2in=1800 Hz, F2off=1300 Hz

10 /dV//Vd/ F2-Target F2-Onset F2-Offset Welche Regressionslinie müsste steiler sein? dV Vd time (ms) time (ms) 1 F2-verschiedene Vokale

11 pfad = "Das Verzeichnis, wo die Daten gespeichert ist" fdat = read.table(paste(pfad, "dform.txt", sep="/"), header=T) attach(fdat) names(fdat) "lab" "F2targ" "F2in" "F2fin" F2 /dVd/-Daten einlesen plot(F2targ, F2in, type="n", xlab="F2-targ", ylab="F2-initial") text(F2targ, F2in, lab) Regressionslinie berechnen ^ regin = lm(F2in ~ F2targ)

12 überlagerte Regressionslinie abline(regin) Dasselbe für F2-Offset ^ regfin = lm(F2fin ~ F2targ) Koeffiziente F2-Initial: coef(regin) (Intercept) F2targ coef(regfin) Intercept) F2targ Koeffiziente F2-Final:

13 Nebenbei: Vorhersage-Intervall lmint(F2targ, F2in, level=.95) Die Wahrscheinlichkeit, dass Werte innerhalb der blauen Linie fallen = 95% pfad = "Das Verzeichnis, wo die Daten gespeichert ist" source(paste(pfad, "lmint.S", sep="/")) möglicher Ausreißer

14 Die Neigungen vergleichen Hilfeseite: siehe Slope.test.pdf in unserer Webseite. pfad = "Das Verzeichnis, wo die Daten gespeichert ist" source(paste(pfad, "Slope.test.S", sep="/")) args(Slope.test) # siehe unten, Hilfseite function (...)… bedeutet: beliebig viele Argumente. jedes Argument soll eine zweispaltige Matrix sein. Die y-Werte (F2in oder F2fin) in Spalte 1, die x-Werte (F2-targ) in Spalte 2. Slope.test(mat1, mat2) die Regressionslinie für die Daten in mat1 wird berechnet; die Regressionslinie für die Daten in mat2 wird berechnet; die Neigungen dieser beiden R-Linien werden statistisch miteinander verglichen.

15 $separate r-sq F ratio df df prob. line fits data intercept slope first.out first.out $combined F ratio Probability of them being DIFFERENT df df intercept slope Die Neigungen der Regressionslinien unterscheiden sich F=4.78, df = 1, 22, p < 0.05 oder F(1,22) = 4.78, p < 0.05 onset = cbind(F2in, F2targ) offset = cbind(F2fin, F2targ) Slope.test(onset, offset) # 2-spaltige Matrix der F2in-Werte # 2-spaltige Matrix der F2fin-Werte Da sich die Regressionslinien signifikant unterscheiden, ist die V-auf-K Koartikulation unterschiedlich in /Vd/ im Vergleich zu /dV/.

16 2. Voraussetzung für die Durchführung der Regression siehe vor allem und E-Buch in der LMU Autor = Verzani Kap. 10)http://www.duke.edu/~rnau/testing.htm

17 qqnorm(resid(regin)) qqline(resid(regin)) plot(regin, 2) 2.1. Folgen die 'residuals' einer Normalverteilung? oder (siehe regression.ppt, vorige Woche) shapiro.test(resid(regin)) Shapiro-Wilk normality test data: resid(regin) W = , p-value = Zusätzlicher Test Die Verteilung der residuals weicht nicht signifikant von einer Normalverteilung ab Die Werte sollen nicht allzusehr von der geraden Linie abweichen

18 2.2. Ist Linearität erkennbar? Sind wir sicher, dass die y/x Werte wirklich mit einer Linie modelliert werden können? oder vielleicht nicht besser mit einer Parabel?

19 oderplot(predict(regin), resid(regin))plot(regin, 1) Die Werte in einer Abbildung der residuals als Funktion der eingeschätzen Werte, y, sollten mehr oder weniger auf einer randomisierten Weise um die Linie residuals = 0 verteilt sein Test für Linearität ^

20 2. 3. Keine Autokorrelation (die aufeinanderfolgenden Werte in der x oder y- Achse müssen voneinander unabhängig sein). Ein gutes Beispiel von autokorrelierten Daten: ein stimmfahfes Sprachsignal Man soll überhaupt sehr vorsichtig sein, eine Regression auf Daten mit einer Zeit-Achse anzuwenden (da Werte als Funktion der Zeit sich oft wiederholen, also sie sind oft miteinander korreliert).

21 2. 3. Test für Autokorrelation Die Autokorrelation der residuals berechnen acf(resid(regin)) Autokorrelation lag k inwiefern sind die ersten n-k Werte des Signals mit den letzten n-k Werte korreliert? zB Autokorrelation lag 1 bei einem 4-Punkt Signal: die ersten 3 Werte werden mit den letzten 3 Werte verglichen Autokorrelation lag 0: kann ignoriert werden: sie hat immer den Wert 1. Alle anderen lag-Werte variieren zwischen -1 und 1

22 95% Vertrauensintervall um 0 n = length(F2targ) 2/sqrt(n) Insbesondere die Werte bei lag 1 und 2 beobachten: diese sollten in jedem Fall innerhalb des Vertauensintervalls liegen. Wenn die meisten ACF-Werte innerhalb der blauen Linien liegen, gibt es keine Autokorrelation Test für Autokorrelation Lag ACF

23 2. 4. Konstante Varianz oder 'homoscedasticity' der Residuals? Insbesondere sollten die residuals nicht wesentlich größer am Anfang/Ende sein, sondern auf eine randomisierte Weise um die 0 Linie verteilt sein. plot(resid(regin))

24 2.5. Ausreißer Ein einziger Ausreißer vor allem vom Mittelpunkt weit entfernt kann die Regressionslinie deutlich beeinflussen. Ausreißer die eventuell (aber nicht unbedingt) die Regressionslinie stark beeinflussen, können mit dem sog. Cookes Distance aufgedeckt werden plot(regin, 4) Die Werte 1 und 12 sind vielleicht solche Ausreißer, also onset[c(1,12),]

25 plot(F2targ, F2in, cex = 10*sqrt(cooks.distance(regin))) text(F2targ, F2in, as.character(1:length(F2in))) Die Cookes-Entfernungen und daher Ausreißer könnten auch mit einem sogenannten 'bubble plot' (siehe Verzani) abgebildet werden 2.5. Ausreißer Ausreißer

26 Man könnte dann prüfen, ob sich die Regressionlinien signifikant mit/ohne Ausreißer unterscheiden: onsetohne = onset[-c(1,12),] Slope.test(onset, onsetohne) $combined F ratio Probability of them being DIFFERENT df df intercept slope detach(fdat) 2.5. Ausreißer

27 3. Mehrfache Regression

28 Mehrfache Regression ^ Einfache Regression ^ x1x1 x2x2 y Und eine gerade Linie in einem 3D-Raum In diesem Fall: 2 Regressors (x 1, x 2 ), 2 Neigungen (b 1, b 2 ), ein Intercept, k

29 Es können auch mehrere Regressoren sein… ^ Eine gerade Linie in einem n-dimensionalen Raum n verschiedene Neigungen, ein Intercept Mehrfache Regression

30 Einige Daten pfad = "Das Verzeichnis, wo die Daten gespeichert ist" ydata = read.table(paste(pfad, "ydata.txt", sep="/"), header=T) attach(ydata) names(ydata) [1] "F2" "DORSY" "DORSX" "LIPY" "LIPX" [y] Vokale, alle Werte zum zeitlichen Mittelpunkt DORSX, DORSY (horizontale und vertikale Position des Zungendorsums) LIPX, LIPY (horizontale Verlagerung und vertikale Position der Unterlippe)

31 Wir wollen versuchen, den F2-Wert aus diesen artikulatorischen Parametern vorherzusagen. Einige informellen Vorhersagen F2 steigt wenn: DORSYsteigt DORSXnach vorne LIPY LIPX steigt/fällt nach vorne/hinten fällt (die Lippen werden offener) nach hinten (Lippen sind nicht so gerundet) steigt/fällt nach vorne/hinten

32 F2 = b 1 DORSX +b 2 DORSY + b 3 LIPX + b 4 LIPY + k ^ Ein mehrfaches Regressionsmodell Mehrfache Regression in R Festlegung von b 1, b 2, b 3, b 4, k Sind alle diese Parameter notwendig? Wenn nicht, welches Parameter oder Parameterkombination hat die deutlichste lineare Beziehung zu F2? hat die Bedeutung F2 = ein Gewicht mal die horizontale Position der Zunge + ein anderes Gewicht mal die vertikale Position der Zunge + …. + ein Intercept ^

33 pairs(ydata) hoch tief vorne hinten* oben unten hinten vorne * Richtung Glottis

34 F2 = b 1 DORSX +b 2 DORSY + b 3 LIPX + b 4 LIPY + k ^ regm = lm(F2 ~ DORSX+DORSY+LIPX+LIPY) coef(regm) Normalverteilung der Residuals? plot(regm, 2) shapiro.test(resid(regm)) usw. wie für einfache Regression Koeffiziente

35 summary(regm) Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) DORSX DORSY LIPX LIPY Residual standard error: 83 on 23 degrees of freedom Multiple R-Squared: , Adjusted R-squared: F-statistic: on 4 and 23 DF, p-value: F2 kann mit einer multidimensionalen Regressionslinie aus diesen artikulatorischen Parametern modelliert werden: Adjusted R 2 = 0.29, F (4, 23) = 3.74, p < 0.05.

36 Adjusted R 2 R 2 : (siehe vorige Vorlesung) ist die Proportion der Varianz, die durch die Regressionslinie erklärt werden kann (variiert zwischen 0 und 1; 1 bedeutet alle Werte liegen auf der Linie) Daher muss in der Berechnung von R 2 für die Anzahl der Regressoren kompensiert werden, wenn wir - wie in diesem Fall –Regressionslinien mit unterschiedlichen Anzahlen von Regressoren miteinander vergleichen wollen. R 2 wird mit einer zunehmenden Anzahl von Regressoren größer.

37 Adjusted R 2 Adjusted R 2 = n ist die Anzahl der Stichproben, k ist die Anzahl der Regressoren. 1-( ) * ( (n-1)/(n-4-1) ) n = length(F2) [1] Für diesen Fall kann auch negativ sein ist weniger als R 2

38 Modell-Prüfung durch AIC (Akaike's Information Criterion) Mit der stepAIC() Funktion in library(MASS) wird geprüft, ob für die Regression wirklich alle (in diesem Fall 4) Regressoren benötigt werden. Je kleiner AIC, umso nützlicher die Kombination für die Regression (umso höher adjusted R 2 ) library(MASS) stepAIC(regm)

39 Start: AIC= F2 ~ DORSX + DORSY + LIPX + LIPY Df Sum of Sq RSS AIC - DORSX DORSY LIPX LIPY sortiert nach AIC. Dies ist der AIC-Wert, wenn aus diesem Modell DORSX weggelassen wäre. Daher wird im nächsten Modell DORSX weggelassen. Vor allem ist dieser AIC Wert weniger als AIC mit allen Parametern (= ).

40 Step: AIC= F2 ~ LIPX + LIPY + DORSY Df Sum of Sq RSS AIC - DORSY LIPY LIPX AIC ist am kleinsten, wenn aus diesem Modell DORSY weggelassen wird. Und dieser Wert ohne DORSY ist kleiner als derjenige mit LIPX+LIPY+DORSY zusammen. Daher wird DORSY weggelassen…

41 Step: AIC= F2 ~ LIPX + LIPY Df Sum of Sq RSS AIC LIPX LIPY Wenn wir entweder LIPX oder LIPY weggelassen, dann wird AIC höher im Vergleich zu AIC mit beiden Parametern zusammen. Daher bleiben wir bei F2 ~ LIPX + LIPY

42 Dieses Modell F2 ~ LIPX + LIPY müsste auch den höchsten adjusted R 2 haben. Prüfen, zB: summary(regm)summary(lm(F2~LIPX+LIPY)) Adjusted R-squared: Adjusted R-squared: Also wird die Variation in F2 in [y] am meisten durch die horizontale und vertikale Position der Unterlippe erklärt.

43 4. Polynomiale Regression ^ ein Regressor, 2 Koeffiziente ^ ein Regressor ein Koeffizient bestimmt die Krümmung; b 2 ist negativ b 2 ist positiv b 2 ist näher an 0

44 ^ ein Regressor, n Koeffiziente In allen Fällen handelt es sich um Abbildung/Beziehungen im 2D-Raum (da wir mit einem Regressor zu tun haben).

45 detach(ydata) attach(edat) plot(COG, F2) pfad = "Das Verzeichnis, wo die Daten gespeichert ist" edat = read.table(paste(pfad, "epg.txt", sep="/"))

46 ^ regp = lm(F2 ~ COG + I(COG^2)) coef(regp) (Intercept) COG I(COG^2) ^ plot(COG, F2) Die Parabel überlagern curve( *x *x^2, add=T)

47 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) * COG e-13 *** I(COG^2) e-09 *** --- Signif. codes: 0 '***' '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: on 42 degrees of freedom Multiple R-Squared: , Adjusted R-squared: F-statistic: on 2 and 42 DF, p-value: < 2.2e-16 summary(regp) Beide Komponente, COG und COG 2 der Parabel scheinen notwendig zu sein, um die F2-COG Beziehungen zu modellieren.

48 mit stepAIC() kann wieder festgestellt werden, ob wir den COG 2 Parameter wirklich benötigen: stepAIC(regp) Start: AIC= F2 ~ COG + I(COG^2) Df Sum of Sq RSS AIC I(COG^2) COG Call: lm(formula = F2 ~ COG + I(COG^2)) Coefficients: (Intercept) COG I(COG^2) Scheinbar ja (da AIC höher wird, wenn entweder COG oder COG 2 aus dem Modell weggelassen werden).


Herunterladen ppt "Regression (zweiter Teil) Jonathan Harrington. 1. Regression und die Locus-Theorie 2. Voraussetzungen für die Durchführung einer Regression 3. Mehrfache."

Ähnliche Präsentationen


Google-Anzeigen