Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Regression (zweiter Teil)

Ähnliche Präsentationen


Präsentation zum Thema: "Regression (zweiter Teil)"—  Präsentation transkript:

1 Regression (zweiter Teil)
Jonathan Harrington

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

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

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) d i: o: 50 150 250 500 1000 2000 Time (ms)

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

7 Locusgleichung (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 500 1500 2500 bIb bb F2(Onset)=Locus, Regressionsneigung = 0 Dauer 2000 800 F2 Onset F2 Target 500 1500 2500 bIb bb F2(Target) = F2(Onset) Regressionsneigung =1 Dauer 2000 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 V-target = 600 Hz, F2in=1800 Hz, F2off=1300 Hz
2000 d F2 (Hz) d 1000 o: 500 Dauer (ms) 50 150 250 V-target = 600 Hz, F2in=1800 Hz, F2off=1300 Hz

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

11 F2 /dVd/-Daten einlesen
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" 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
pfad = "Das Verzeichnis, wo die Daten gespeichert ist" source(paste(pfad, "lmint.S", sep="/")) Die Wahrscheinlichkeit, dass Werte innerhalb der blauen Linie fallen = 95% lmint(F2targ, F2in, level=.95) möglicher Ausreißer

14 Die Neigungen vergleichen
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. Hilfeseite: siehe Slope.test.pdf in unserer Webseite.

15 # 2-spaltige Matrix der F2in-Werte
onset = cbind(F2in, F2targ) # 2-spaltige Matrix der F2fin-Werte offset = cbind(F2fin, F2targ) Slope.test(onset, offset) $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 < oder F(1,22) = 4.78, p < 0.05 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)

17 2.1. Folgen die 'residuals' einer Normalverteilung?
(siehe regression.ppt, vorige Woche) qqnorm(resid(regin)) oder plot(regin, 2) qqline(resid(regin)) 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 2.2. Test für Linearität 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. ^ plot(predict(regin), resid(regin)) plot(regin, 1) oder

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 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 acf(resid(regin))

22 2. 3. Test für Autokorrelation
1.0 95% Vertrauensintervall um 0 0.5 n = length(F2targ) ACF 2/sqrt(n) 0.0 -0.5 2 4 6 8 10 Lag 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.

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

26 2.5. Ausreißer 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)

27 3. Mehrfache Regression

28 ^ Einfache Regression ^ Mehrfache Regression In diesem Fall: 2 Regressors (x1, x2) , 2 Neigungen (b1, b2), ein Intercept, k x1 x2 y Und eine gerade Linie in einem 3D-Raum

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

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: DORSY steigt steigt/fällt DORSX nach vorne nach vorne/hinten LIPY fällt (die Lippen werden offener) steigt/fällt LIPX nach hinten (Lippen sind nicht so gerundet) nach vorne/hinten

32 Ein mehrfaches Regressionsmodell
F2 = b1DORSX +b2DORSY + b3LIPX + b4 LIPY + k ^ hat die Bedeutung F2 = ein Gewicht mal die horizontale Position der Zunge + ein anderes Gewicht mal die vertikale Position der Zunge + …. + ein Intercept ^ Mehrfache Regression in R Festlegung von b1, b2, b3, b4, k Sind alle diese Parameter notwendig? Wenn nicht, welches Parameter oder Parameterkombination hat die deutlichste lineare Beziehung zu F2?

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

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

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 R2 = 0.29, F (4, 23) = 3.74, p < 0.05.

36 Adjusted R2 R2: (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) R2 wird mit einer zunehmenden Anzahl von Regressoren größer. Daher muss in der Berechnung von R2 für die Anzahl der Regressoren kompensiert werden, wenn wir - wie in diesem Fall –Regressionslinien mit unterschiedlichen Anzahlen von Regressoren miteinander vergleichen wollen.

37 Adjusted R2 kann auch negativ sein ist weniger als R2 Adjusted R2 =
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

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 R2) library(MASS) stepAIC(regm)

39 Start: AIC= F2 ~ DORSX + DORSY + LIPX + LIPY Df Sum of Sq RSS AIC - DORSX - DORSY - LIPX - LIPY <none> 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 <none> - 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 <none> - 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 R2 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 ein Koeffizient ^ ein Regressor, 2 Koeffiziente ^ bestimmt die Krümmung; b2 ist näher an 0 b2 ist positiv b2 ist negativ

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) pfad = "Das Verzeichnis, wo die Daten gespeichert ist" edat = read.table(paste(pfad, "epg.txt", sep="/")) attach(edat) plot(COG, F2)

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 summary(regp) Beide Komponente, COG und COG2 der Parabel scheinen notwendig zu sein, um die F2-COG Beziehungen zu modellieren. 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

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


Herunterladen ppt "Regression (zweiter Teil)"

Ähnliche Präsentationen


Google-Anzeigen