Lösungen
Aufgabe_1
# library(Hmisc) für Hmisc::rcorr
# library(corrplot) für corrplot
# library(pwr)
# 1. Ermitteln Sie mit einer geeigneten Funktion die Korrelationen und prüfen Sie
# diese auch auf statistische Signifikanz.
CorRes <- Hmisc::rcorr(as.matrix(DF_Korr), type="pearson") # type can be pearson or spearman
pander::pander(round(CorRes$r, 2))
pander::pander(round(CorRes$P , 2))
# 2. Zeichnen Sie einen Korrelationsplot mit dem Paket *corrplot*.
corrplot::corrplot(cor(DF_Korr), type="upper", method = "ellipse")
# 3. Berechnen Sie die Teststärke der Korrelation $r(IQ, EP)$
# (Hinweis: verwenden Sie die Funktion *pwr::pwr.r.test* des Pakets *pwr*).
N <- dim(DF_Korr)[1]
PwrA <- pwr::pwr.r.test(n = N, r = 0.47, sig.level = 0.05, alternative = 'two.sided')
pander::pander(data.frame(Kennwerte = unlist(PwrA)))
# 4. Verwenden diese Funktion (*pwr::pwr.r.test*) um für eine Korrelation $r(x,y) = 0.21$
# den optimalen Stichprobenumfang zu berechnen.
OptN <- pwr::pwr.r.test(r = 0.21, sig.level = 0.05, power = 0.95, alternative = 'greater')
pander::pander(data.frame(Kennwerte = unlist(OptN)))
# 5. Prüfen Sie mit Hilfe der Funktion *mvn* aus dem Paket *MVN*
# die Voraussetzung der bivariaten Normalverteilung der
# Variablenpaare (EP,IQ), (EP, VZ) und (EP,PA).
# library(MVN)
# mvn(DF_Korr[, c("EP","IQ")], multivariatePlot = "persp")
# mvn(DF_Korr[, c("EP","VZ")], multivariatePlot = "persp")
# mvn(DF_Korr[, c("EP","PA")], multivariatePlot = "persp")
# 6. Berechnen Sie die durchschnittliche Korrelation von $r_1(EP,IQ)$, $r_1(EP,VZ)$ und $r_1(EP,PA)$.
round(fisherz2r(mean(c(fisherz(.47), fisherz(.36), fisherz(-.25)))), 2)
# 7. Prüfen Sie, on der Unterschied der Korrelationskoeffizienten $r(EP,IQ) = 0.47$ und $r(EP,VZ) = 0.36$
# statistisch signifikant ist. Verwenden Sie die Funktion *psych::paired.r()* aus dem Paket *psych*
# library(psych)
psych::paired.r(xy = .47,
xz = .36,
n = N,
twotailed = TRUE)
zurück zu Aufgabe
Aufgabe_2
# library(Hmisc)
# 1. Berechnen Sie zuerst nochmal die Pearson-Korrelation $r(EQ,IQ)$ des bereits geladenen Datensatzes
# und rechnen Sie dann eine Spearman Korrelation. Verwenden Sie nun die Funktion cor() des Basispakets.
# Vergleichen Sie die Ergebnisse!
EP <- DF_Korr$EP
IQ <- DF_Korr$IQ
CorPearson <- round(cor(EP, IQ, method = "pearson"), 2)
CorSpearman <- round(cor(EP, IQ, method = "spearman"), 2)
CorKendall <- round(cor(EP, IQ, method = "kendall"), 2)
pander::pander(data.frame(Pearson = CorPearson,
Spearman = CorSpearman,
Kendall = CorKendall))
# Alternativ kann auch cor.test() verwendet werden, dabei werden die Tests auf
# Signigikanz gleich mitgerechnet.
# cor.test(x = EP,
# y = IQ,
# alternative = 'two.sided',
# method = 'pearson')
# cor.test(x = EP,
# y = IQ,
# alternative = 'two.sided',
# method = 'spearman')
# cor.test(x = EP,
# y = IQ,
# alternative = 'two.sided',
# method = 'kendall')
# Bemerkung: cor.test() mit Kendall bringt Warnung bezüglich der Rangbindungen.
# Alternativ kann man daher die Funktion Kendall() des Paketes Kendal verwenden:
# library(Kendall)
# Kendall(x = EP,
# y = IQ)
# 2. Verwenden Sie die Funktion rank() um den Variablen EP und IQ Ränge zuzuordnen.
# Speichern Sie die Ergebnisse in EP_Ranks und IQ_Ranks und berechnen Sie anschließend
# eine Pearson-Korrelation. Vergleichen Sie die Ergebnisse mit dem vorherigen Pearson-r.
EP_Ranks <- rank(EP, na.last = TRUE,
ties.method = c("average"))
IQ_Ranks <- rank(IQ, na.last = TRUE,
ties.method = c("average"))
round(cor(EP_Ranks, IQ_Ranks, method = "pearson"), 2)
zurück zu Aufgabe
Aufgabe_3
# Zuerst wird die Examensperformanz über den Median in zwei Gruppen geteilt
# library(sjmisc)
DF_Biserial <- DF_Korr[order(EP), ]
DF_Biserial <- sjmisc::dicho(DF_Biserial,
dich.by = "median",
as.num = FALSE,
var.label = "Grp",
val.labels = c("low", "high"),
append = TRUE,
suffix = "_Grp")
IQ <- DF_Biserial$IQ
biserial(x = IQ, y = DF_Biserial$EP_Grp)
zurück zu Aufgabe