# Daten einlesen
setwd("~/Methodenberatung/Lehrportal/t.test -neu")
dat <- read.csv("ttest_example.csv")

# head(dat)

## t-tests

### 1-sample t-test mean =/= 0 (selten verwendet):
ttest1 <- t.test(dat$DV, mu = 0)
ttest1
## 
##  One Sample t-test
## 
## data:  dat$DV
## t = 53.195, df = 108, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  46.67969 50.29314
## sample estimates:
## mean of x 
##  48.48641
### zweiseitiger Welch t-test für unabhängige Stichproben 
# (robust bei Heteroskedastizität)
ttest2 <- t.test(dat$DV ~ dat$Group, 
                 var.equal = F)
ttest2
## 
##  Welch Two Sample t-test
## 
## data:  dat$DV by dat$Group
## t = 4.4058, df = 106.93, p-value = 2.513e-05
## alternative hypothesis: true difference in means between group Gr1 and group Gr2 is not equal to 0
## 95 percent confidence interval:
##   3.979247 10.489524
## sample estimates:
## mean in group Gr1 mean in group Gr2 
##          51.53946          44.30507
# Mittelwerte per group:
m1 = ttest2[["estimate"]][["mean in group Gr1"]]
m1
## [1] 51.53946
m2 = ttest2[["estimate"]][["mean in group Gr2"]]
m2
## [1] 44.30507
# Standardabweichung per group:
sd1 = aggregate(dat$DV ~ dat$Group, FUN = sd)[1,2]
sd1
## [1] 9.815275
sd2 = aggregate(dat$DV ~ dat$Group, FUN = sd)[2,2]
sd2
## [1] 7.326906
# cohens d:
cohensd = (m1 - m2)/sqrt((sd1^2 + sd2^2)/2) 

# Korrekter Berichtssatz:
cat("Die Gruppen unterscheiden sich (nicht) signifikant in ihren Mittelwerten (M1 =", m1, 
    ", M2 = ", m2, 
    ", SD1 = ", sd1, 
    ", SD2 = ", sd2,
    "; t(", ttest2[["parameter"]][["df"]],
    ") = ", ttest2[["statistic"]][["t"]], 
    ", p = ", ttest2[["p.value"]],
    ", d = ", cohensd, ".")
## Die Gruppen unterscheiden sich (nicht) signifikant in ihren Mittelwerten (M1 = 51.53946 , M2 =  44.30507 , SD1 =  9.815275 , SD2 =  7.326906 ; t( 106.9339 ) =  4.40578 , p =  2.512651e-05 , d =  0.8352904 .
# Einseitiger Welch-t-Test für unabhängige Stichproben
ttest2.b <- t.test(dat$DV ~ dat$Group, 
                   alternative = "greater", # hier: Gr1 > Gr2 (alternativ: "less")
                   var.equal = F) 
ttest2.b 
## 
##  Welch Two Sample t-test
## 
## data:  dat$DV by dat$Group
## t = 4.4058, df = 106.93, p-value = 1.256e-05
## alternative hypothesis: true difference in means between group Gr1 and group Gr2 is greater than 0
## 95 percent confidence interval:
##  4.509897      Inf
## sample estimates:
## mean in group Gr1 mean in group Gr2 
##          51.53946          44.30507
### t-Test für abhängige Stichproben (= paired t-Test)

# daten einlesen (müssen im wide format sein, siehe unten für Beispiel mit long format)
dat_wide <- read.csv("ttest_example2.csv")
View(dat_wide)
# head(dat)

# t-test für abhängige Stichproben
ttest3 <- t.test(dat_wide$DV, dat_wide$DV_post, paired = T)
ttest3
## 
##  Paired t-test
## 
## data:  dat_wide$DV and dat_wide$DV_post
## t = 3.3598, df = 45, p-value = 0.001597
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##   2.674638 10.680881
## sample estimates:
## mean difference 
##         6.67776
# t-Test für abhänge Stichproben und long format

library(tidyr)
dat_long2<-gather(dat_wide,pre_post,DV,DV,DV_post) # Erstelle long format aus wide format
View(dat_long2)

ttest3.b <- with(dat_long2,t.test(x=DV[pre_post=="DV"]#*
                                  , y=DV[pre_post=="DV_post"],
                            paired= T)) 
ttest3.b
## 
##  Paired t-test
## 
## data:  DV[pre_post == "DV"] and DV[pre_post == "DV_post"]
## t = 3.3598, df = 45, p-value = 0.001597
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##   2.674638 10.680881
## sample estimates:
## mean difference 
##         6.67776
#* x gibt die Spalte in der die Messungen (nummerisch) stehen an und [] z.B. wie hier den Messzeitpunkt