Laden Sie die folgenden Packages und Data-Frames:
library(tidyverse)
library(broom)
library(emmeans)
urla = "https://www.phonetik.uni-muenchen.de/"
urlb = "studium_lehre/lehrmaterialien/R_speech_processing/Rdf/"
url = paste0(urla, urlb)
l.df = read.table(file.path(url, "l.df.txt"),
stringsAsFactors = T)
franken.df = l.df %>%
filter(Dial == "J") %>%
select(Urteil, stim)
tap.df = read.table(file.path(url, "alvtap.txt"),
stringsAsFactors = T)
ucla = read.csv("https://stats.idre.ucla.edu/wp-content/uploads/2016/02/sample.csv")
ucla = ucla %>%
mutate(female = ifelse(female == 0, "M", "F"),
hon = ifelse(hon == 0, "yes", "no"),
female = factor(female),
hon = factor(hon))
names(ucla)[1] = "sex"
a.df = read.table(file.path(url, "adaten.df.txt"),
stringsAsFactors = T)
cont2.df = read.table(file.path(url, "cont2.df.txt"),
stringsAsFactors = T)
sigmoid = function(x, k = 0, m = 1) {
exp(m * x + k) / (1 + exp(m * x + k))
}
franken.df
wurde ein Stimulus Kontinuum synthetisiert, indem im Wort
leiden
in 7 Stufen das Verhältnis
Vokaldauer:Verschlussdauer manipuliert wurde (stim
). Die
Hörer mussten pro Beobachtung zwischen leiden
und
leiten
unterscheiden (Urteil
). Was ist der
Umkipppunkt zwischen leiden
und leiten
? Was
müssten laut diesem Modell die Proportion der
leiden
-Antworten bei Stimulus 2 sein? Prüfen Sie mit einer
geeigneten Abbildung und statistischem Test, ob das Urteil (ob
leiden
oder leiten
) vom Stimulus beeinflusst
wurde.# Proportionen berechnen
p1 = franken.df %>%
# NB: stim an erster Stelle!
group_by(stim, Urteil) %>%
summarise(n = n()) %>%
mutate(prop = n/sum(n)) %>%
filter(Urteil == levels(Urteil)[2]) %>%
# und Proportionen abbilden
ggplot() +
aes(y = prop, x = stim) +
geom_point() +
ylab("Proportion 'leiten'")
## `summarise()` has grouped output by 'stim'. You can override using the
## `.groups` argument.
# Sigmoid berechnen und darauf überlagern
franken.km = franken.df %>%
glm(Urteil ~ stim, ., family=binomial) %>%
coef()
franken.km
## (Intercept) stim
## -5.380750 1.496371
p2 = p1 +
# Sigmoid abbilden
stat_function(fun = sigmoid,
args = list(k = franken.km[1],
m = franken.km[2]), col="blue")
p2
## (Intercept)
## 3.595866
# Darauf überlagern und vielleicht den Bereich der
# x-Achse nach links verlängern
p3 = p2 +
# Umkipppunkt
geom_vline(xintercept = -franken.km[1]/franken.km[2], lty=2) +
scale_x_continuous(limits = c(1,7)) +
scale_y_continuous(limits = c(0,1))
p3
## stim
## 0.9159083
# statistischer Test
franken.df %>%
glm(Urteil ~ stim, ., family = binomial) %>%
anova(., test = 'Chisq')
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: Urteil
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 69 96.124
## stim 1 53.243 68 42.881 2.947e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Die Wahl zwischen leiden und leiten wurde signifikant (\(X^2\)[1] = 53.243, p < 0.001) vom Stimulus beeinflusst.
tap.df
zeigt,
wie oft australisch-englische Sprecher einen post-vokalischen Alveolar
(in z.B. ‘water’) mit einem /ɾ/ (einem Tap) (JA) oder einem /t/ (NEIN)
produziert haben (K
). Wird die Wahl des Konsonanten
(K
) vom Herkunftsland (Her: “E” = England oder “I” =
Irland) beeinflusst?# Die Analyse ist K ~ Her, daher wie unten.
# Das Bild zeigt: die Iren produzieren
# proportional mehr Taps als die Engländer
summary(tap.df)
## K Alter Her Gender Jahre Vpn
## J:106 a:198 E:345 m:495 Min. : 5.00 S1 : 1
## N:444 j:352 I:205 w: 55 1st Qu.: 5.00 S10 : 1
## Median : 5.00 S100 : 1
## Mean :12.42 S101 : 1
## 3rd Qu.:25.00 S102 : 1
## Max. :25.00 S103 : 1
## (Other):544
tap.df %>%
ggplot() +
aes(fill = K, x = Her) +
geom_bar(position="fill") +
ylab("Proportion") +
xlab("Herkunftsland")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: K
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 549 539.17
## Her 1 4.4156 548 534.75 0.03561 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Die Wahl zwischen einem Tap und [t] wurde signifikant (\(X^2\)[1] = 4.4156, p < 0.05) vom Herkunfsland beeinflusst.
ucla
zeigt ob
Männer oder Frauen (sex
) in eine sogenannte ‘Honors’ Gruppe
(hon
) an der Universität aufgenommen wurden
(yes
) oder nicht (no
). Prüfen Sie durch eine
Abbildung und statistischen Test, ob die Aufnahme in die Honors Gruppe
vom Geschlecht beeinflusst wurde.## sex read write math hon
## F:109 Min. :28.00 Min. :31.00 Min. :33.00 no : 49
## M: 91 1st Qu.:44.00 1st Qu.:45.75 1st Qu.:45.00 yes:151
## Median :50.00 Median :54.00 Median :52.00
## Mean :52.23 Mean :52.77 Mean :52.65
## 3rd Qu.:60.00 3rd Qu.:60.00 3rd Qu.:59.00
## Max. :76.00 Max. :67.00 Max. :75.00
## femalexmath
## Min. : 0.00
## 1st Qu.: 0.00
## Median :40.00
## Mean :28.55
## 3rd Qu.:53.00
## Max. :72.00
# Das Bild zeigt: Männer wurden bevorzugt aufgenommen.
ucla %>%
ggplot() +
aes(x = sex, fill = hon) +
geom_bar(position = "fill") +
ylab("Proportion accepted into honors")
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: hon
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 199 222.71
## sex 1 3.1038 198 219.61 0.07811 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Es gab eine nicht signifikante (p = 0.078) Tendenz, Männer bevorzugt
in Honors
aufzunehmen.
a.df
wurden
offene Vokale synthetisiert, indem F1 geändert wurde. Die Hörer mussten
pro Stimulus zwischen /a/ (Lamm) und /a:/ (lahm) wählen. Prüfen Sie,
durch eine Abbildung und statistischen Test, ob die Wahl zwischen /a/
und /a:/ durch F1 beeinflusst wurde. Bei welchem F1-Wert ist der /a ~
a:/ Umkipppunkt? Was sind die eingeschätzen propotionalen Werte zu
F1-Frequenzen 750, 800, und 850 Hz?# Proportionen erstellen, und Abbildung speichern
p1 = a.df %>%
group_by(F1, V) %>%
summarise(n = n()) %>%
mutate(prop = n/sum(n)) %>%
filter(V == levels(V)[2]) %>%
ggplot() +
aes(y = prop, x = F1) +
geom_point() +
ylab("Proportion /a:/")
## `summarise()` has grouped output by 'F1'. You can override using the `.groups`
## argument.
# Sigmoid-Koeffizienten:
km = a.df %>%
glm(V ~ F1, ., family=binomial) %>%
coef()
# überlagern und Bild speichern
p2 = p1 +
stat_function(fun = sigmoid,
args = list(k = km[1], m = km[2]), col="blue")
p2
## (Intercept)
## 809.931
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: V
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 399 499.98
## F1 1 13.92 398 486.06 0.0001907 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## [1] 0.4465338 0.4911072 0.5358224
Die Wahl ob /a/ oder /a:/ wurde signifikant von F1 beeinflusst (\(X^2\)[1] = 13.92, p < 0.001).
Q5: Für den Data-frame cont2.df
wurden F2 Werte automatisch in y
oder u
(Urteil
) für verschiedene Regionen (Region
)
und Altersgruppen (Alter
) von einem Spracherkennungssystem
klassifiziert. Prüfen Sie mit Abbildungen und statistischen Tests
ob:
Urteil
von Alter
beeinflusst wirdUrteil
von F2 beeinflusst wird.Für (b), bei welchem F2-Wert liegt der Umkipppunkt zwischen /y/ und /u/?
cont2.df %>%
ggplot +
aes(x = Alter, fill = Urteil) +
geom_bar(position="fill") +
ylab("Proportion")
Das Urteil wird nicht signifikant vom Alter beeinflusst.
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: Urteil
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 172 225.76
## Alter 2 2.5261 170 223.23 0.2828
Abbildung
p1 = cont2.df %>%
group_by(F2, Urteil) %>%
summarise(n = n()) %>%
mutate(prop = n/sum(n)) %>%
filter(Urteil == levels(Urteil)[2]) %>%
ggplot() +
aes(y = prop, x = F2) +
geom_point() +
ylab("Proportion 'y' ")
## `summarise()` has grouped output by 'F2'. You can override using the `.groups`
## argument.
Koeffiziente
Überlagerter Sigmoid
Umkipppunkt
## (Intercept)
## 1591.883
Das Urteil wird signifikant (X^2[1] = 29.488, p < 0.001) beeinflusst.
## Analysis of Deviance Table
##
## Model: binomial, link: logit
##
## Response: Urteil
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev Pr(>Chi)
## NULL 172 225.76
## F2 1 29.488 171 196.27 5.627e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1