library(lattice)
library(ez)
###########################################################################
# 1. 'Beispiele'
###########################################################################

############################# 'gepaarte Stichproben'
plosiv.df = read.table(file.path(pfadu, "plosiv.df.txt"))

# 15 Sprecher produzierten /p/ und /t/ Plosive.
# Die Energie-Werte der Plosive wurde gemessen. Werden die
# Energie-Werte von der Artikulationsstelle beeinflusst?
# 1. Verifizieren, dass die Werte gepaart sind
# 2. Unterschiede berechnen (da gepaart)
# 3. Boxplot davon erstellen
# 4. Prüfen, ob der Unterschied einer Normalverteilung folgt
# 5. Test anwenden
#
#
head(plosiv.df); dim(plosiv.df)
# 1. Sind die Werte gepaart?
with(plosiv.df, table(Vpn, K))
# 2. Unterschiede pro Paar
unt = aggregate(dB ~ Vpn, diff, data = plosiv.df)
# 3.
bwplot(unt$dB)
# 4. Folgen diese Unterschiede einer Normalverteilung?
 shapiro.test(unt$dB)
#	Shapiro-Wilk normality test
#data:  unt$dB
# W = 0.8775, p-value = 0.04352
# Die Wahrscheinlichkeit, dass die Unterschiede
# normvalverteilt sind: 0.04352.
# Wenn unter 0.05, eher den Wilcox-Test anwenden.
# 5. entweder
t.test(unt$dB)
# Artikulationsstelle hatte einen Einfluss auf die Energie (t[14] = 3.1, p < 0.01)
# oder (in diesem Fall)
wilcox.test(unt$dB)
# Artikulationsstelle hatte einen Einfluss auf die Energie 
# die dB-werte wurde signifikant (V = 90.5, p < 0.05) von der Artikulationsstelle beeinflusst
# (Wilcoxon signed rank test, V = 90.5, p < 0.05)

# Wenn wir den Ausreißer entfernen
# Konsistent mit Abbildung 1 hatte die Artikulationsstelle  einen Einfluss auf die Energie (t[13] = 5.5, p < 0.001)





############################# 'ungepaarte Stichproben'
alter.df = read.table(file.path(pfadu, "alter.df.txt"))
# 1. Verifizieren, dass die Werte ungepaart sind
# 2. Boxplot davon erstellen
# 3. Prüfen, ob die beiden Gruppen einer Normalverteilung folgt
# 4. Test anwenden
# 
# 1. Bei jedem Eintrag muss [1, 0] oder [0, 1] vorkommen
# d.h. jede Vpn belegt eine der beiden Stufen
with(alter.df, table(Vpn, Alter))
# 2.
bwplot(grund ~ Alter, data = alter.df)
# 3.
with(alter.df, tapply(grund, Alter, shapiro.test))
# 4.
# Wenn nichts gegen einer Normalverteilung spricht
t.test(grund ~ Alter, data = alter.df)
# Der Einfluss vom Alter auf die Grundfrequenz ist nicht signifikant (t[14.8 = 1.7], p > 0.05)
# Wenn es unwahrscheinlich ist, dass eine oder beide
# Verteilungen einer Normalverteilung folgt/folgen
wilcox.test(grund ~ Alter, data = alter.df)
# Der Einfluss vom Alter auf die Grundfrequenz ist nicht signifikant

###########################################################################
# 2. 'Übungen'
###########################################################################
# 1. 
ger = read.table(file.path(pfadu, "ger.df.txt"))
# Die Bewegung (mm) des Kiefers wurde von 10 Sprechern mit zwei verschiedenen Geräten erhoben.
# Haben die Geräte einen Einfluss auf die Messwerte?
# Testen ob die Werte gepaart sind
with(ger, table(Vpn, Geraet))
# Differenzen berechnen
ger.d = aggregate(kiefer ~ Vpn, diff, data = ger)
# sind diese Werte normalverteilt?
shapiro.test(ger.d$kiefer)
# oder
with(ger.d, shapiro.test(kiefer))
# Bild
bwplot(~kiefer, data = ger.d)
# T-test
t.test(ger.d$kiefer)
# oder
with(ger.d, t.test(kiefer))
# Konsistent mit der Abbildung wurde die Kieferposition signifikant (t[9] = 5.2, p < 0.001)


