library(lattice)

################################################
# Die Dauern (ms) wurden gemessen von 5 /a/ (z.B. `Lamm`) 
# und 5 /a:/ (z.B. `Lahm`) Vokale wie folgt:
# /a/: 91 87 83 69 73
# /a:/: 114 123  91 121 105
# Inwiefern unterscheiden sich die Vokale in der Dauer?

# Für den Data-Frame
dbc = read.table(file.path(pfadu, "dbc.txt"))
# inwiefern wird wird die Dauer (d) vom Dialekt
# und/oder Einkommen beeinflusst?

##################################################
# Diese Tabelle:
# http://www.phonetik.uni-muenchen.de/~jmh/lehre/sem/ss14/mwtab.pdf

# zeigt 20 F2-Werte für einen /I/ Vokal (z.B. in `Frist`)
# produziert von Sprechern und Sprecherinnen aus München und Wien.
# Erstellen Sie einen Data-Frame dafür und legen Sie den Data-Frame
# als eine Textdatei auf der Festplatte ab.
# Inwiefern wird F2 vom Dialekt und/oder Geschlecht beeinflusst?

# Für den Data-Frame dip
dip = read.table(file.path(pfadu, "dip.txt"))

# Gibt es Dauer-Unterschiede zwischen
# den Diphthongen und/oder zwischen den Versuchspersonen?


# Für den Data-Frame sz:
sz = read.table(file.path(pfadu, "sz.txt"))
# erstellen Sie einen Barchart, um die Häufigkeiten zu zeigen,
# mit denen /s/ oder /z/ von Sprechern aus Bayern und
# Schleswig-Holstein produziert wurden.
head(sz); dim(sz)
# Eine Tabellierung immer mit der abängigen Variable an letzer Stelle
tab = with(sz, table(Dialekt, Frikativ))
# Fakultative in Proportionen umsetzen
prop = prop.table(tab, 1:1)

barchart(prop, horizontal=F, auto.key=T)


#  Die Dauern von einem /a/ Vokal wurden 
# von 12 männlichen und 12 weiblichen
# Versuchspersonen gemessen.
# Hat Geschlecht einen Einfluss auf die Vokaldauer?
# Dauer (Männliche Vpn, ms): 52 101  83 116  66 126  68  83 119 121  84 112
# Dauer (Weibliche Vpn, ms): 33  74  59 109  17  63  57  85  71  95  88  58

# Ein Vektor der Dauerwerte
d = c(52, 101,  83, 116,  66, 126,  
68,  83, 119, 121,  84, 112, 
33,  74,  59, 109,  17,  63,  57,  85,  71,  95,  88,  58)

# Ein Vektor vom Geschlecht
labs = c(rep("m", 12), rep("w", 12))
# Data-Frame bauen
d.df = data.frame(d, G = labs)

bwplot(d ~ G, data = d.df, ylab = "Dauer (ms)")
densityplot(~ d, groups = G, xlab = "Dauer (ms)", data = d.df, auto.key=T, plot.points=F, ref=T)

# Dauer wird vom Geschlecht beeinflusst (ist bei Männern größer)


# Für den Data-Frame rating:
rating = read.table(file.path(pfadu, "rating.txt"))
# Inwiefern wird Rating
# von der Grammatikalität (Gram) und Lang (E, S)
# beeinflusst?
head(rating); dim(rating)

bwplot(Rating ~ Gram | Lang, ylab = "Rating", data = rating)
# es gibt Gram-Unterschiede; kaum Unterschiede in der Sprache
densityplot(~Rating | Gram, groups = Lang, auto.key=T, plot.points=F, ref=T, data = rating)

# Für den Data-Frame owl:
owl = read.table(file.path(pfadu, "owl.txt"))
# prüfen Sie ob die Sprache (Lang) 
# einen Einfluss auf die Reaktionszeit hatte (rt), um das Wort zu identifizieren.
head(owl); dim(owl)
bwplot(rt ~ Lang, data = owl, ylab = "Reaktionszeit")
# Eindeutig ja: schnellere Reaktionszeiten zu englisch als zu other


# Der Data-Frame lateral:
lateral = read.table(file.path(pfadu, "lateral.txt"))
# zeigt wie oft Sprecher aus drei Dialektregionen einen
# silbenfinalen /l/ vokalisiert (J) haben oder nicht (N).
# Wird die Vokalisierung vom Dialekt beeinflusst?
head(lateral); dim(lateral)
tab = with(lateral, table(Dialekt, Lateral))
p = prop.table(tab, 1:1)
barchart(p, auto.key=T, horizontal=F)
# Kaum Unterschiede zwischen Regionen B und C; A
# hat mehr Vokalisierungen als die anderen Regionen

