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



######################################################################
# Die Logistische Regression
######################################################################

# In der logistischen Regression ist die
# abhängige Variable eine binäre Kategorie (z.B. /p/ oder /b/)
# Die unabhängige Variable kann numerisch oder kategorial sein.

############################################### Unabhängige Variable ist numerisch
l.df = read.table(file.path(pfadu, "l.df.txt"))
# Inwiefern wird das Urteil (ob "leiden" oder "leiten") vom Stimulus beeinflusst?
# Was ist der Umkipppunkt? (= der Stimulus-Wert zu dem, die Wahrscheinlichkeit
# von "leiden" oder "leiten"= 0.5?)
head(l.df)
dim(l.df)
names(l.df)
# Wir nehmen den zweiten Wert von
levels(l.df$Urteil)
# [1] "leiden" "leiten"
# 'leiten' als P ("Erfolg")
P = l.df$Urteil == "leiten"
("Misserfolg")
Q = !P
# summieren
l.m = aggregate(cbind(P, Q) ~ stim, sum, data = l.df)
# Proportionen
p = with(l.m, P/(P+Q))
# in den Data-Frame einbinden
l.m = cbind(l.m, p)
# Abbildung
plot(p ~ stim, data = l.m, ylab = "Proportion 'leiten'", xlab = "Stimulus-Nummer")

# Statistik
l.glm = glm(Urteil ~ stim, family = binomial, data = l.df)
anova(l.glm, test='Chisq')
# Das Urteil (ob "leiten" oder "leiden") wird signifikant von der Stimulus-Nummer beeinflusst (X^2[1] = 93.8, p < 0.001).

# Sigmoid überlagern
cf = coef(l.glm)
l.k = cf[1]
l.m = cf[2]
sig(l.k, l.m, add=T)
# oder auch in einer anderen Farbe
sig(l.k, l.m, add=T, col="blue", lty=2, lwd=2)

abline(v= -l.k/l.m)
# Der Umkipppunkt ist 3.5

############################################### Unabhängige Variable ist kategorial
tap = read.table(file.path(pfadu, "alvtap.txt"))

# Der Data-Frame zeigt wie oft australisch-englische
# Sprecher einen post-vokalischen Alveolar (in z.B. water)
# mit einem /ɾ/ (JA) oder /t/ (NEIN) produziert haben.
# Wird die Wahl vom Konsonanten (K) als Tap (J) oder
# /t/ (N) vom Herkunftsland (Her: "E" oder "I") beeinflusst?
head(tap)
dim(tap)
# Tabelle
tab = with(tap, table(Her, K))
# Proportionen
p = prop.table(tab, 1)
# Barchart
barchart(p, auto.key=T, horizontal=F)
# Statistik
tap.glm = glm(K ~ Her, family=binomial, data = tap)
anova(tap.glm, test='Chisq')
# HerI         -0.4619     0.2187  -2.112   0.0347 *
# Konsonant (ob ein Tap oder nicht) wird signifikant
# vom Herkunftsland beeinflusst (X^2[1] = 4.4, p < 0.05)


########################################################################
# Fragen
########################################################################
######### 1.
read.table(file.path(pfadu, "franken.txt"))

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

######### 2.
read.table(file.path(pfadu, "adaten.df.txt"))
# 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.

######### 3.
# 20 Hö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 erten 10 Hörer waren holländische Muttersprachler;
# die letzten 10 waren deutsche Muttersprachler. Wird
# die Wahl zwischen /f/ und /x/ von der Muttersprache beeinflusst?

######### 4.
sagt = read.table(file.path(pfadu, "sagtp.df.txt"))
# 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.

