nm = "Harrington_Jonathan"
library(lattice)
library(ez)
library(lme4)
source(file.path(pfadu, "phoc.txt"))
source(file.path(pfadu, "ph.step.R"))
ai = read.table(file.path(pfadu, "ai.txt"))
amdat = read.table(file.path(pfadu, "amp.df.txt"))
clara = read.table(file.path(pfadu, "clara.txt"))
ga = read.table(file.path(pfadu, "gavowel.txt"))
kj = read.delim(file.path(pfadu, "kj.txt"))
stefan = read.table(file.path(pfadu, "stefan.txt"))
form = read.table(file.path(pfadu, "f1.schwa.txt"))

# 1# prüfen Sie durch eine Abbildung und statistischen Test, 
# ob die Kiefer- aus der Lippenposition vorhergesagt werden kann. 
# Was wäre die vorhergesagte Kieferposition für eine Lippenposition von -20?

plot(Kiefer ~ Lippe, data = ai)
ai.lm = lm(Kiefer ~ Lippe, data = ai)
abline(ai.lm)
summary(ai.lm)
# Normalverteilt
shapiro.test(resid(ai.lm))
# OK
plot(resid(ai.lm))
# OK
acf(resid(ai.lm))
# Es gibt eine signifikante lineare Beziehung zwischen der Kiefer- und Lippenposition 
# (R^2 = 0.27, F[1, 23] = 8.5, p < 0.01).
predict(ai.lm, data.frame(Lippe=-20))
# -24.98412




# 2
# prüfen Sie durch eine Abbildung und statistischen Test, ob die Vokalkategorie (Faktor V) 
# aus der Amplitude (Faktor amp) vorhergesagt werden kann. 
# Zu welchem Amplituden-Wert kommt der Umkipppunkt zwischen den beiden Vokalkategorien vor?
levels(amdat$V)
P = amdat$V == "i"
Q = !P
amdat.m = aggregate(cbind(P, Q) ~ amp, sum, data = amdat )
p = with(amdat.m, P/(P+Q))
amdat.m = cbind(amdat.m, p)
plot(p ~ amp, data = amdat.m)
amp.glm = glm(V ~ amp, binomial, data = amdat)
anova(amp.glm,test="Chisq")
#Vokal wurde von Amplitude sig. beeinflusst
# X^2[1,18]=4.1, p < 0.05 ##VORSICHT-EMAIL!!!
cf = coef(amp.glm)
-cf[1]/cf[2]
# 49.37804 
# Die Vokalkategorie kann aus den Amplitude signifikant vorhergesagt werden (X^2[1,18] = 4.14, p < 0.05). 
# Der Umkipppunkt liegt bei 49.37804 .



# 3
# enthalten Messungen der proportionalen Vokaldauer (prdur) für verschiedene Wörter (wort) produziert 
# von verschiedenen Versuchspersonen (vp). Prüfen Sie durch eine Abbildung und statistischen Test, 
# ob die proportionale Vokaldauer von der Phrasenposition (pos) beeinflusst wird.

bwplot(prdur ~ pos, data = clara)
with(clara, table(vp, pos))
with(clara, table(wort, pos))
pos.lmer = lmer(prdur ~ pos + (1|wort) + (pos|vp), data = clara) 
pos.lmer1 = lmer(prdur ~ pos + (1|wort) + (1+pos|vp), data = clara) 
step(pos.lmer) #--> führt zu Fehlermeldung, daher
anova(pos.lmer) # anova ist (das wir lmerTest geladen haben) ein Funktion aus lmerTest
# Vorsicht: wenn lmerTest nicht geladen wurde, kann man den Befehlt anova(pos.lmer) auch eingeben,
# bekommt aber einen völlig anderen output.

# Der Einfluss von der Position auf die Vokaldauer ist nicht ganz signifikant (F[1,16.2] = 3.5, p = 0.078).

# auch möglich, aber nicht gefragt (sehr ähnliches Ergebnis):
# wir mitteln über alle Worte aus $wort, indem wir wort hier einfach aus der Formel weglassen
# und die Funktion mean() anwenden:
clara.ag=aggregate(prdur~pos+vp,mean,data=clara)
ezANOVA(clara.ag,.(prdur),.(vp),.(pos))


# 4. Für diese Daten:
dim(ga)
# wurde für verschiedene Sprecher (Vpn) der zweite Formant (F2) in zwei Vokalen (Faktor V) 
# und in zwei Dialekten (Faktor Dialekt) erhoben. 
# Prüfen Sie durch eine Abbildung und statistischen Test, 
# ob F2 vom Vokal und/oder vom Dialekt beeinflusst wird.

