# Simulation der Verteilung der Teststatistik T eines Zweistichproben t-Tests unter H0:

# Sezten des Random-Seed, um die Simulation reproduzierbar zu machen
set.seed(1)

# Vermeiden wissenschaftlicher Notation bei Dezimalzahlen
options(scipen=999)

# Festlegen der Gruppengröße
n.G <- 40

# Einmaliger Durchlauf zur Illustration des Vorgehens
# Mittelwert in beiden Gruppen: 50
# Standardabweichung in beiden Gruppen: 10
A <- rnorm(n.G,50,10) # Erzeugen der Werte für Gruppe A
B <- rnorm(n.G,50,10) # Erzeugen der Werte für Gruppe B
T_Test <- t.test(A,B) # t-Test zum Vergleich der beiden Gruppen
T_Test

# Erzeugen von Vektoren zum Speichern der Teststatitik, des p-Wertes und der 
# Mittelwertdifferenz in den Simulationsdurchläufen
Stat <- c()
pval <- c()
Diff <- c()

# 10.000 Simulationsdurchläufe unter H0
# In jedem Durchlauf werden Mittelwertdifferenz, Teststatistik und p-Wert gespeichert 
for(i in 1:10000)
{
A <- rnorm(n.G,50,10)
B <- rnorm(n.G,50,10)
T_Test <- t.test(A,B,var.equal=T)
Diff[i] <- mean(A) - mean(B)

Stat[i] <- T_Test$stat
pval[i] <- T_Test$p.value
if(is.element(i, seq(1000,10000,by=1000)))
print(i)
}

# Darstellen des Anteils der erzeugten Datensätze, die zu einem p<0.05 geführt haben (Fehler 1. Art)
prop.table(table(pval<0.05))

# Histogramm zur Verteilung der Mittelwertdifferenzen
hist(Diff,xlim=c(-11,11),ylim=c(0,0.55),breaks=seq(-11,11,by=0.5),main="Verteilung der Mittelwertdifferenzen",col="grey",prob=T,xlab="Mittelwertdifferenz")
text(-7,0.3,paste("MW=",round(mean(Diff),4),"\nSE=",round(sd(Diff),4)))

# Histogramm zur Verteilung der Teststatistik    
hist(Stat,xlim=c(-11,11),ylim=c(0,0.55),breaks=seq(-11,11,by=0.5),main="Verteilung der Teststatistik T",col="blue",prob=T, xlab="T")
text(-7,0.3,paste("MW=",round(mean(Stat),4),"\nSE=",round(sd(Stat),4)))
lines(seq(-11,11,length=1000),dnorm(seq(-11,11,length=1000)),col="red",lwd=2)
