library(ggplot2)

###########################################################################
# 1.  Nachtrag 'shapiro.test()' zur Ueberpruefung von Verteilungen
###########################################################################

############################# '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. Pruefen, 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 = plosiv.df %>%
  group_by(Vpn) %>%
  summarise(dB=diff(dB))

# 3.
boxplot(unt$dB)
# oder
ggplot(unt) + 
  aes(y = dB,x=factor(0)) + 
  geom_boxplot()

# 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 (hier eigentlich falsch!)
t.test(unt$dB)
# Artikulationsstelle hatte einen Einfluss auf die Energie (t[14] = 3.1, p < 0.01)
# oder (in diesem Fall richtiger!)
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)

# uebrigens: den Warnhinweis ignorieren wir...

# Wenn wir den Ausreißer entfernen
# Konsistent mit Abbildung 1 

unt = unt[unt$dB > -40,]
ggplot(unt) + 
  aes(y = dB,x=factor(0)) + 
  geom_boxplot()
shapiro.test(unt$dB)
# W = 0.93631, p-value = 0.3731
t.test(unt$dB)
# t = 5.5256, df = 13, p-value = 9.781e-05

# Die Artikulationsstelle hatte 
# einen Einfluss auf die Energie (t[13] = 5.5, p < 0.001)

# Ausreißer darf man natuerlich nicht willkuerlich entfernen
# Wenn ein Wert jedoch offensichtlich falsch ist (z.B. ein Messfehler)
# kann man das durchaus tun (muss das aber berichten).




############################# 'ungepaarte Stichproben'
alter.df = read.table(file.path(pfadu, "alter.df.txt"))
# 1. Verifizieren, dass die Werte ungepaart sind
# 2. Boxplot davon erstellen
# 3. Pruefen, 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.
ggplot(alter.df) + 
  aes(y = grund, x = Alter) + 
  geom_boxplot()

# 3.
with(alter.df, tapply(grund, Alter, shapiro.test))
# 4.
# Wenn nichts gegen einer Normalverteilung spricht, wie hier
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 waere, dass eine oder beide
# Verteilungen einer Normalverteilung folgt/folgen,
# waere der richtige Befehl:
wilcox.test(grund ~ Alter, data = alter.df)
# Der Einfluss vom Alter auf die Grundfrequenz ist nicht signifikant

#P.S. Auch hier gilt: den Warnhinweis ignorieren wir...