# 2.
vok = read.table(file.path(pfadu, "vokdauer.df.txt"))
#  Die Dauern von einem /a/ Vokal wurden von 12 männlichen 
# und 12 weiblichen Versuchspersonen gemessen.
# Hat Geschlecht einen Einfluss auf die Vokaldauer?
w = with(vok, table(Vpn, G))
# Hier ist ein Bild
bwplot(d ~ G, data = vok)
# testen ob normalverteilt
with(vok, tapply(d, G, shapiro.test))
t.test(d ~ G, data = vok)
# Konsistent mit der Abbildung wurde die Dauer  signifikant (t[22.0] = 2.6, p < 0.05) vom Geschlecht beeinflusst.


# 3. 
form = read.table(file.path(pfadu, "f2.int.df.txt"))
# 25 Versuchspersonen produzierten /ipi/ und
# F2 wurde im Vokal kurz vor dem /p/ und kurz nach dem /p/ gemessen.
# Hat die Position (ob davor oder danach) einen Einfluss auf F2?
# Prüfen ob gepaart
with(form, table(Vpn, Pos))

# Differenz (da gepaart)
u = aggregate(F2 ~ Vpn, diff, data = form)

# Ein Boxplot dieser Differenzen malen
bwplot(u$F2)
# oder
bwplot(~F2, data = u)
# t-test
t.test(u$F2)
# F2 wird von der Position signifikant beeinflusst (t[24] = 2.4, p < 0.05).


# 4. 
# 10 Versuchspersonen hörten in einem Perzeptionsexperiment Silben mit 
# ausgedehnten Vokalen. Die Silbendauern in der Sprachproduktion wurden vor
# und nach dem Perzeptions-Experiment gemessen. Hatte die Wahrnehmung der verlängerten Silben
# einen Einfluss auf die Silbendauer in der Sprachproduktion?

# Versuchsperson:                  S1  S2  S3  S4  S5  S6  S7  S8  S9  S10
# Silbendauer vor dem Experiment: 102 107 137 132 122 132 102 127 150 147
# Silbendauer nach dem Experiment: 170 128 144 114 173 125 159 133 163 187
davor = c(102, 107, 137, 132, 122, 132, 102, 127, 150, 147)
danach = c(170, 128, 144, 114, 173, 125, 159, 133, 163, 187)
# abhängige Variable
dauer = c(davor, danach)
# unabhängige Variable (um zu wissen, welches ist davor, welches ist danach)
a = rep("davor", 10)
b = rep("danach", 10)
pos = c(a, b)
pos = c(rep("davor", 10), rep("danach", 10))
rep(paste("S", 1:10, sep=""),  2)
p = paste("S", 1:10, sep="")
vpn = rep(p, 2)
df = data.frame(Dauer = dauer, Vpn = factor(vpn), Pos = factor(pos))
with(df, table(Vpn, Pos))
unterschied = aggregate(Dauer ~ Vpn, diff, data = df)
# Bild malen
bwplot(unterschied$Dauer)

# Shapiro-test. Sind die Daten konsistent mit einer Normalverteilung?
shapiro.test(unterschied$Dauer)
t.test(unterschied$Dauer)
# Konsistent mit der Abbildung wird die Silbendauer von dem Perzeptionsexperiment signifikant beeinflusst (t[9] = 2.6, p < 0.05)

# 5. 
# F2-Werte wurden in der Erzeugung von /ɪ/ von 12 Sprechern des Standardösterreichischen
# und 15 des Standarddeutschen gemessen. Hatte Dialekt einen Einfluss auf F2?

