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