library(lattice)
source(file.path(pfadu, "sig.fn.R"))

# In einem Experiment mussten Hörer Wörter identifizieren.
# Der Faktor Correct bestimmt, ob der Hörer das Wort richtig (TRUE)
# identifiziert hatte oder nicht (FALSE).
# Inwiefern beeinflusste die Altersgruppe, ob die Wörter richtig identifiziert wurden?


fr = read.table(file.path(pfadu, "franken.txt"))
# Tabelle
tab = with(fr, table(Alter, Correct))
# Proportionen berechnen
p = prop.table(tab, 1)
# Barchart
barchart(p, auto.key=T, horizontal = F)
# Test
g = glm(Correct ~ Alter, binomial, data = fr)
anova(g, test="Chisq")
# Correct (ob richtig/falsch) wurde signifikant vom
# Alter beeinflusst (X^2[1] = 9.8, p < 0.01)

###################################################################
# In diesem Experiment haben Hörer aufgrund
# von F1 Änderungen entschieden, ob sie /a/ oder /a:/ wahrgenommen haben.
# Wird die Wahl zwischen /a, a:/ von F1 beeinflusst? Überlagern Sie eine Sigmoid
# Funktion auf die Proportion der /a:/-Urteile als Funktion von F1
a.df = read.table(file.path(pfadu, "adaten.df.txt"))
 head(a.df)
 levels(a.df$V)
# [1] "a"  "a:"
# Erfolg
P = a.df$V == "a:"
# Misserfolg
 Q = !P
# Summierung davon
 a.lm = aggregate(cbind(P, Q) ~ F1, sum, data = a.df)
# Proportionen
 p = with(a.lm, P/(P+Q))
 a.lm = cbind(a.lm, p)
# Proportion /a:/ Antworten vs. F1
ylim = c(0, 1); xlim = c(100, 2000)
plot(p ~ F1, data = a.lm,ylab = "Proportion /a:/ Antworten", xlim = xlim, ylim = ylim)
# Statistik
 a.glm = glm(V ~ F1, binomial, data = a.df)
anova(a.glm, test='Chisq')
# Vokal (ob /a:/ oder /a/) wird vom F1 signifikant beeinflusst
# (X^[1] = 13.9, p < 0.001)

# Koeffiziente der Sigmoid
 cf = coef(a.glm)
# Intercept
 k = cf[1]
# Steigung
 m = cf[2]
# Sigmoid überlagern
 sig(k, m, add=T, col = "blue", lwd=2)
 u = -k/m
 abline(v = u)
 

 # 20 Hörer mussten entscheiden, ob ein Laut /f/ oder /x/ war.
 # Ihre Antworten sind wie folgt:
 # f x f f x f f f f f f x f x x f x f x f
 # Die ersten 10 Hörer waren holländische Muttersprachler;
 # die letzten 10 waren deutsche Muttersprachler. Wird
 # die Wahl zwischen /f/ und /x/ von der Muttersprache beeinflusst?
 
 
 
# Vektor der Urteile
fric = c("f", "x", "f", "f", "x", "f", "f", "f", "f", "f", "f", "x", "f", "x", "x", "f", "x", "f", "x", "f")
# Vektor der Muttersprache der Versuchspersonen
sprache = c(rep("NL", 10), rep("D", 10))
# Data-Frame davon
f.df = data.frame(fric = factor(fric), sprache = factor(sprache))
# Abbildung der Proportionen
tab = with(f.df, table(sprache, fric))
p = prop.table(tab, 1)
barchart(p, auto.key=T, horizontal=F)
# Statistischer Test
f.glm = glm(fric ~ sprache, binomial, data = f.df)
anova(f.glm, test='Chisq')
# Die Wahl ob /f/ oder /x/ wurde nicht von der Sprache
# beeinflusst (wahrscheinlich aufgrund von zu wenig Stichproben).

# 4. Ein 11-stufiges Kontinuum zwischen 'sackt' und 'sagt' wurde durch
# Dauerzunahmen im Vokal synthetisiert.
# Pro Stimulus musst ein Hörer zwischen /a/ (sackt)
# und /a:/ (sagt) entscheiden. Wird die Wahl zwischen /a/ und /a:/ vom
# Stimulus beeinflusst? Überlagern Sie ein Sigmoid auf
# die Proportion der /a:/-Urteile als Funktion vom Stimulus
# und berechnen Sie den 50% Umkipppunkt.

sagt = read.table(file.path(pfadu, "sagtp.df.txt"))
head(sagt)
levels(sagt$Urteil)
P = sagt$Urteil == "a:"
Q = !P
sagt.m = aggregate(cbind(P, Q) ~ Stimulus, sum, data = sagt)
p = with(sagt.m, P/(P+Q))
sagt.m = cbind(sagt.m, p)
plot(p ~ Stimulus, data = sagt.m)
sagt.glm = glm(Urteil ~ Stimulus, binomial, data = sagt)
summary(sagt.glm)
cf = coef(sagt.glm)
k = cf[1]
m = cf[2]
sig(k, m, add=T)
abline(v = -k/m)
anova(sagt.glm, test='Chisq')
# Die Wahl zwischen 'sagt' und 'sackt' wurde signifikant vom Stimulus beeinflusst (X^2[1] = 117.0, p < 0.001)







