# t-tests

## Install required packages

effectsize

wants <- c("effectsize")
has   <- wants %in% rownames(installed.packages())
if(any(!has)) install.packages(wants[!has])

## One-sample $$t$$-test

### Test

set.seed(123)
N    <- 100
DV   <- rnorm(N, 5, 20)
muH0 <- 0
t.test(DV, alternative="two.sided", mu=muH0)

One Sample t-test

data:  DV
t = 3.7292, df = 99, p-value = 0.0003203
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
3.185669 10.430568
sample estimates:
mean of x
6.808118 

### Effect size estimate (Cohen’s $$d$$)

library(effectsize)
cohens_d(DV)
Cohen's d |       95% CI
------------------------
0.37 | [0.17, 0.58]
- Estimate using pooled SD

## Two-sample $$t$$-test for independent samples

### $$t$$-Test

Nj     <- c(18, 21)
DVm    <- rnorm(Nj[1], 180, 10)
DVf    <- rnorm(Nj[2], 175, 6)
tIndDf <- data.frame(DV=c(DVm, DVf),
IV=factor(rep(c("f", "m"), Nj)))
t.test(DVf, DVm, alternative="less", var.equal=TRUE)
t.test(DV ~ IV, alternative="greater", var.equal=TRUE, data=tIndDf)

Two Sample t-test

data:  DV by IV
t = 1.1137, df = 37, p-value = 0.1363
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
-1.230298       Inf
sample estimates:
mean in group f mean in group m
177.0479        174.6580 

### Welch $$t$$-Test

t.test(DV ~ IV, alternative="greater", var.equal=FALSE, data=tIndDf)

Welch Two Sample t-test

data:  DV by IV
t = 1.1032, df = 34.359, p-value = 0.1388
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
-1.27206      Inf
sample estimates:
mean in group f mean in group m
177.0479        174.6580 

### Effect size estimate

Cohen’s $$d$$ and Hedge’s $$g$$

library(effectsize)
cohens_d(DV ~ IV, data=tIndDf)
Cohen's d |        95% CI
-------------------------
0.36 | [-0.28, 0.99]
- Estimate using pooled SD
hedges_g(DV ~ IV, data=tIndDf)
Hedge's g |        95% CI
-------------------------
0.35 | [-0.27, 0.97]
- Estimate using pooled SD
- Sample samle bias corrected using Hedges and Olkin's correction.

## Two-sample $$t$$-test for dependent samples

### Test

N      <- 20
DVpre  <- rnorm(N, mean=90,  sd=15)
DVpost <- rnorm(N, mean=100, sd=15)
tDepDf <- data.frame(DV=c(DVpre, DVpost),
IV=factor(rep(0:1, each=N), labels=c("pre", "post")))
t.test(DV ~ IV, alternative="less", paired=TRUE, data=tDepDf)

Paired t-test

data:  DV by IV
t = -2.9918, df = 19, p-value = 0.003748
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
-Inf -6.739295
sample estimates:
mean of the differences
-15.96821 

Based on data in wide format

# requires R version >= 4.0.0
t.test(Pair(DVpre, DVpost) ~ 1, alternative="less")

Equivalent: one-sample t-test for variable built of pair-wise differences

DVdiff <- DVpre - DVpost
t.test(DVdiff, alternative="less")

### Effect size estimate (Cohen’s $$d$$)

cohens_d(DV ~ IV, paired=TRUE, data=tDepDf)
Cohen's d |         95% CI
--------------------------
-0.67 | [-1.18, -0.18]
- Estimate using pooled SD

## Detach (automatically) loaded packages (if possible)

try(detach(package:effectsize))