bwplot(F2 ~ Dialekt | V, data = ga)
with(ga, table(Vpn, interaction(V, Dialekt)))
ga.m = aggregate(F2 ~ V * Dialekt * Vpn, mean, data = ga)
ezANOVA(ga.m, .(F2), .(Vpn), .(V), between = .(Dialekt))
p = phoc(ga.m, .(F2), .(Vpn), .(V, Dialekt))
round(phsel(p$res), 3)
round(phsel(p$res, 2), 3)
# Dialekt (F[1, 18] = 41.9, p < 0.001) sowie Vokal (F[1, 18] = 28.9, p < 0.001) hatten einen 
# signifikanten Einfluss auf F1 und es gab eine signifikante Interaktion zwischen diesen 
# Faktoren (F[1, 18] = 15.7, p < 0.001). 
# Bonferroni-korrigierte post-hoc t-Tests zeigten einen Unterschied zwischen /i, I/ für Dialekt D (p < 0.01)
# jedoch nicht für A; und einen Unterschied zwischen den Dialekten in /I/ (p < 0.01) jedoch nicht in /i/.



# 5. Prüfen Sie für diese Daten mit einer Abbildung und einem statistischen Test:
dim(kj)
# inwiefern die Wahl des Frikatives (Faktor fric) als 's' (alveolar) oder 'S' (retroflex) 
# von der Emphase (Faktor emphatic) beeinflusst wird.

tab = with(kj, table(emphatic, fric))
p = prop.table(tab, 1)
barchart(p, auto.key=T, horizontal=F)
e.glm = glm(fric ~ emphatic, binomial, data = kj)
anova(e.glm,test="Chisq")
# Die Wahl des Frikatives wird signifikant von der Emphase beeinflusst (X^2[1] = 20.1, p < 0.001).







# 6. Die Reaktionszeiten (ms) von 10 Versuchspersonen in der Labor-, Lese- und Spontansprache 
# um ein Wort zu identifizieren sind wie folgt:
labo = c(23.0, 5.0, 30.7, 17.4, 18.5, 15.7, 16.8, 30.8, 14.1, 13.5)
lese = c(3.1, 27.7, 46.1, 55.4, 22.1, 19.5, 8.0, 53.8, 28.0, 36.4)
spon = c(39.8, 34.2, 40.5, 47.3, 42.5, 38.4, 40.8, 38.6, 43.8, 40.9)
# Prüfen Sie durch eine Abbildung und statistischen Test, ob der Sprechstil 
# (ob Labor-, Lese-, oder Spontansprache) einen Einfluss auf die Reaktionszeiten hat.

stil = c(rep("labo", 10), rep("lese", 10), rep("spon", 10))
vpn = rep(paste("S", 1:10, sep=""), 3)
rt = c(labo, lese, spon)
rt.df = data.frame(rt, Stil = factor(stil), Vpn = factor(vpn))
ezANOVA(rt.df, .(rt), .(Vpn), .(Stil))
round(c(2, 18) * 0.6699608, 1)
# Die Reaktionszeit wurde signifikant vom Sprachstil beeinflusst (F[1.3, 12.1] = 11.2, p < 0.01).









# 7. Für diese Daten:
dim(stefan)
# erzeugen Sie eine Abbildung, OHNE einen statistischen Test durchzuführen, 
# mit der (F1) als Funktion der Dauer (Dur), getrennt für die zwei Sprechtempi (Tempo) 
# gezeigt wird (also eine Abbildung, die zwei Bilder enthält, eins für 'slow' und eins für 'fast'). 
# Schätzen Sie anhand der Abbildung ein, ob F1 von der Dauer vorhergesagt werden kann.
xyplot(F1 ~ Dur | Tempo, auto.key=T, data = stefan)
# Je größer die Dauer, umso höher F1, besonders in 'fast'.




# 8. Für diese Daten:
dim(form)
# wurde der erste Formant (F1) von einem Schwa von verschiedenen Sprechern (Vpn) 
# in drei Kontexten erhoben (Kontext). Prüfen Sie durch eine Abbildung und statistischen Test, 
# ob F1 durch den Kontext beeinflusst wird.

bwplot(F1 ~ Kontext, data = form)
with(form, table(Vpn, Kontext))
kon.lmer = lmer(F1 ~ Kontext + (Kontext|Vpn), data = form) 
anova(kon.lmer)
# hier geht step wieder:
kon.step=step(kon.lmer)

# F1 wurde signifikant vom Kontext beeinflusst (F[2,5.5] = 46.1, p < 0.001).

ph.step(kon.step,"bonferroni")
#               t-value  DF prob.adj
#Kontext A - B   -3.62 5.9   0.0345
#Kontext A - C   -9.49 5.5   0.0003
#Kontext B - C   -2.43 5.3   0.1716
# Hierbei zeigten sich, wie Bonferroni-korrigierte post-hoc t-Tests zeigten, 
# zwar signifikante Unterschiede zwischen den Kontexten A und B (p < 0.05) und
# zwischen A und C (p < 0.001), nicht jedoch zwischen den Kontexten B und C. 