# F2-Werte (Standard-Österreich):	2338 2159 2338 2115 2136 2106 2547 2080 2182 1841 2470 2295
# F2-Werte (Standard-Deutsch):	2184 1994 2103 2139 2105 2112 2079 1997 1942 2108 2053 2048 2153 2060 2150
Af2 = c(2338, 2159, 2338, 2115, 2136, 2106, 2547, 2080, 2182, 1841, 2470, 2295)
Df2 = c(2184, 1994, 2103, 2139, 2105, 2112, 2079, 1997, 1942, 2108, 2053, 2048, 2153)
# abhängige Variable
F2 = c(Af2, Df2)
# between-Faktor
dial = c(rep("A", length(Af2)), rep("D", length(Df2)))
# Versuchspersonen
vpn = paste("S", 1:length(dial), sep="")
# data-frame
dial.df = data.frame(F2, D = factor(dial), Vpn = factor(vpn))
# Bild. Eine Tendenz für F2 in Österreich höher zu sein
bwplot(F2 ~ D, data = dial.df, ylab = "F2 (Hz)", xlab = "Dialektgruppe")
densityplot(~F2, groups = D, data = dial.df, auto.key=T, xlab = "F2 (Hz)")
# t-test
t.test(F2 ~ D, data = dial.df)
# F2 wurde signifikant von Dialekt beeinflusst (t[13.7] = 2.4, p < 0.05)
# Lösung mit ANOVA
ezANOVA(dial.df, .(F2), .(Vpn), between = .(D))
# F2 wurde signifikant von Dialekt beeinflusst (F[1, 23] = 6.0, p < 0.05) (Jedoch soll dies mit dem t-test durchgefürht werden, dan die Anzahl der Vpn unterschiedlich in den beiden Gruppen ist - daher die Warnmeldung)


# 6. Für diese Daten:
zweit = read.table(file.path(pfadu, "zweit.df.txt"))
dim(zweit)
# nahmen Versuchspersonen (Vpn) an einem Test in einer zweiten Sprache teil (l2score). Prüfen Sie durch eine Abbildung und statistischen Test, ob l2score durch Geschlecht (G) beeinflusst wird.
# Geschlecht ist eindeutig between. Gibt es aber einen Wert pro Sprecher?
with(zweit, table(Vpn, G))
# Abbildungen: kaum Unterschiede
bwplot(l2score ~ G, data = zweit, ylab = "Score", xlab = "Geschlecht")
densityplot(~l2score, groups = G, data = zweit, auto.key=T ,xlab = "Score")
# Lösung mit t-test erstaunlicherweise signifikant - aber eventuell nur weil es so viele Sprecher gibt
t.test(l2score ~ G, data = zweit)
# l2score wurde signifikant vom Geschlecht beeinflusst (t[117.6] = 2.1, p < 0.05)
# Lösung mit ANOVA
ezANOVA(zweit, .(l2score), .(Vpn), between = .(G))
# l2score wurde signifikant vom Geschlecht beeinflusst (t[1, 118] = 4.3, p < 0.05)


# Die Reaktionszeiten um ein Wort zu identifizieren wurde in alten und jungen Personen gemessen. 
# Hat Alter einen Einfluss auf die Reaktionszeiten?
# alt	jung
# 45	34
# 38	22
# 52	15
# 48	27
# 25	37
# 39	41
# 51	24
# 46	19
# 55	26
# 46	36
# Data-Frame bauen
alt = c(45, 38, 52, 48, 25, 39, 51, 46, 55, 46)
jung = c(34, 22, 15, 27, 37, 41, 24, 19, 26, 36)
# abhängige Variable
rz = c(alt, jung)
# unabhängige Variable (between)
alter = c(rep("alt", length(alt)), rep("jung", length(jung)))
# Versuchspersonen
vpn = paste("S", 1:length(alter), sep="")
# Data-Frame
alt.df = data.frame(rz, Alter = factor(alter), Vpn = factor(vpn))
# Bild