# 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 erten 10 Hörer waren holländische Muttersprachler;
# die letzten 10 waren deutsche Muttersprachler. Wird
# die Wahl zwischen /f/ und /x/ von der Muttersprache beeinflusst?

fric = c("f", "x", "f", "f", "x", "f", "f", "f", "f", "f", "f", "x", "f", "x", "x", "f", "x", "f", "x", "f")
sprache = c(rep("NL", 10), rep("D", 10))
df = data.frame(fric, sprache)
tab = with(df, table(sprache, fric))
p = prop.table(tab, 1:1)
barchart(p, auto.key=T, horizontal=F)
# Proportional mehr /f/ in NL als in D

# Die Grundfrequenzwerte (Hz) von 10 älteren und 12 jüngeren 
# Männern waren wie folgt. Wird f0 vom Alter beeinflusst?
#Alt:67 38 76 104 119 67 63 45 116 76
#Jung: 103 89 57 93 130 104 81 94 82 111 95 94

f0 = c(67, 38, 76, 104, 119, 67, 63, 45, 116, 76, 103, 89, 57, 93, 130, 104, 81, 94, 82, 111, 95, 94)
alter = c(rep("alt", 10), rep("jung", 12))
f0.df = data.frame(f0, Alter = alter)
bwplot(f0 ~ Alter, data = f0.df, ylab = "Grundfrequenz (Hz)")
densityplot(~ f0, groups = Alter, data = f0.df, auto.key=T, ref=T, plot.points=F, xlab = "Grundfrequenz (Hz)")
# Die Grundfrequenz für jung ist höher als für alt

# Für den Data-Frame preasp
preasp = read.table(file.path(pfadu, "preasp.txt"))
# inwiefern wird
# die Verteilung von ±preasp (ob Pre-aspiration vorkam oder nicht) 
# von dem davor kommenden Vokal (vtype) beeinflusst?
head(preasp); dim(preasp)
tab = with(preasp, table(vtype, Pre))
p = prop.table(tab, 1:1)
barchart(p, auto.key=T, horizontal=F)
# Der Anteil der Vokale mit Präaspiration ist ziemlich gleich in /e, o/; jedoch 
# höher im /a/-Kontext als für diese beiden Vokale

# Diese Tabelle

# http://www.phonetik.uni-muenchen.de/~jmh/lehre/Rdf/stable.pdf

# aus Sussman et al (1997) zeigt sogenannte 
# Lokus-Neigungen für 5 Sprecher (M# bis M#5) und 
# 5 Sprecherinnen (F#1 bis F#5). Die Lokus-Neigungen sind in der 
# Spalte unter `k` und sie kommen 
# vor in silbeninitialer, silbenmedialer, und silbenfinaler Position 
# (daher 10 k-Einträge  pro Position; 3 k-Eintrage pro Sprecher oder Sprecherin). 
# Inwiefern wird `k` von Geschlecht und/oder Silbenposition beeinflusst?
# (Quelle: Sussman, Bessell, Dalston, and Majors. J. Acoustical Society of America, 101, 2826 - 2838)

werteinit = c(.75, .74, .82, .75, .61, .71, .88, .78, .84, .77)
wertemed = c(.79, .81, .79, .68, .69, .74, .81, .77, .84, .73)
wertefin = c(.68, .74, .62, .52, .45, .26, .34, .49, .58, .24)
werte = c(werteinit, wertemed, wertefin)
posn = c(rep("i", 10), rep("m", 10), rep("f", 10))
g = c(rep("M", 5), rep("W", 5), rep("M", 5), rep("W", 5), rep("M", 5), rep("W", 5))
lok.df = data.frame(werte, P = posn, G = g)
head(lok.df); dim(lok.df)
bwplot(werte ~ P | G, data = lok.df, ylab = "Neigung")
densityplot(~ werte | P, groups = G, data = lok.df, xlab = "Neigung", auto.key=T, ref=T, plot.points=F)

# Position: kaum Unterschiede zwischen initial und medial; final ist tiefer als die anderen beiden
# Geschlecht: Frauen habentiefere Werte final im Vgl. zu Männern



library(lattice)
source(file.path(pfadu, "normalf.R"))
source(file.path(pfadu, "lattice.normal.R"))

1. 
# (a) 12 Sprecher und 12 Sprecherinnen aus München 
# und Wien produzierten einen /I/ und F2 wurde aufgenommen.  
# Die F2-Werte in Hz für die 24 Versuchspersonen sind unten angeführt. 
# Wird F2 von Geschlecht und/oder Dialekt beeinflusst?

