SubjectID | W1 | W2 | W3 | W4 | W5 |
---|---|---|---|---|---|
100 | 24 | 24 | NA | NA | NA |
103 | NA | 18 | 21 | NA | 32 |
106 | 29 | 30 | NA | NA | NA |
107 | 28 | 34 | 37 | NA | 24 |
122 | 36 | 42 | NA | 24 | NA |
125 | 40 | NA | 33 | NA | NA |
130 | 9 | NA | NA | NA | NA |
135 | 42 | NA | NA | NA | NA |
137 | 21 | 26 | NA | NA | NA |
139 | NA | 35 | 26 | NA | 20 |
143 | 39 | 41 | 37 | NA | 38 |
160 | 42 | 42 | NA | NA | 33 |
172 | 22 | 34 | 40 | NA | 24 |
SubjectID | workshop | score |
---|---|---|
100 | W1 | 24 |
103 | W1 | NA |
106 | W1 | 29 |
107 | W1 | 28 |
122 | W1 | 36 |
125 | W1 | 40 |
130 | W1 | 9 |
135 | W1 | 42 |
137 | W1 | 21 |
139 | W1 | NA |
143 | W1 | 39 |
160 | W1 | 42 |
172 | W1 | 22 |
100 | W2 | 24 |
103 | W2 | 18 |
106 | W2 | 30 |
107 | W2 | 34 |
122 | W2 | 42 |
125 | W2 | NA |
130 | W2 | NA |
135 | W2 | NA |
137 | W2 | 26 |
139 | W2 | 35 |
143 | W2 | 41 |
160 | W2 | 42 |
172 | W2 | 34 |
100 | W3 | NA |
103 | W3 | 21 |
106 | W3 | NA |
107 | W3 | 37 |
122 | W3 | NA |
125 | W3 | 33 |
130 | W3 | NA |
135 | W3 | NA |
137 | W3 | NA |
139 | W3 | 26 |
143 | W3 | 37 |
160 | W3 | NA |
172 | W3 | 40 |
100 | W4 | NA |
103 | W4 | NA |
106 | W4 | NA |
107 | W4 | NA |
122 | W4 | 24 |
125 | W4 | NA |
130 | W4 | NA |
135 | W4 | NA |
137 | W4 | NA |
139 | W4 | NA |
143 | W4 | NA |
160 | W4 | NA |
172 | W4 | NA |
100 | W5 | NA |
103 | W5 | 32 |
106 | W5 | NA |
107 | W5 | 24 |
122 | W5 | NA |
125 | W5 | NA |
130 | W5 | NA |
135 | W5 | NA |
137 | W5 | NA |
139 | W5 | 20 |
143 | W5 | 38 |
160 | W5 | 33 |
172 | W5 | 24 |
SubjectID | missing |
---|---|
100 | 3 |
103 | 2 |
106 | 3 |
107 | 1 |
122 | 2 |
125 | 3 |
130 | 4 |
135 | 4 |
137 | 3 |
139 | 2 |
143 | 1 |
160 | 2 |
172 | 1 |
p1 + geom_line() + stat_smooth(aes(group = SubjectID)) + stat_summary(aes(group = SubjectID),
geom = "point", fun.y = mean, shape = 17, size = 3)
p1 + geom_line() + stat_smooth(aes(group = SubjectID), method = "lm", se = FALSE) +
stat_summary(aes(group = SubjectID), geom = "point", fun.y = mean, shape = 17, size = 3)
Now, we might be interested in estimating the overall trend in the data. One option is to add a line using locally weighted regression (lowess) to ???smooth??? over all the variability and give a sense of the overall or average trend. It just takes one short line of code and is automatically calculated
Note again, we use group = 1, so the smooth is not calculated separately for each id
geom_smooth: method=“auto” and size of largest group is <1000, so using loess. Use ‘method = x’ to change the smoothing method.
p1 + geom_line() + stat_smooth(aes(group = 1)) + stat_summary(aes(group = 1),
geom = "point", fun.y = mean, shape = 17, size = 3)
Looks like between worskshop 1 and 3, an intervention/ or something happened, and we wish to fit a piecewise linear model rather than an overall smooth. We can do this by creating a dummy variable (pre/post intervention) and its interaction with time. The only change is a slightly more complex formula.
The default is y ~ x. I(x > 1) creates a dummy (TRUE/FALSE) variable if x (time in this case) is greater than 1. The aestrick in the formula asks for the main effects and the interaction between x and the dummy variable from x.
Now we can see that the trend line jumps after W2, and the slope is allowed to change and it seems drastic indicating their is an interaction between time and intervention (if the change appears minimal, it is a suggestion there is not an interaction between our hypothetical intervention and time)
p1 + geom_line() + stat_smooth(aes(group = 1), method = "lm", formula = y ~
x * I(x > 3), se = FALSE) + stat_summary(aes(group = 1), fun.y = mean, geom = "point",
shape = 17, size = 3)
Preparing the data
Test code for extracting Complete Cases
## [1] TRUE
## # A tibble: 8 x 3
## SubjectID W1 W2
## <chr> <dbl> <dbl>
## 1 100 24 24
## 2 106 29 30
## 3 107 28 34
## 4 122 36 42
## 5 137 21 26
## 6 143 39 41
## 7 160 42 42
## 8 172 22 34
SubjectID | W1 | W2 |
---|---|---|
100 | 24 | 24 |
106 | 29 | 30 |
107 | 28 | 34 |
122 | 36 | 42 |
137 | 21 | 26 |
143 | 39 | 41 |
160 | 42 | 42 |
172 | 22 | 34 |
## Classes 'tbl_df', 'tbl' and 'data.frame': 8 obs. of 3 variables:
## $ SubjectID: chr "100" "106" "107" "122" ...
## $ W1 : num 24 29 28 36 21 39 42 22
## $ W2 : num 24 30 34 42 26 41 42 34
## # A tibble: 4 x 3
## SubjectID W1 W3
## <chr> <dbl> <dbl>
## 1 107 28 37
## 2 125 40 33
## 3 143 39 37
## 4 172 22 40
## SubjectID W1 W3
## Length:4 Min. :22.00 Min. :33.00
## Class :character 1st Qu.:26.50 1st Qu.:36.00
## Mode :character Median :33.50 Median :37.00
## Mean :32.25 Mean :36.75
## 3rd Qu.:39.25 3rd Qu.:37.75
## Max. :40.00 Max. :40.00
## # A tibble: 1 x 3
## SubjectID W1 W4
## <chr> <dbl> <dbl>
## 1 122 36 24
## # A tibble: 4 x 3
## SubjectID W1 W5
## <chr> <dbl> <dbl>
## 1 107 28 24
## 2 143 39 38
## 3 160 42 33
## 4 172 22 24
## SubjectID W1 W5
## Length:4 Min. :22.00 Min. :24.00
## Class :character 1st Qu.:26.50 1st Qu.:24.00
## Mode :character Median :33.50 Median :28.50
## Mean :32.75 Mean :29.75
## 3rd Qu.:39.75 3rd Qu.:34.25
## Max. :42.00 Max. :38.00
### Creating Final Table of p-values related to randomisation based test and t-test for paired comparisons
Rand test | ttest | |
---|---|---|
W2 vs. W1 | 0.016 | 0.014 |
W3 vs. W1 | 0.312 | 0.240 |
W4 vs. W1 | NA | NA |
W5 vs. W1 | 0.880 | 0.855 |