library(tidyverse)
## ── Attaching packages ──────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.2
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.1.3     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## Warning: package 'tidyr' was built under R version 3.6.2
## ── Conflicts ─────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(readxl)
my.data <- read_excel(path = "Chapter10data.xlsx", sheet="Ex10-105")
head(my.data)
## # A tibble: 5 x 2
##   Group1 Group
##    <dbl> <dbl>
## 1    161   132
## 2    169   162
## 3    174   134
## 4    158   138
## 5    163   133

T Tests

with(my.data, t.test(Group1, Group, var.equal=TRUE, alternative="two.sided"))
## 
##  Two Sample t-test
## 
## data:  Group1 and Group
## t = 3.9775, df = 8, p-value = 0.004076
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  10.59005 39.80995
## sample estimates:
## mean of x mean of y 
##     165.0     139.8

ANOVA

pivot_longer(my.data, cols=everything(), names_to="Group1", values_to="lifespan") %>%
  filter(!is.na(lifespan)) -> long.data

print.data.frame(long.data, digits=3)
##    Group1 lifespan
## 1  Group1      161
## 2   Group      132
## 3  Group1      169
## 4   Group      162
## 5  Group1      174
## 6   Group      134
## 7  Group1      158
## 8   Group      138
## 9  Group1      163
## 10  Group      133
summary(
  aov(lifespan ~ Group1, data=long.data)
)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## Group1       1 1587.6  1587.6   15.82 0.00408 **
## Residuals    8  802.8   100.3                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

The p-values of the t test and the ANOVA are very close to each other.

Paired T Test

FatigueData <- read_excel(path = "Chapter10data.xlsx", sheet="Ex10-45")
head(FatigueData)
## # A tibble: 6 x 3
##   Subject PreFatigue PostFatigue
##     <dbl>      <dbl>       <dbl>
## 1       1        158          91
## 2       2         92          59
## 3       3         65         215
## 4       4         98         226
## 5       5         33         223
## 6       6         89          91
with(FatigueData, t.test(PreFatigue, PostFatigue, alternative="two.sided"))
## 
##  Welch Two Sample t-test
## 
## data:  PreFatigue and PostFatigue
## t = -3.1498, df = 24.124, p-value = 0.004319
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -89.59480 -18.67187
## sample estimates:
## mean of x mean of y 
##  92.73333 146.86667

Blocked ANOVA

FatigueData %>%
  pivot_longer(cols=PreFatigue:PostFatigue, names_to="FatigueType", values_to="Fatigue") %>%
  filter(!is.na(Fatigue)) -> long.data

print.data.frame(long.data, digits=3)
##    Subject FatigueType Fatigue
## 1        1  PreFatigue     158
## 2        1 PostFatigue      91
## 3        2  PreFatigue      92
## 4        2 PostFatigue      59
## 5        3  PreFatigue      65
## 6        3 PostFatigue     215
## 7        4  PreFatigue      98
## 8        4 PostFatigue     226
## 9        5  PreFatigue      33
## 10       5 PostFatigue     223
## 11       6  PreFatigue      89
## 12       6 PostFatigue      91
## 13       7  PreFatigue     148
## 14       7 PostFatigue      92
## 15       8  PreFatigue      58
## 16       8 PostFatigue     177
## 17       9  PreFatigue     142
## 18       9 PostFatigue     134
## 19      10  PreFatigue     117
## 20      10 PostFatigue     116
## 21      11  PreFatigue      74
## 22      11 PostFatigue     153
## 23      12  PreFatigue      66
## 24      12 PostFatigue     219
## 25      13  PreFatigue     109
## 26      13 PostFatigue     143
## 27      14  PreFatigue      57
## 28      14 PostFatigue     164
## 29      15  PreFatigue      85
## 30      15 PostFatigue     100
summary(
  aov(Fatigue ~ FatigueType, data=long.data)
)
##             Df Sum Sq Mean Sq F value  Pr(>F)   
## FatigueType  1  21978   21978   9.921 0.00387 **
## Residuals   28  62029    2215                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1