bwplot(rz ~ Alter, data = alt.df, ylab = "Reaktionszeit", xlab = "Alter")
densityplot(~rz, groups = Alter, auto.key=T, data = alt.df, xlab = "Reaktionszeit")
# Eindeutige Unterschiede
# t.test
t.test(rz ~ Alter, data = alt.df)
# Die Reaktionszeit wurde signifikant vom Alter beeinflusst (t[18.0] = 4.3, p < 0.001)
# Lösung mit ANOVA
ezANOVA(alt.df, .(rz), .(Vpn), between = .(Alter))
# Die Reaktionszeit wurde signifikant vom Alter beeinflusst (F[1, 18] = 18.1, p < 0.001)


# Die Frequenz des zweiten Formanten (kHz) wurden in denselben Personen gemessen, 
# bevor (links) und nachdem (rechts) sie einige manipulierte synthetisiche Stimuli 
# gehört hatten. Hatte die Wahrnehmung der Stimuli einen Einfluss auf F2? 
# (Die Werte in den Reihen sind von dem selben Sprecher)

# 18 22
# 21 25
# 16 17
# 22 24
# 19 16
# 24 29
# 17 20
# 21 23
# 23 19
# 18 20
# 14 15
# 16 15
# 16 18
# 19 26
# 18 18
# 20 24
# 12 18
# 22 25
# 15 19
# 17 16
# die abhängige Variable
bevor = c(18, 21, 16, 22, 19, 24, 17, 21, 23, 18, 14, 16, 16, 19, 18, 20, 12, 22, 15, 17)
danach = c(22, 25, 17, 24, 16, 29, 20, 23, 19, 20, 15, 15, 18, 26, 18, 24, 18, 25, 19, 16)
# Abhängige Variable
F2 = c(bevor, danach)
# Unabhängiger Faktor
wahrnehmung = c(rep("bevor", length(bevor)), rep("danach", length(danach)))
# Sprecher
vpn = rep(paste("S", 1:length(danach), sep=""), 2)
r.df = data.frame(F2, W = factor(wahrnehmung), Vpn = factor(vpn))
# Reihe ist eindeutig ein within-Faktor. Daher gepaarter t.test
# Zuerst ein Bild. Differenz-Berechnung
rdiff = aggregate(F2 ~ Vpn, diff, data = r.df)
# 0 liegt außerhalb vom interquartalen Bereich - daher wird der t-test wahrscheinlich signifikant sein
bwplot(rdiff$F2)
# t-test
t.test(rdiff$F2)
# F2 wurde von der Wahrnehmung signifikant beeinflusst (t[19] = 3.2, p < 0.01)
# Lösung mit ANOVA
ezANOVA(r.df, .(F2), .(Vpn), .(W))
# F2 wurde von der Wahrnehmung signifikant beeinflusst (F[1,19] = 10.4, p < 0.01)


# Die Intensität der Lösung von einem Plosiv 
# wurde in 10 Frauen (linke Spalte) und 10 Männern (rechte Spalte) gemessen. 
# Wurde die Intensität vom Geschlecht beeinflusst?
# 26	20
# 15	4
# 8	9
# 44	36
# 26	20
# 13	3
# 38	25
# 24	10
# 17	6
# 29	14
mann = c(26, 15, 8, 44, 26, 13, 38, 24, 17, 29)
frau = c(20, 4, 9, 36, 20, 3, 25, 10, 6, 14)
# abhängige Variable
intensitaet = c(mann, frau)
# unabhängiger Faktor (eindeutig between)
gesch = c(rep("m", length(mann)), rep("w", length(frau)))
# Sprecher
vpn = paste("S", 1:length(gesch), sep="")
# data-frame
g.df = data.frame(i = intensitaet, G = factor(gesch), Vpn = factor(vpn))
# Bild: eher nur eine Tendenz
bwplot(i ~ G, data = g.df, ylab = "Intensitaet", xlab = "Geschlecht")
densityplot(~i, groups = G, auto.key=T, data = g.df, xlab = "Intensitaet")
# t-test
t.test(i ~ G, data = g.df)
# Der Einfluss vom Geschlecht auf Intensität war nicht signifikant (p > 0.05)
# Lösung mit ANOVA
ezANOVA(g.df, .(i), .(Vpn), between = .(G))
# Der Einfluss vom Geschlecht auf Intensität war nicht signifikant (p > 0.05)




