# pfadu = "http://www.phonetik.uni-muenchen.de/~jmh/lehre/Rdf"
nm = "Vorname_Name"


# Dann die benoetigten data.frames:
ai = read.table(file.path(pfadu, "aiclean.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"))
pfric.df = read.table(file.path(pfadu, "pfric.df.txt"))
form = read.table(file.path(pfadu, "formAB.txt"))

#######################################################################################################
# 1. Pruefen Sie durch eine Abbildung und statistischen Test,
# ob F1 aus der Kieferposition vorhergesagt werden kann.
# Was waere die Vorhersage fuer F1 fuer eine Kieferposition von -25?
dim(ai)

plot(F1 ~ Kiefer, data = ai)
ai.lm = lm(F1 ~ Kiefer, data = ai)
abline(ai.lm)
summary(ai.lm)

# Ja, F1 haengt von der Kieferposition sig. ab.
# (R^2=0.51, F[1,19]=19.7,p<0.001)

plot(resid(ai.lm))
#Ok
shapiro.test(resid(ai.lm)) 
#Ok
acf(resid(ai.lm)) 
#OK

predict(ai.lm, data.frame(Kiefer = -25))
#oder
coef(ai.lm) # braucht man fuer x*m+k, wobei x = -25
(-25 * coef(ai.lm)[2] + coef(ai.lm)[1])
# Die Vorhersage fuer die Kieferposition -25 ist 785.

#######################################################################################################
# 2 Fuer
dim(amdat)
# pruefen 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)

amdat$P = amdat$V == "i"
amdat$Q = !(amdat$P)
amdat.m = amdat %>%
  group_by(amp) %>%
  summarise(P = sum(P), Q = sum(Q))
amdat.m = amdat.m %>%
  mutate(p = P / (P + Q))
plot(p ~ amp, data = amdat.m)


amp.glm = glm(V ~ amp, family = "binomial", data = amdat)
anova(amp.glm, test = "Chisq")
#kleiner HINWEIS: es gibt eine Funktion binomial(), daher geht auch folgende Syntax ohne Anführungszeichen:
amp.glm_oA1 = glm(V ~ amp, family = binomial, data = amdat)
anova(amp.glm_oA1, test = "Chisq") 
# auch ohne "family = " moeglich:
amp.glm_oA2 = glm(V ~ amp, binomial, data = amdat)
anova(amp.glm_oA2, test = "Chisq")
#Egal, weiter im Text:

k = coef(amp.glm)[1]
m = coef(amp.glm)[2]

sig(k, m, add = TRUE)
u = -k / m
abline(v = u, h=0.5,lty="dashed")
# Vokalkategorie wurde sig. von amp beeinflusst
# (X^2[1] = 4.1,p<0.05).
# Der Umkipppunkt liegt bei 49.4



#######################################################################################################
# 3
# Wenn ich 6 Lose aus einem Hut mit den Zahlen 1 bis 49 ziehe,
# a) wie hoch ist dann die Wahrscheinlichkeit, dass der Mittelwert ueber 30 liegt?
# b) fuehren Sie den obigen Vorgang (6 Lose aus einem Hut mit den Zahlen 1 bis 49 zu ziehen
# und daraus je einen Mittelwert zu bilden)
# 100 Mal mit der proben()-Funktion durch; erstellen Sie ein Histogramm,
# dass die Wahrscheinlichkeitsdichte ihrer 100 Versuche abbildet.
# Ueberlagern Sie die Normalverteilungsfunktion! (Sie sollen NICHT den Bereich ueber
# x = 30 markieren!)
#a)
mu = mean(1:49)
SE = sd(1:49) * sqrt(48 / 49) / sqrt(6)
1 - pnorm(30, mu, SE) #Antwort: 19.3%
#b)
o = proben(1, 49, 6, 100)
hist(o, freq = F)
curve(dnorm(x, mu, SE), add = T)
#######################################################################################################



#######################################################################################################
# 4. Fuer diese Daten:
dim(ga)
# wurde fuer 20 verschiedene Sprecher (Vpn) der zweite Formant (F2)
# in zwei Vokalen (Faktor V) (einem gespannten /i/ und einem ungespannten /I/)
# und in zwei Dialekten (Faktor Dialekt: A (Oesterreich) vs. D (Dtl.)) erhoben.
# Pruefen Sie durch eine Abbildung und statistischen Test,
# ob F2 vom Vokal und/oder vom Dialekt beeinflusst wird.

ggplot(ga) +
  aes(y = F2, x = V) +
  geom_boxplot() +
  facet_wrap( ~ Dialekt)

with(ga, table(Vpn, V))
with(ga, table(Vpn, Dialekt))


ga.lmer = lmer(F2 ~ V * Dialekt + (V | Vpn), data = ga)
ga.step = step(ga.lmer)
anova(get_model(ga.step))
ga.ph = pairs(emmeans(get_model(ga.step),  ~ V:Dialekt))
phsel(ga.ph, 1)
phsel(ga.ph, 2)
# Es gab sig. Haupteffekte fuer Dialekt (F[1,18]=41.9,p<0.001) und V
# F[1,18]=28.9,p<0.001), und eine sig. Interaktion (F[1,18]=15.7,p<0.001)).
# Tukey-korrigierte post-hoc-Tests ergaben sig. Unterschiede nur fuer i und I
# bei Sprechern des Dialektes D (p<0.001), und A- und D-Sprecher unterscheiden
# sich in ihren Is (p< 0.001).

