# ggplot Abbildungen mit 2 abhängigen Variablen. #Zur Erinnerung: am besten bei solchen Fragen wie in f3.R diese nicht nur mit einer #Abbildung, sondern auch mit einem verständlichen, die Abbildung interpretierenden #Text beantworten. #Erinnerung 2: Eine Interaktion liegt vor, # wenn zwei (oder mehr) Größen (unabhängige Variablen; auch Prädiktoren genannt) # eine dritte Größe (abhängige Variable; Kriterium) voraussagen bzw. beeinflussen, # und hierbei die Wirkung der einen unabhängigen Variable # von der Ausprägung der anderen abhängt (siehe Beispiele). library(ggplot2) # Für den Data-Frame: zweit = read.table(file.path(pfadu, "zweit.df.txt")) # prüfen Sie anhand einer Abbildung, ob Ses (social economic status) und G (Gender) # einen Einfluss auf l2score (das Ergebnis von einem Test in einer Fremdsprache) ausüben. # y ~ x1 + x2 # Wird y von x1 und/oder x2 beeinflusst? # y:l2score. x1: Ses. x2: G ggplot(zweit) + aes(y = l2score, x = G) + geom_boxplot() # y ~ x1 + x2 ggplot(zweit) + aes(y = l2score, x = G, col = Ses) + geom_boxplot() ggplot(zweit) + aes(y = l2score, x = G) + geom_boxplot() + facet_wrap(~Ses) ggplot(zweit) + aes(y = l2score, x = Ses) + geom_boxplot() + facet_wrap(~G) ggplot(zweit) + aes(y = l2score, x = Ses, col = Ses) + geom_boxplot() + facet_wrap(~G) # l2score wird von Ses, aber nicht von Gender beeinflusst und es gab # vermutlich keine Interaktion zwischen Ses und Gender (da das Muster, das von Ses # verursacht wird, ähnlich in den Gender-Stufen F und M aussieht). # Zusätzliche Info (nicht Teil der Antwort): # Wie Sie sehen können, sind die Stufen des Faktors Ses # alphabetisch geordnet dargestellt (high, low, mid); # sofern es -wie hier- eine Art "natürlicher" Ordnung # gibt, es es zulässig und vernünftig, diese Reihenfole zu ändern (mit Dank an D.Huß): levels(zweit$Ses) # [1] "high" "low" "mid" #Am einfachsten ändern mit: zweit$Ses = factor(zweit$Ses,levels=c("low", "mid", "high")) levels(zweit$Ses) # nun [1] "low" "mid" "high" #keine Sorge, die Faktor wird dadurch nicht verändert, nur die Darstellungsreihenfolge ggplot(zweit) + aes(y = l2score, x = Ses, col = Ses) + geom_boxplot() + facet_wrap(~G) #Es gibt auch andere Wege, z.B.: #(zuerst wieder einlesen, um Ursprungszustand wiederherzustellen) zweit = read.table(file.path(pfadu, "zweit.df.txt")) zweit$Ses = factor(zweit$Ses, levels = levels(zweit$Ses)[c(2,3,1)]) levels(zweit$Ses) #oder als "ordered factor" zweit = read.table(file.path(pfadu, "zweit.df.txt")) zweit$Ses = ordered(zweit$Ses,levels=c("low","mid","high")) # = fast das gleiche wie oben mit factor() levels(zweit$Ses) #[1] "low" "mid" "high" #zusätzlich ist zweit$Ses nun tatsächlich "ordered" zweit$Ses #Levels: low < mid < high class(zweit$Ses) #[1] "ordered" "factor" ######################################################################################## ######################################################################################## ######################################################################################## # Für diese Daten: vok = read.table(file.path(pfadu, "vok.txt")) # Prüfen Sie, inwiefern der Vokal und das Geschlecht (Gen) einen Einfluss auf F2 haben. # Wird y ~ x1 + x2 # y (F2, numerisch) # x1 (Vokal, kat.) # x2 (Gen, kat.) ggplot(vok) + aes(y = F2, x = Vokal, col = Gen) + geom_boxplot() #oder ggplot(vok) + aes(y = F2, x = Gen, col = Vokal) + geom_boxplot() #oder z.B. ggplot(vok) + aes(y = F2, x = Vokal) + geom_boxplot() + facet_wrap(~Gen) # 1. Wird F2 vom Vokal beeinflusst? # Ja. Weil (I, E) > a # 2. Wird F2 von Geschlecht beeinflusst? # Eindeutig ja. # 3. Ist der Einfluss vom Vokal auf F2 derselbe für beide Geschlechter? # Ist der Einfluss von Geschlecht auf F2 derselbe für alle 3 Vokale? # Nein. Der Abstand /I-E/ zu /a/ ist größer für Frauen als für Männer (= eine Interaktion) ######################################################################################## ######################################################################################## ######################################################################################## # Für die Daten in diesem Data-Frame: preasp = read.table(file.path(pfadu, "preasp.txt")) # erstellen Sie eine Abbildung, um zu prüfen, inwiefern das Verhältnis der Vokaldauer (vdur) dividiert durch Verschlussdauer (clodur) von der Artikulationsstelle (cplace) und von der Region (region) beeinflusst wird. ggplot(preasp) + aes(y = vdur/clodur, x = cplace, col = region) + geom_boxplot() ggplot(preasp) + aes(y = vdur/clodur, x = cplace, col = cplace) + geom_boxplot() + facet_wrap(~region) # Einfluss von cplace? # Je weiter hinten die Artikulationsstelle, um so höher ist y (vdur/clodur) # Einfluss von Region? # Nein. # Interaktion zwischen cplace und region? # Nein. ######################################################################################## ######################################################################################## ######################################################################################## # Für die Daten in diesem Data-Frame aus der australisch-englischen Varietät: alvtap = read.table(file.path(pfadu, "alvtap.txt")) # wurde transkribiert, ob ein Sprecher einen Tap produziert oder nicht (Faktor K). # Wird diese Wahl vom Alter und von der Herkunft (Her: E=England, I = Irland) beeinflusst? # y ~ x1 + x2 # K ~ Alter + Her (alle kategorial, daher barchart) ggplot(alvtap) + aes(fill = K, x = Alter) + facet_wrap(~Her) + geom_bar() #oder proportional darstellen mit "position="fill" " in "geom_bar()" ggplot(alvtap) + aes(fill = K, x = Alter) + facet_wrap(~Her) + geom_bar(position = "fill") # Einfluss von x1 (Alter)? # Ja. # Einfluss von x2 (Her)? # Weiss man noch nicht - eventuell aber keinen starken... # Interkation zwischen x1 und x2? # = Ist der Einfluss vom Alter auf K (= ob man einen Tap produziert oder nicht) derselbe für die Engländer und Iren? # Der Einfluss vom Alter auf K ist etwas größer bei den Iren als bei den Engländern (deutet auf Interaktion hin) ######################################################################################## ######################################################################################## ######################################################################################## # In diesem Data-Frame kj = read.table(file.path(pfadu, "kj2.txt")) # wurde geprüft, ob Sprecher Wörter wie 'string' mit einem /s/ oder mit einem /ʃ/ produzieren (Faktor Fric). Prüfen Sie, inwiefern diese Wahl vom Geschlecht (Gender) und von der Satzbetonung (Emphatic) beeinflusst wird. ggplot(kj) + aes(fill = Fric, x = Gender) + geom_bar() + facet_wrap(~Emphatic) #oder ggplot(kj) + aes(fill = Fric, x = Emphatic) + geom_bar() + facet_wrap(~Gender) # 1. Es gibt einen Einfluss von Gender # 2. Es gibt einen Einfluss von Emphatic (mehr 'S' in less als in more) # 3. Interaktion: der Unterschiede zwischen M und W in der # Häufigkeit der S-Produktion ist ausgeprägter in 'more' als in 'less'. ######################################################################################## ######################################################################################## ######################################################################################## # In diesem Data-Frame: vlax = read.table(file.path(pfadu, "vlax.txt")) # erstellen Sie eine Abbildung mit -F2 auf der horizontalen Achse und -F1 auf der vertikalen Achse und mit einer unterschiedlichen Farbkodierung für die verschiedenen Vokale (Faktor V). Wie können Sie Ihre Abbildung modifizieren, um zusätzlich diese Vokalräume getrennt für die beiden Versuchspersonen (Faktor Vpn) darzustellen? #Eine untypische Frage für dieses Seminar (weshalb kein Antworttext nötig ist), # aber ein typischer Anwendungsfall für Phonetiker, die Vokalräume abbilden wollen, # und zwar auf solche Weise, dass die Vokale in etwa die Positionen haben, # die sie in der IPA-Tabelle im Vokalviereck haben # (daher die Frage nach -F2 und -F1, da # F1 negativ mit der Zungenhöhe (offen...geschlossen) korreliert (= -F1 auf der y-Achse) # und F2 negativ mit der Zungenlage (hinten...vorne) korreliert (= -F2 auf der x-Achse)) ggplot(vlax) + aes(x = -F2, y = -F1, col = V) + geom_point() #Versuchsperson als "Faktor" hinzufügen (= nach Vpn trennen) ggplot(vlax) + aes(x = -F2, y = -F1, col = V) + geom_point() + facet_wrap(~Vpn) #oder, da negative Werte eigentlich gar nicht vorkommen, # ohne Negation von F1 und F2, aber dennoch gedrehten Achsen # durch hinzufügen von scale_x_reverse() und scale_y_reverse() ggplot(vlax) + aes(x = F2, y = F1, col = V) + scale_x_reverse() + scale_y_reverse() + geom_point() ggplot(vlax) + aes(x = F2, y = F1, col = V) + scale_x_reverse() + scale_y_reverse() + geom_point() + facet_wrap(~Vpn)