Check assumptions
——-
dat_LM %>%
group_by(task, proficiency) %>%
identify_outliers(clauseperasunit)
## # A tibble: 6 × 37
## task proficiency id name trueid ld ld2 koto nobe asunit clause
## <ord> <ord> <fct> <chr> <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 L lower 27 WangYing… 28 50.7 3.8 50 75 3 10
## 2 L upper 1 Xiaxue 1 46.5 3.65 82 157 9 20
## 3 L upper 22 ZhangBoh… 22 41.3 4.33 74 126 4 12
## 4 M lower 13 LuYang 13 52.9 4.09 53 85 7 11
## 5 M lower 29 LiuChihy… 30 47.7 4.43 41 65 7 7
## 6 M middle 17 ZhenLinj… 17 40.4 3.83 38 57 2 6
## # ℹ 26 more variables: jyuzokuclause <dbl>, jyuzokuclauseperasunit <dbl>,
## # clauseperasunit <dbl>, wariai <dbl>, wariai2 <dbl>, jyodoushi <dbl>,
## # heiritsu <dbl>, kakari <dbl>, fukujyoshi <dbl>, ka <dbl>,
## # setsuzokujyoshi <dbl>, kakujyoshi <dbl>, syujyoshi <dbl>, rentai <dbl>,
## # hijiritsu <dbl>, setubimeishi <dbl>, setsubidoushi <dbl>,
## # setsubikeiyoushi <dbl>, kotonarucontents <dbl>,
## # kotonarucontents_asunit <dbl>, kotonarucontents_clause <dbl>, …
dat_LM %>%
group_by(task, proficiency) %>%
shapiro_test(clauseperasunit)
## # A tibble: 6 × 5
## task proficiency variable statistic p
## <ord> <ord> <chr> <dbl> <dbl>
## 1 L lower clauseperasunit 0.678 0.000243
## 2 L middle clauseperasunit 0.926 0.336
## 3 L upper clauseperasunit 0.761 0.00350
## 4 M lower clauseperasunit 0.880 0.103
## 5 M middle clauseperasunit 0.718 0.00127
## 6 M upper clauseperasunit 0.989 1.00
ggqqplot(dat_LM, "clauseperasunit", ggtheme = theme_bw()) +
facet_grid(task ~ proficiency)

dat_LM %>%
group_by(task) %>%
levene_test(clauseperasunit ~ proficiency)
## # A tibble: 2 × 5
## task df1 df2 statistic p
## <ord> <int> <int> <dbl> <dbl>
## 1 L 2 32 0.0444 0.957
## 2 M 2 32 1.90 0.167
dat_LM %>%
group_by(task, proficiency) %>%
get_summary_stats(clauseperasunit,type = "mean_sd")
## # A tibble: 6 × 6
## task proficiency variable n mean sd
## <ord> <ord> <fct> <dbl> <dbl> <dbl>
## 1 L lower clauseperasunit 11 1.49 0.654
## 2 L middle clauseperasunit 12 1.70 0.368
## 3 L upper clauseperasunit 12 1.62 0.536
## 4 M lower clauseperasunit 11 1.22 0.143
## 5 M middle clauseperasunit 12 1.52 0.521
## 6 M upper clauseperasunit 12 1.57 0.313
bxp <- ggboxplot(
dat_LM, x = "task", y = "clauseperasunit", add = "jitter",
color = "proficiency", palette = "lancet"
)
bxp + ggtitle("clauseperasunit LM")