# Wien (weiblich)
# 2821 2654 2750 2664 2873 2755

# Wien (männlich)
# 2149 2354 2296 2094 2309 2069

# München (weiblich)
# 2586 2330 2209 2085 2301 2394

# München (männlich)
# 1982 1672 2216 1563 1905 1841
F2werte = c(2821, 2654, 2750, 2664, 2873, 2755, 2149, 2354, 2296,
 2094, 2309, 2069, 2586, 2330, 2209, 2085, 2301, 2394, 1982, 1672, 2216, 1563, 1905, 1841)

dialekt = c(rep("Wien", 12), rep("München", 12))
gesch = rep(c(rep("w", 6), rep("m", 6)), 4)
df = data.frame(F2=F2werte, D = dialekt, G = gesch)
bwplot(F2 ~ D | G, data = df)
densityplot(~ F2 | D, groups=G, data = df, auto.key=T, plot.points=F, ref=T)
# F2 ist höher für weiblich vs. männlich; und höher in Wien vs. München.

# (b) In einem Perzeptionstest hörten dieselben Versuchspersonen 
# ein ambiges Wort zwischen Miete und Mitte, und sie mussten pro 
# Stimulus zwischen den Wortpaaren wählen. Die Antworten  waren wie unten angeführt. 
# Wird die Wahl zwischen Miete/Mitte von Geschlecht und/oder Dialekt beeinflusst?

# Wien (weiblich)
# Miete Miete Mitte Miete Miete Miete

# Wien (männlich)
# Mitte Miete Miete Mitte Miete Miete

# München (weiblich)
# Mitte Mitte Mitte Miete Miete Miete

# München (männlich)
# Mitte Mitte Miete Mitte Miete Mitte
wahl = c("Miete","Miete","Mitte","Miete","Miete",
"Miete","Mitte","Miete","Miete","Mitte","Miete","Miete",
"Mitte","Mitte","Mitte","Miete","Miete","Miete","Mitte",
"Mitte","Miete","Mitte","Miete","Mitte")
df = cbind(df, Wahl = wahl)
tab = with(df, table(D, G, Wahl))
p = prop.table(tab, 1:2)
barchart(p, auto.key=T, horizontal=F)
# Mehr Miete Antworten in Wien; mehr Miete Antowrten
# für Frauen, insbesondere für Wien

# 2. Ich ziehe 350 Mal fünf Ganzzahlen zwischen (inklusive) 
# -20 und +20 aus einem Hut und berechne 
# davon den Mittelwert (und tue sie nach jeder Berechnung wieder in den Hut hinein). 
# Was ist mu,  was ist SE?
w = (-20:20)
n = length(w)
mu = mean(w)
SE = sd(w) * sqrt((n-1)/n) /sqrt(5)

# (a) Führen Sie diesen Vorgang in R durch (mit proben()  ) 
# um 350 solche Werte zu bekommen. 
# Machen Sie ein Histogramm davon und überlagern Sie die entsprechende Normalverteilung. 
o = proben(-20, 20, 5, 350)
histogram(~o, type="density", mu = mu, SE = SE, panel = lattice.normal)

# (b) Was ist die Wahrscheinlichkeit, 
# dass der Stichprobenmittelwert im Bereich ±10 fällt? 
# (also weniger als -10 oder mehr als +10)?
pnorm(-10, mu, SE) + 1 - pnorm(10, mu, SE)
#  0.05878172
# oder 
2 * pnorm(-10, mu, SE)

# (c) Setzen Sie ein 95% Konfidenzintervall für den Stichprobenmittelwert 
# wenn Sie (i) 5 Ganzzahlen aus dem Hut ziehen wie oben (ii) 15 Ganzzahlen aus dem Hut ziehen.
# (i)
qnorm(0.025, mu, SE); qnorm(0.975, mu, SE)
# [1] -10.37115
# [1] 10.37115
# (ii)
SEneu = sd(w) * sqrt((n-1)/n) /sqrt(15)
qnorm(0.025, mu, SEneu); qnorm(0.975, mu, SEneu)
# [1] -5.987789
# [1] 5.987789

# 3. Auf der Basis früherer Studien wurden mu = 100 Hz 
# und SE = 15 Hz für die Grundfrequenz in männlichen Stimmen eingeschätzt.  
# Wie viele aus einer Gruppe von 50 Männern müssten 
# laut diesem theoretischen Modell eine f0 (a) unter 80 Hz (b) zwischen 110 und 125 Hz haben.
p1 = pnorm(80, 100, 15)
50 * p1
# zwischen 4 und 5
p2 = pnorm(125, 100, 15) - pnorm(110, 100, 15)
50 * p2
# ca. 10