# Es wäre auch gegangen:
# Mitteln:
ga.m = ga %>%
  group_by(Vpn, V, Dialekt) %>%
  summarise(F2 = mean(F2))

with(ga.m, table(Vpn, V))
with(ga.m, table(Vpn, Dialekt))
ezANOVA(ga.m, .(F2), .(Vpn), .(V), between = .(Dialekt))
ga.ph = phoc(ga.m, .(F2), .(Vpn), .(V, Dialekt))
ga.ph
phsel(ga.ph$res, 1)
phsel(ga.ph$res, 2)
# Dann wäre die Antwort wie folgt
# (man sieht, sie ist (fast) identisch mit der lmer()-Antwort;
# einziger Unterschied ist, dass durch die "konservativere"
# Bonferroni-Korrekturmethode das p bei i:D-I:D hier
# "nur" noch p < 0.01, und nicht mehr < 0.001 ist):
# Es gab sig. Haupteffekte fuer Dialekt (F[1,18]=41.9,p<0.001) und V
# F[1,18]=28.9,p<0.001), und eine sig. Interaktion (F[1,18]=15.7,p<0.001)).
# Bonferroni-korrigierte post-hoc t-Tests ergaben sig. Unterschiede nur fuer
# i und I bei Sprechern des Dialektes D (p<0.01),
# und A- und D-Sprecher unterscheiden sich in ihren Is
# (p< 0.001).
#######################################################################################################
# 5. Pruefen Sie fuer diese Daten mit einer Abbildung und einem statistischen Test:
dim(kj)

# inwiefern die Wahl des Frikatives (Faktor fric) als 's' oder 'S'
# von der Emphase (Faktor emphatic) beeinflusst wird.

ggplot(kj) +
  aes(fill = fric, x = emphatic) +
  geom_bar(position = "fill")

kj.glm = glm(fric ~ emphatic, family = "binomial", data = kj)

anova(kj.glm, test = "Chisq")
# fric wurde von emphatic sig. beeinflusst
# (X^2[1,238]=20.1,p<0.001).
#######################################################################################################
# 6.

# 10 Sprecher produzierten /a/-Vokale mit
# 1. Knarrstimme,
# 2. in einer gefluesterten und
# 3. in einer modalen Stimme.

# Die dB-Werte sind wie folgt:
# Knarrstimme: 10 Werte, ein Wert pro Sprecher
knarr = c(49.5, 37.5, 51.8, 38.0, 41.6, 50.2, 50.7, 42.0, 48.6, 35.0)
# Gefluesterte Stimme: 10 Werte, ein Wert pro Sprecher
gefl = c(32.2, 27.3, 43.2, 14.0, 28.5, 26.6, 35.6, 31.1, 38.8, 36.7)
# Modale Stimme: 10 Werte, ein Wert pro Sprecher
modal = c(43.0, 44.8, 45.1, 46.1, 46.6, 52.9, 47.1, 46.8, 52.5, 37.2)
# Pruefen Sie fuer diese Daten mit
# a.) einer Abbildung und
# b.) einem statistischen Test,
# inwiefern die dB-Werte von der Stimmqualitaet
# (knarr vs. gefluestert vs. modal) beeinflusst werden.
# Fuehren Sie KEINE paarweisen Vergleiche fuer Stimmqualitaet durch!

dB = c(knarr, gefl, modal)

Vpn = factor(rep(1:10, 3))

SQ = factor(rep(c("knarr", "gefluestert", "modal"), each = 10))

Stimme = data.frame(dB, Vpn, SQ)


ggplot(Stimme) +
  aes(y = dB, x = SQ) +
  geom_boxplot()

ezANOVA(Stimme, .(dB), .(Vpn), .(SQ))
#Freiheitsgrade korrigieren und den p[GG]-Wert berichten
# (acu wenn sich p<0.001 hier nicht von p[GG]<0.001 unterscheidet):
2 * 0.7196355
18 * 0.7196355
# Stimmqualitaet beeinflusste die dB Werte signifikant
# F[1.4,13.0]=21.8,p[GG]<0.001

# Das hier war ausdruecklich NICHT (!!!) gefordert
# (Fuehren Sie KEINE paarweisen Vergleiche fuer Stimmqualitaet durch!)
# (hier funktioniert's, ohne dass man vorher mitteln muesste):
phoc(Stimme, .(dB), .(Vpn), .(SQ))
# "gefluestert unterscheidet sich jeweils von den beiden anderen
# (jeweils p < 0.01)
# TROTZDEM, WIR BLEIBEN DABEI: phoc() NUR DANN ANWENDEN, wenn ezANOVA() eine INTERAKTION anzeigt.

#######################################################################################################
# 7. Fuer diese Daten:
dim(pfric.df)
head(pfric.df)
# Erzeugen Sie - OHNE einen statistischen Test durchzufuehren - folgende Abbildung:
# - k2 in Abhaengigkeit von k3
# - ein Panel pro Vokalstufe (Spalte "V": 'a', 'o', 'e')
# - farblich getrennt nach Konsonant (Spalte "K") 'C', 's', und 'S' (mit Legende, die die
#   farbliche Kodierung der Konsonanten aufschluesselt)

ggplot(pfric.df) +
  aes(y = k2, x = k3, col = K) +
  geom_point() +
  facet_wrap( ~ V)
