---
title: "Lecture11"
output: html_document
---
```{r}
# Simulation shows that the U- (resp. W-) statistics is normally distributed.
simulation <- function(Levels, N, N1, N2) {
data <- c()
for(i in 1:N) {
s1 <- sample(Levels, N1, replace = T)
s2 <- sample(Levels, N2, replace = T)
ranks <- rank(c(s1, s2))
r1 <- sum(ranks[1:N1]) - sum(1:N1)
r2 <- sum(ranks[(N1+1):(N1+N2)]) - sum(1:N2)
data <- rbind(data, c(r1, r2))
}
return(data.frame(U1 = data[,1], U2 = data[,2]))
}
Levels <- c("a", "b", "c", "d", "e", "f", "g")
N = 10000
n1 = 20
n2 = 20
sim <- simulation(Levels, N, n1, n2)
hist(sim$U1)
hist(sim$U2)
cat("Mean theoretical: ", n1*n2/2, "Mean empirical:", mean(sim$U1),"\n")
cat("SD theoretical (uncorrected):", sqrt(n1*n2*(n1+n2+1)/12), "SD empirical:", sd(sim$U1), "\n")
```
```{r}
# U-Test vs. t-Test
N = 1000
occ <- c()
for(i in 1:N) {
g1 <- rnorm(30)
g2 <- rnorm(30)
occ <- rbind(occ, c(t.test(g1, g2)$p.value, wilcox.test(g1, g2)$p.value))
}
# U and t (Type-1 Errors)
# t-Test wrong
nrow(occ[occ[,1] < 0.05,])
# U-test wrong
nrow(occ[occ[,2] < 0.05,])
# Disagreements
nrow(rbind(occ[occ[,1] < 0.05 & occ[,2] > 0.05,],
occ[occ[,1] > 0.05 & occ[,2] < 0.05,]))/N
```
```{r}
# U-Test vs. t-Test (Ordinal)
N = 1000
Levels <- c(1,2,3,4,5,6,7)
occ <- c()
for(i in 1:N) {
g1 <- sample(Levels, 30, replace = T)
g2 <- sample(Levels, 30, replace = T)
occ <- rbind(occ, c(t.test(g1, g2)$p.value, wilcox.test(g1, g2, exact=F)$p.value))
}
# U and t (Type-1 Errors)
# t-Test wrong
nrow(occ[occ[,1] < 0.05,])
# U-test wrong
nrow(occ[occ[,2] < 0.05,])
# Disagreements
nrow(rbind(occ[occ[,1] < 0.05 & occ[,2] > 0.05,],
occ[occ[,1] > 0.05 & occ[,2] < 0.05,]))/N
```
```{r}
# U-Test vs. t-Test
N = 1000
occ <- c()
for(i in 1:N) {
g1 <- rnorm(30)
g2 <- rnorm(30, mean = 1)
occ <- rbind(occ, c(t.test(g1, g2)$p.value, wilcox.test(g1, g2)$p.value))
}
# U and t (Type-2 Errors)
# t-Test wrong
nrow(occ[occ[,1] > 0.05,])
# U-test wrong
nrow(occ[occ[,2] > 0.05,])
# Disagreements
nrow(rbind(occ[occ[,1] < 0.05 & occ[,2] > 0.05,],
occ[occ[,1] > 0.05 & occ[,2] < 0.05,]))/N
```
```{r}
# U-Test vs. t-Test (Ordinal)
N = 1000
Levels1 <- c(1,2,3,4,5,6,7)
Levels2 <- c(1,1,1,1,1,1,1,1,1,1,2,3,4,5,6,7)
occ <- c()
for(i in 1:N) {
g1 <- sample(Levels1, 30, replace = T)
g2 <- sample(Levels2, 30, replace = T)
occ <- rbind(occ, c(t.test(g1, g2)$p.value, wilcox.test(g1, g2, exact=F)$p.value))
}
# U and t (Type-2 Errors)
# t-Test wrong
nrow(occ[occ[,1] > 0.05,])
# U-test wrong
nrow(occ[occ[,2] > 0.05,])
# Disagreements
nrow(rbind(occ[occ[,1] < 0.05 & occ[,2] > 0.05,],
occ[occ[,1] > 0.05 & occ[,2] < 0.05,]))/N
```
```{r}
# Wilcoxon Signed-Rank-Test Example
before <- c(1, 2, 2, 3, 3)
after <- c(2, 3, 3, 3, 1)
wilcox.test(before, after, paired = T, correct = F, exact = F)
t.test(before, after, paired = T, correct = F)
```
```{r}
# Wilcoxon Rank-Sum-Test Example
m1 <- c(1, 1, 2, 2, 2)
m2 <- c(2, 3, 3, 3, 2)
wilcox.test(m1, m2, correct = F)
```
```{r}
# Kruskall-Wallis-Test Example
m1 <- c(1, 1, 2, 2, 2)
m2 <- c(2, 3, 3, 3, 2)
m3 <- c(1, 2, 2, 1, 2)
kruskal.test(list(m1, m2, m3))
```