outliers
dat_LM_2 <- dat_LM %>% filter(!(trueid == "22"|trueid == "28"|trueid == "13"|trueid == "17"|trueid == "1"|trueid == "11"))
dat_LM_2 %>%
group_by(task, proficiency) %>%
identify_outliers(clauseperasunit)
## [1] task proficiency id
## [4] name trueid ld
## [7] ld2 koto nobe
## [10] asunit clause jyuzokuclause
## [13] jyuzokuclauseperasunit clauseperasunit wariai
## [16] wariai2 jyodoushi heiritsu
## [19] kakari fukujyoshi ka
## [22] setsuzokujyoshi kakujyoshi syujyoshi
## [25] rentai hijiritsu setubimeishi
## [28] setsubidoushi setsubikeiyoushi kotonarucontents
## [31] kotonarucontents_asunit kotonarucontents_clause contents_asunit
## [34] contents_clause contents is.outlier
## [37] is.extreme
## <0 rows> (or 0-length row.names)
dat_LM_2 %>%
group_by(task, proficiency) %>%
shapiro_test(clauseperasunit)
## # A tibble: 6 × 5
## task proficiency variable statistic p
## <ord> <ord> <chr> <dbl> <dbl>
## 1 L lower clauseperasunit 0.943 0.616
## 2 L middle clauseperasunit 0.908 0.231
## 3 L upper clauseperasunit 0.843 0.0630
## 4 M lower clauseperasunit 0.963 0.827
## 5 M middle clauseperasunit 0.890 0.139
## 6 M upper clauseperasunit 0.975 0.936
ggqqplot(dat_LM_2, "clauseperasunit", ggtheme = theme_bw()) +
facet_grid(task ~ proficiency)

dat_LM_2 %>%
group_by(task) %>%
levene_test(clauseperasunit ~ proficiency)
## # A tibble: 2 × 5
## task df1 df2 statistic p
## <ord> <int> <int> <dbl> <dbl>
## 1 L 2 26 4.70 0.0182
## 2 M 2 26 2.32 0.118
bxp <- ggboxplot(
dat_LM_2, x = "task", y = "clauseperasunit", add = "jitter",
color = "proficiency", palette = "lancet"
)
bxp + ggtitle("clauseperasunit LM")

Computation
——-
dat_LM_2 %>%
group_by(task, proficiency) %>%
get_summary_stats(clauseperasunit, type = "mean_sd")
## # A tibble: 6 × 6
## task proficiency variable n mean sd
## <ord> <ord> <fct> <dbl> <dbl> <dbl>
## 1 L lower clauseperasunit 9 1.31 0.261
## 2 L middle clauseperasunit 11 1.70 0.386
## 3 L upper clauseperasunit 9 1.36 0.126
## 4 M lower clauseperasunit 9 1.18 0.094
## 5 M middle clauseperasunit 11 1.38 0.241
## 6 M upper clauseperasunit 9 1.48 0.279
res.aov <- anova_test(
data = dat_LM_2, dv = clauseperasunit, wid = trueid,
between = proficiency, within = task
)
get_anova_table(res.aov)
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 proficiency 2 26 6.536 0.005 * 0.197
## 2 task 1 26 2.474 0.128 0.046
## 3 proficiency:task 2 26 3.437 0.047 * 0.119
interaction.plot(x.factor = dat_LM_2$task, trace.factor = dat_LM_2$proficiency,
response = dat_LM_2$clauseperasunit, fun = mean,
type = "b", legend = TRUE, trace.label = "TASK")
### Effect of group at each time point
one.way <- dat_LM_2 %>%
group_by(task) %>%
anova_test(dv = clauseperasunit, wid = trueid, between = proficiency) %>%
get_anova_table() %>%
adjust_pvalue(method = "bonferroni")
one.way
## # A tibble: 2 × 9
## task Effect DFn DFd F p `p<.05` ges p.adj
## <ord> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <dbl>
## 1 L proficiency 2 26 5.48 0.01 * 0.297 0.02
## 2 M proficiency 2 26 4.04 0.03 * 0.237 0.06
Pairwise
comparisons between group levels
pwc <- dat_LM_2 %>%
group_by(task) %>%
pairwise_t_test(clauseperasunit ~ proficiency, p.adjust.method = "bonferroni")
pwc
## # A tibble: 6 × 10
## task .y. group1 group2 n1 n2 p p.signif p.adj p.adj.signif
## * <ord> <chr> <chr> <chr> <int> <int> <dbl> <chr> <dbl> <chr>
## 1 L clausepe… lower middle 9 11 0.00603 ** 0.0181 *
## 2 L clausepe… lower upper 9 9 0.726 ns 1 ns
## 3 L clausepe… middle upper 11 9 0.0146 * 0.0437 *
## 4 M clausepe… lower middle 9 11 0.0601 ns 0.18 ns
## 5 M clausepe… lower upper 9 9 0.01 * 0.03 *
## 6 M clausepe… middle upper 11 9 0.352 ns 1 ns