This website contains data and R code used for the data processing and analysis in Shin and Park (2024). The scripts have been posted on an online data repository, accessible at the Center for Open Science and GitHub.
Shin, M., & Park, J. (2024). Technology-assisted instruction with teacher prompts on fraction multiplication word problems: A single-case design with visual analysis and Bayesian multilevel modeling. Assistive Technology. https://doi.org/10.1080/10400435.2024.2415366
suppressPackageStartupMessages({
library(knitr)
library(kableExtra)
library(readxl)
library(officer)
library(flextable)
library(DT)
library(tidyr)
library(dplyr)
library(stringr)
library(downloadthis)
library(ggh4x)
library(broom)
library(gridExtra)
library(SingleCaseES)
library(brms)
library(ggplot2)
})
web_based_data <- read.csv("data/web_based_data.csv")
case | date | day | phase | question_type | item_combination | item_partition | item_comparison | sum | visualization | solving | A | B | M | min_A | min_B | min_M | level_AB | level_BM | time_A | time_B | time_M | trend_AB | trend_BM |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2/16/2023 | 1 | Baseline | visualization | 1 | 1 | 0 | 2 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -6 | -32 | 0 | 0 |
1 | 2/17/2023 | 2 | Baseline | visualization | 1 | 2 | 0 | 3 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | -5 | -31 | 0 | 0 |
1 | 2/21/2023 | 6 | Baseline | visualization | 1 | 1 | 1 | 3 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 5 | -1 | -27 | 0 | 0 |
1 | 2/22/2023 | 7 | Intervention | visualization | 1 | 1 | 1 | 3 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 6 | 0 | -26 | 0 | 0 |
1 | 2/23/2023 | 8 | Intervention | visualization | 3 | 1 | 1 | 5 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 7 | 1 | -25 | 1 | 0 |
1 | 2/27/2023 | 12 | Intervention | visualization | 4 | 4 | 4 | 12 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 11 | 5 | -21 | 5 | 0 |
1 | 2/28/2023 | 13 | Intervention | visualization | 4 | 5 | 4 | 13 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 12 | 6 | -20 | 6 | 0 |
1 | 3/1/2023 | 14 | Intervention | visualization | 3 | 3 | 4 | 10 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 13 | 7 | -19 | 7 | 0 |
1 | 3/2/2023 | 15 | Intervention | visualization | 4 | 4 | 4 | 12 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 14 | 8 | -18 | 8 | 0 |
1 | 3/6/2023 | 19 | Intervention | visualization | 5 | 4 | 4 | 13 | 1 | 0 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 18 | 12 | -14 | 12 | 0 |
1 | 3/20/2023 | 33 | Maintenance | visualization | 5 | 4 | 5 | 14 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 32 | 26 | 0 | 26 | 0 |
1 | 4/4/2023 | 48 | Maintenance | visualization | 4 | 3 | 4 | 11 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 47 | 41 | 15 | 41 | 15 |
1 | 4/25/2023 | 69 | Maintenance | visualization | 4 | 4 | 4 | 12 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 68 | 62 | 36 | 62 | 36 |
1 | 5/16/2023 | 90 | Maintenance | visualization | 4 | 4 | 4 | 12 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 89 | 83 | 57 | 83 | 57 |
2 | 2/16/2023 | 1 | Baseline | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -12 | -35 | 0 | 0 |
2 | 2/23/2023 | 8 | Baseline | visualization | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 7 | -5 | -28 | 0 | 0 |
2 | 2/27/2023 | 12 | Baseline | visualization | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 11 | -1 | -24 | 0 | 0 |
2 | 2/28/2023 | 13 | Intervention | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 12 | 0 | -23 | 0 | 0 |
2 | 3/1/2023 | 14 | Intervention | visualization | 3 | 3 | 2 | 8 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 13 | 1 | -22 | 1 | 0 |
2 | 3/2/2023 | 15 | Intervention | visualization | 3 | 3 | 3 | 9 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 14 | 2 | -21 | 2 | 0 |
2 | 3/6/2023 | 19 | Intervention | visualization | 5 | 3 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 18 | 6 | -17 | 6 | 0 |
2 | 3/7/2023 | 20 | Intervention | visualization | 5 | 5 | 5 | 15 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 19 | 7 | -16 | 7 | 0 |
2 | 3/8/2023 | 21 | Intervention | visualization | 5 | 5 | 5 | 15 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 20 | 8 | -15 | 8 | 0 |
2 | 3/9/2023 | 22 | Intervention | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 21 | 9 | -14 | 9 | 0 |
2 | 3/23/2023 | 36 | Maintenance | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 35 | 23 | 0 | 23 | 0 |
2 | 4/25/2023 | 69 | Maintenance | visualization | 4 | 1 | 2 | 7 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 68 | 56 | 33 | 56 | 33 |
2 | 5/11/2023 | 85 | Maintenance | visualization | 3 | 3 | 5 | 11 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 84 | 72 | 49 | 72 | 49 |
3 | 2/24/2023 | 9 | Baseline | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | -25 | -60 | 0 | 0 |
3 | 3/6/2023 | 19 | Baseline | visualization | 1 | 1 | 1 | 3 | 1 | 0 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 10 | -15 | -50 | 0 | 0 |
3 | 3/9/2023 | 22 | Baseline | visualization | 1 | 1 | 1 | 3 | 1 | 0 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 13 | -12 | -47 | 0 | 0 |
3 | 3/21/2023 | 34 | Intervention | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 25 | 0 | -35 | 0 | 0 |
3 | 3/22/2023 | 35 | Intervention | visualization | 5 | 3 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 26 | 1 | -34 | 1 | 0 |
3 | 3/23/2023 | 36 | Intervention | visualization | 3 | 3 | 5 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 27 | 2 | -33 | 2 | 0 |
3 | 3/24/2023 | 37 | Intervention | visualization | 5 | 3 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 28 | 3 | -32 | 3 | 0 |
3 | 3/27/2023 | 40 | Intervention | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 31 | 6 | -29 | 6 | 0 |
3 | 3/28/2023 | 41 | Intervention | visualization | 3 | 5 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 32 | 7 | -28 | 7 | 0 |
3 | 3/31/2023 | 44 | Intervention | visualization | 3 | 3 | 3 | 9 | 1 | 0 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 35 | 10 | -25 | 10 | 0 |
3 | 4/25/2023 | 69 | Maintenance | visualization | 3 | 3 | 3 | 9 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 60 | 35 | 0 | 35 | 0 |
3 | 5/16/2023 | 90 | Maintenance | visualization | 5 | 3 | 2 | 10 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 81 | 56 | 21 | 56 | 21 |
3 | 5/18/2023 | 92 | Maintenance | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 83 | 58 | 23 | 58 | 23 |
4 | 2/28/2023 | 13 | Baseline | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 0 | -28 | -56 | 0 | 0 |
4 | 3/8/2023 | 21 | Baseline | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 8 | -20 | -48 | 0 | 0 |
4 | 3/22/2023 | 35 | Baseline | visualization | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 22 | -6 | -34 | 0 | 0 |
4 | 3/28/2023 | 41 | Intervention | visualization | 2 | 2 | 2 | 6 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 28 | 0 | -28 | 0 | 0 |
4 | 3/29/2023 | 42 | Intervention | visualization | 2 | 2 | 2 | 6 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 29 | 1 | -27 | 1 | 0 |
4 | 3/30/2023 | 43 | Intervention | visualization | 2 | 2 | 2 | 6 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 30 | 2 | -26 | 2 | 0 |
4 | 3/31/2023 | 44 | Intervention | visualization | 2 | 2 | 2 | 6 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 31 | 3 | -25 | 3 | 0 |
4 | 4/4/2023 | 48 | Intervention | visualization | 5 | 3 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 35 | 7 | -21 | 7 | 0 |
4 | 4/5/2023 | 49 | Intervention | visualization | 2 | 5 | 5 | 12 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 36 | 8 | -20 | 8 | 0 |
4 | 4/6/2023 | 50 | Intervention | visualization | 5 | 3 | 3 | 11 | 1 | 0 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 37 | 9 | -19 | 9 | 0 |
4 | 4/25/2023 | 69 | Maintenance | visualization | 2 | 2 | 2 | 6 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 56 | 28 | 0 | 28 | 0 |
4 | 5/15/2023 | 89 | Maintenance | visualization | 5 | 3 | 5 | 13 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 76 | 48 | 20 | 48 | 20 |
4 | 5/18/2023 | 92 | Maintenance | visualization | 3 | 3 | 5 | 11 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 79 | 51 | 23 | 51 | 23 |
1 | 2/16/2023 | 1 | Baseline | solving | 2 | 1 | 4 | 7 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -6 | -32 | 0 | 0 |
1 | 2/17/2023 | 2 | Baseline | solving | 4 | 1 | 1 | 6 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | -5 | -31 | 0 | 0 |
1 | 2/21/2023 | 6 | Baseline | solving | 4 | 1 | 1 | 6 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 5 | -1 | -27 | 0 | 0 |
1 | 2/22/2023 | 7 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 6 | 0 | -26 | 0 | 0 |
1 | 2/23/2023 | 8 | Intervention | solving | 4 | 4 | 3 | 11 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 7 | 1 | -25 | 1 | 0 |
1 | 2/27/2023 | 12 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 11 | 5 | -21 | 5 | 0 |
1 | 2/28/2023 | 13 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 12 | 6 | -20 | 6 | 0 |
1 | 3/1/2023 | 14 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 13 | 7 | -19 | 7 | 0 |
1 | 3/2/2023 | 15 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 14 | 8 | -18 | 8 | 0 |
1 | 3/6/2023 | 19 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 7 | 0 | 1 | 0 | 18 | 12 | -14 | 12 | 0 |
1 | 3/20/2023 | 33 | Maintenance | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 32 | 26 | 0 | 26 | 0 |
1 | 4/4/2023 | 48 | Maintenance | solving | 3 | 5 | 3 | 11 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 47 | 41 | 15 | 41 | 15 |
1 | 4/25/2023 | 69 | Maintenance | solving | 5 | 3 | 4 | 12 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 68 | 62 | 36 | 62 | 36 |
1 | 5/16/2023 | 90 | Maintenance | solving | 3 | 4 | 4 | 11 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 33 | 1 | 1 | 89 | 83 | 57 | 83 | 57 |
2 | 2/16/2023 | 1 | Baseline | solving | 2 | 1 | 1 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | -12 | -35 | 0 | 0 |
2 | 2/23/2023 | 8 | Baseline | solving | 2 | 1 | 1 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 7 | -5 | -28 | 0 | 0 |
2 | 2/27/2023 | 12 | Baseline | solving | 2 | 1 | 1 | 4 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 11 | -1 | -24 | 0 | 0 |
2 | 2/28/2023 | 13 | Intervention | solving | 3 | 3 | 3 | 9 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 12 | 0 | -23 | 0 | 0 |
2 | 3/1/2023 | 14 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 13 | 1 | -22 | 1 | 0 |
2 | 3/2/2023 | 15 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 14 | 2 | -21 | 2 | 0 |
2 | 3/6/2023 | 19 | Intervention | solving | 3 | 4 | 3 | 10 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 18 | 6 | -17 | 6 | 0 |
2 | 3/7/2023 | 20 | Intervention | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 19 | 7 | -16 | 7 | 0 |
2 | 3/8/2023 | 21 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 20 | 8 | -15 | 8 | 0 |
2 | 3/9/2023 | 22 | Intervention | solving | 5 | 5 | 3 | 13 | 0 | 1 | 0 | 1 | 0 | 0 | 13 | 0 | 1 | 0 | 21 | 9 | -14 | 9 | 0 |
2 | 3/23/2023 | 36 | Maintenance | solving | 4 | 4 | 4 | 12 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 35 | 23 | 0 | 23 | 0 |
2 | 4/25/2023 | 69 | Maintenance | solving | 4 | 3 | 3 | 10 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 68 | 56 | 33 | 56 | 33 |
2 | 5/11/2023 | 85 | Maintenance | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 36 | 1 | 1 | 84 | 72 | 49 | 72 | 49 |
3 | 2/24/2023 | 9 | Baseline | solving | 3 | 1 | 2 | 6 | 0 | 1 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 0 | -25 | -60 | 0 | 0 |
3 | 3/6/2023 | 19 | Baseline | solving | 3 | 1 | 1 | 5 | 0 | 1 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 10 | -15 | -50 | 0 | 0 |
3 | 3/9/2023 | 22 | Baseline | solving | 3 | 1 | 1 | 5 | 0 | 1 | 1 | 0 | 0 | 9 | 0 | 0 | 0 | 0 | 13 | -12 | -47 | 0 | 0 |
3 | 3/21/2023 | 34 | Intervention | solving | 4 | 2 | 3 | 9 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 25 | 0 | -35 | 0 | 0 |
3 | 3/22/2023 | 35 | Intervention | solving | 5 | 2 | 5 | 12 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 26 | 1 | -34 | 1 | 0 |
3 | 3/23/2023 | 36 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 27 | 2 | -33 | 2 | 0 |
3 | 3/24/2023 | 37 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 28 | 3 | -32 | 3 | 0 |
3 | 3/27/2023 | 40 | Intervention | solving | 5 | 3 | 5 | 13 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 31 | 6 | -29 | 6 | 0 |
3 | 3/28/2023 | 41 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 32 | 7 | -28 | 7 | 0 |
3 | 3/31/2023 | 44 | Intervention | solving | 5 | 5 | 3 | 13 | 0 | 1 | 0 | 1 | 0 | 0 | 34 | 0 | 1 | 0 | 35 | 10 | -25 | 10 | 0 |
3 | 4/25/2023 | 69 | Maintenance | solving | 2 | 3 | 5 | 10 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 60 | 35 | 0 | 35 | 0 |
3 | 5/16/2023 | 90 | Maintenance | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 81 | 56 | 21 | 56 | 21 |
3 | 5/18/2023 | 92 | Maintenance | solving | 5 | 2 | 5 | 12 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 83 | 58 | 23 | 58 | 23 |
4 | 2/28/2023 | 13 | Baseline | solving | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 0 | -28 | -56 | 0 | 0 |
4 | 3/8/2023 | 21 | Baseline | solving | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 8 | -20 | -48 | 0 | 0 |
4 | 3/22/2023 | 35 | Baseline | solving | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 13 | 0 | 0 | 0 | 0 | 22 | -6 | -34 | 0 | 0 |
4 | 3/28/2023 | 41 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 28 | 0 | -28 | 0 | 0 |
4 | 3/29/2023 | 42 | Intervention | solving | 5 | 5 | 5 | 15 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 29 | 1 | -27 | 1 | 0 |
4 | 3/30/2023 | 43 | Intervention | solving | 5 | 3 | 5 | 13 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 30 | 2 | -26 | 2 | 0 |
4 | 3/31/2023 | 44 | Intervention | solving | 3 | 5 | 3 | 11 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 31 | 3 | -25 | 3 | 0 |
4 | 4/4/2023 | 48 | Intervention | solving | 5 | 5 | 3 | 13 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 35 | 7 | -21 | 7 | 0 |
4 | 4/5/2023 | 49 | Intervention | solving | 3 | 3 | 3 | 9 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 36 | 8 | -20 | 8 | 0 |
4 | 4/6/2023 | 50 | Intervention | solving | 3 | 5 | 3 | 11 | 0 | 1 | 0 | 1 | 0 | 0 | 41 | 0 | 1 | 0 | 37 | 9 | -19 | 9 | 0 |
4 | 4/25/2023 | 69 | Maintenance | solving | 3 | 4 | 4 | 11 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 56 | 28 | 0 | 28 | 0 |
4 | 5/15/2023 | 89 | Maintenance | solving | 3 | 3 | 3 | 9 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 76 | 48 | 20 | 48 | 20 |
4 | 5/18/2023 | 92 | Maintenance | solving | 3 | 3 | 3 | 9 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 69 | 1 | 1 | 79 | 51 | 23 | 51 | 23 |
baseline_v <- read.csv("data/baseline_v.csv")
intervention_v <- read.csv("data/intervention_v.csv")
baseline_v$max_A_date <-as.Date(baseline_v$max_A_date, format = "%m/%d/%Y")
intervention_v$max_B_date <-as.Date(intervention_v$max_B_date, format = "%m/%d/%Y")
web_based_data$date <-as.Date(web_based_data$date, format = "%m/%d/%Y")
web_based_data$case <- paste0("Case ", web_based_data$case, sep = "")
baseline_v$case <- paste0("Case ", baseline_v$case, sep = "")
intervention_v$case <- paste0("Case ", intervention_v$case, sep = "")
ticks <- function(n) {function(limits) pretty(limits, n)}
web_based_data <- web_based_data %>%
group_by(case, date) %>%
mutate(average_sum = round(mean(sum),0))
web_based_data_baseline <- web_based_data %>%
filter(phase== "Baseline") %>%
group_by(case) %>%
mutate(median = median(average_sum)) %>%
mutate(upper_threshold = round(median + 0.25 * median, digits = 2)) %>%
mutate(lower_threshold = round(median - 0.25 * median, digits = 2))
average_sum_baseline.plot <- web_based_data %>%
ggplot(aes(x = date, y = average_sum, group = phase)) +
facet_wrap2(case ~ ., ncol = 1, axes = "all", remove_labels = "all") +
geom_line(data = web_based_data %>% filter(phase %in% c("Baseline", "Intervention", "Maintenance")),
aes(group = paste(phase, question_type)),
linewidth = 0.5) +
geom_point(size = 2) +
scale_x_date(labels = function(zero) gsub("^0", "", strftime(zero, "%m/%d")),
date_breaks = "4 day",
expand = c(0.02, 0.02)) +
scale_y_continuous(breaks = ticks(5)) +
theme_minimal(base_size = 11) +
theme(
plot.title = element_text(face = "bold", size = 11),
legend.position ="top",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.text = element_text(size = 11),
legend.title = element_text(size = 11),
legend.title.align = 0.5,
axis.line = element_line(),
strip.text.x = element_text(color = "#3B3B3B", size = 11),
axis.line.x = element_line(color = "#3B3B3B"),
axis.text.x = element_text(size = 11, color = "#3B3B3B", angle = 45, hjust = 1),
axis.ticks = element_line(color = "#3B3B3B"),
axis.ticks.length = unit(0.1, "cm"),
axis.text.y = element_text(size = 11, color = "#3B3B3B"),
axis.title = element_text(face = "bold", size = 11, color = "#3B3B3B")
) +
labs(
x = "Date",
y = "Average Correct Score",
title = ""
) +
guides(shape="none") +
geom_hline(data = web_based_data_baseline, aes(yintercept = web_based_data_baseline$upper_threshold),
linetype = "longdash", linewidth = 0.5, color = "#CC5500") +
geom_hline(data = web_based_data_baseline, aes(yintercept = web_based_data_baseline$median),
linetype = "solid", linewidth = 0.5, color = "#4c4c4c") +
geom_hline(data = web_based_data_baseline, aes(yintercept = web_based_data_baseline$lower_threshold),
linetype = "longdash", linewidth = 0.5, color = "#CC5500") +
geom_vline(data = baseline_v, aes(xintercept = baseline_v$max_A_date + 0.5),
linetype = "longdash", linewidth = 0.5, color = "#4c4c4c") +
geom_vline(data = intervention_v, aes(xintercept = intervention_v$max_B_date + 0.5),
linetype = "longdash", linewidth = 0.5, color = "#4c4c4c")
average_sum_baseline.plot
web_based_data$question_type <- web_based_data$question_type %>% as.factor()
# question_names <- c("Problem-Solving", "Visualization")
# names(question_names) <- c("solving", "visual")
# web_based_data$question_type <- as.factor(question_names[web_based_data$question_type])
web_based_data$question_type <- relevel(web_based_data$question_type, "visualization")
sum.plot <- web_based_data %>%
ggplot(aes(x = date, y = sum, color = as.factor(question_type), group = question_type)) +
facet_wrap2(case ~ ., ncol = 1, axes = "all", remove_labels = "all") +
geom_line(data = web_based_data %>% filter(phase %in% c("Baseline", "Intervention", "Maintenance")),
aes(group = paste(phase, question_type)),
linewidth = 0.5) +
geom_point(size = 2, aes(shape = question_type)) +
scale_shape_manual(values = c(16, 17)) +
scale_x_date(labels = function(zero) gsub("^0", "", strftime(zero, "%m/%d")),
date_breaks = "4 day",
expand = c(0.02, 0.02)) +
scale_y_continuous(breaks = ticks(5)) +
theme_minimal(base_size = 11) +
theme(
plot.title = element_text(face = "bold", size = 11),
legend.position ="top",
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.text = element_text(size = 11),
legend.title = element_text(size = 11),
legend.title.align = 0.5,
axis.line = element_line(),
strip.text.x = element_text(color = "#3B3B3B", size = 11),
axis.line.x = element_line(color = "#3B3B3B"),
axis.text.x = element_text(size = 11, color = "#3B3B3B", angle = 45, hjust = 1),
axis.ticks = element_line(color = "#3B3B3B"),
axis.ticks.length = unit(0.1, "cm"),
axis.text.y = element_text(size = 11, color = "#3B3B3B"),
axis.title = element_text(face = "bold", size = 11, color = "#3B3B3B")
) +
labs(
x = "Date",
y = "Correct Score",
title = ""
) +
guides(shape="none") +
guides(color = guide_legend(title = "Question Type"), shape = guide_legend(title="Question Type")) +
geom_vline(data = baseline_v, aes(xintercept = baseline_v$max_A_date + 0.5),
linetype = "longdash", linewidth = 0.5, color = "#4c4c4c") +
geom_vline(data = intervention_v, aes(xintercept = intervention_v$max_B_date + 0.5),
linetype = "longdash", linewidth = 0.5, color = "#4c4c4c")
sum.plot
lm_desc <- web_based_data %>%
group_by(case, phase, question_type) %>%
do(tidy(lm(sum ~ day, data = .))) %>%
filter(term == "day") %>%
mutate_if(is.numeric, ~round(., 2)) %>%
select(case, phase, question_type, estimate, std.error)
lm_desc$trend <- lm_desc$estimate
lm_desc$SE <- lm_desc$std.error
sum_desc <- web_based_data %>%
group_by(case, phase, question_type) %>%
summarise(min = min(sum),
max = max(sum),
level = mean(sum),
median = median(sum),
SD = sd(sum),
range = paste(min, "-", max)) %>%
mutate_if(is.numeric, ~round(., 2)) %>%
select(everything(), -min, -max)
within_td <- list(sum_desc, lm_desc) %>% purrr::reduce(left_join)
within_td$SD <- paste0("(", within_td $SD, ")")
within_td$level <- paste(within_td $level, within_td $SD)
colnames(within_td )[colnames(within_td ) == "level"] <- "level (SD)"
within_td $SE <- paste0("(", within_td $SE, ")")
within_td $trend <- paste(within_td $trend, within_td $SE)
colnames(within_td )[colnames(within_td ) == "trend"] <- "trend (SE)"
within_phase <- within_td %>%
select(case, phase, question_type, "level (SD)", "trend (SE)", range) %>%
flextable() %>%
merge_v(j = ~ case) %>%
merge_v(j = ~ question_type) %>%
merge_v(j = ~ phase) %>%
theme_vanilla() %>%
autofit()
within_phase
case | phase | question_type | level (SD) | trend (SE) | range |
---|---|---|---|---|---|
Case 1 | Baseline | visualization | 2.67 (0.58) | 0.14 (0.16) | 2 - 3 |
solving | 6.33 (0.58) | -0.14 (0.16) | 6 - 7 | ||
Intervention | visualization | 9.71 (4.07) | 0.85 (0.23) | 3 - 13 | |
solving | 12.71 (1.6) | 0.04 (0.17) | 11 - 15 | ||
Maintenance | visualization | 12.25 (1.26) | -0.02 (0.03) | 11 - 14 | |
solving | 11.5 (0.58) | -0.01 (0.01) | 11 - 12 | ||
Case 2 | Baseline | visualization | 0.67 (0.58) | 0.1 (0.04) | 0 - 1 |
solving | 4 (0) | 0 (0) | 4 - 4 | ||
Intervention | visualization | 10.14 (5.24) | 1.25 (0.32) | 0 - 15 | |
solving | 11.86 (1.95) | 0.32 (0.19) | 9 - 15 | ||
Maintenance | visualization | 10.33 (3.06) | -0.06 (0.11) | 7 - 13 | |
solving | 12.33 (2.52) | 0.04 (0.09) | 10 - 15 | ||
Case 3 | Baseline | visualization | 2 (1.73) | 0.25 (0.06) | 0 - 3 |
solving | 5.33 (0.58) | -0.08 (0.02) | 5 - 6 | ||
Intervention | visualization | 11.29 (1.38) | -0.21 (0.14) | 9 - 13 | |
solving | 13.14 (2.19) | 0.24 (0.25) | 9 - 15 | ||
Maintenance | visualization | 10.67 (2.08) | 0.12 (0.11) | 9 - 13 | |
solving | 12.33 (2.52) | 0.15 (0.13) | 10 - 15 | ||
Case 4 | Baseline | visualization | 0 (0) | 0 (0) | 0 - 0 |
solving | 0 (0) | 0 (0) | 0 - 0 | ||
Intervention | visualization | 8.29 (2.87) | 0.75 (0.11) | 6 - 12 | |
solving | 12.43 (2.23) | -0.46 (0.18) | 9 - 15 | ||
Maintenance | visualization | 10 (3.61) | 0.27 (0.11) | 6 - 13 | |
solving | 9.67 (1.15) | -0.09 (0.01) | 9 - 11 |
Baseline vs Intervention
sum_AB <- batch_calc_ES(dat = web_based_data,
grouping = c(case, question_type),
condition = phase,
outcome = sum,
session_number = day,
baseline_phase = "Baseline",
intervention_phase = "Intervention",
ES = c("Tau"),
improvement = "increase",
format = "wide") %>%
mutate_if(is.numeric, ~round(., 2)) %>%
flextable() %>%
merge_v(j = ~ case) %>%
merge_v(j = ~ question_type) %>%
theme_vanilla() %>%
autofit()
sum_AB
case | question_type | Tau_Est | Tau_SE | Tau_CI_lower | Tau_CI_upper |
---|---|---|---|---|---|
Case 1 | visualization | 0.90 | 0.13 | 0.09 | 0.99 |
solving | 1.00 | 0.09 | 1.00 | 1.00 | |
Case 2 | visualization | 0.76 | 0.25 | -0.06 | 0.96 |
solving | 1.00 | 0.09 | 1.00 | 1.00 | |
Case 3 | visualization | 1.00 | 0.09 | 1.00 | 1.00 |
solving | 1.00 | 0.09 | 1.00 | 1.00 | |
Case 4 | visualization | 1.00 | 0.09 | 1.00 | 1.00 |
solving | 1.00 | 0.09 | 1.00 | 1.00 |
Intervention vs Maintenance
sum_BM <- batch_calc_ES(dat = web_based_data,
grouping = c(case, question_type),
condition = phase,
outcome = sum,
session_number = day,
baseline_phase = "Intervention",
intervention_phase = "Maintenance",
ES = c("Tau"),
improvement = "increase",
format = "wide") %>%
mutate_if(is.numeric, ~round(., 2)) %>%
flextable() %>%
merge_v(j = ~ case) %>%
merge_v(j = ~ question_type) %>%
theme_vanilla() %>%
autofit()
sum_BM
case | question_type | Tau_Est | Tau_SE | Tau_CI_lower | Tau_CI_upper |
---|---|---|---|---|---|
Case 1 | visualization | 0.29 | 0.36 | -0.39 | 0.75 |
solving | -0.50 | 0.31 | -0.86 | 0.22 | |
Case 2 | visualization | -0.14 | 0.40 | -0.70 | 0.53 |
solving | 0.10 | 0.48 | -0.56 | 0.68 | |
Case 3 | visualization | -0.29 | 0.53 | -0.78 | 0.44 |
solving | -0.24 | 0.47 | -0.75 | 0.47 | |
Case 4 | visualization | 0.33 | 0.46 | -0.41 | 0.80 |
solving | -0.71 | 0.26 | -0.95 | 0.10 |
# Data Preparation
long_data <- web_based_data %>%
pivot_longer(
cols = starts_with("item"),
names_to = "item_type",
values_to = "score"
) %>%
mutate(item_type = str_remove(item_type, "^item_"))
score_levels <- c("0", "1", "2", "3", "4", "5")
long_data <- long_data %>%
select(date, case, day, phase, question_type, visualization, solving, item_type, score, -sum, A:trend_BM) %>%
mutate(score = factor(score, levels = score_levels, ordered = TRUE)) %>%
mutate(item = paste(item_type, "_", day))
# openxlsx::write.xlsx(long_data, "data/long_data.xlsx", rowNames = FALSE)
# Checking Parameter Names in Priors
get_prior(
formula = score ~ time_A + level_AB + trend_AB + level_BM + trend_BM +
solving + time_A:solving + level_AB:solving +
trend_AB:solving + level_BM:solving + trend_BM:solving +
(time_A + level_AB + trend_AB + level_BM + trend_BM +
solving + time_A:solving + level_AB:solving +
trend_AB:solving + level_BM:solving + trend_BM:solving |case/day/item),
data = long_data,
family = cumulative("logit")
)
# Model Fitting
Model <- brm(
formula = score ~ time_A + level_AB + trend_AB + level_BM + trend_BM +
solving + time_A:solving + level_AB:solving +
trend_AB:solving + level_BM:solving + trend_BM:solving + (level_AB|case/day/item),
data = long_data,
family = cumulative("logit"),
prior = c(
prior(student_t(3, 0, 2.5), class = Intercept), # Prior for the intercepts (thresholds)
prior(normal(0, 2.5), class = b), # Prior for all regression coefficients
prior(student_t(3, 0, 2.5), class = sd) # Prior for the standard deviations
),
iter = 3000,
warmup = 1000,
chains = 4,
seed = 2024,
control = list(adapt_delta = 0.95)
)
# prior_summary(Model)
fixed_coefficient <- fixef(Model)
fixed_coefficient[1:5, 1] <- fixed_coefficient[1:5, 1] * -1
rownames(fixed_coefficient)[1:5] <- c("intercept (Y>0)", "intercept (Y>1)", "intercept (Y>2)", "intercept (Y>3)", "intercept (Y>4)")
fixed_coefficient %>% data.frame() %>% mutate(odd_ratio = exp(Estimate)) %>%
mutate_if(is.numeric, ~ round(., 2))
## Estimate Est.Error Q2.5 Q97.5 odd_ratio
## intercept (Y>0) -1.07 1.47 -1.90 3.97 0.34
## intercept (Y>1) -3.95 1.51 1.00 6.95 0.02
## intercept (Y>2) -5.46 1.52 2.50 8.53 0.00
## intercept (Y>3) -7.65 1.54 4.63 10.78 0.00
## intercept (Y>4) -9.03 1.56 6.00 12.17 0.00
## time_A 0.06 0.06 -0.05 0.18 1.06
## level_AB 4.56 1.35 1.60 6.99 95.33
## trend_AB 0.13 0.08 -0.04 0.30 1.14
## level_BM -3.42 1.50 -6.32 -0.41 0.03
## trend_BM -0.18 0.07 -0.31 -0.05 0.83
## solving 2.36 0.62 1.19 3.64 10.59
## time_A:solving 0.03 0.03 -0.02 0.09 1.04
## level_AB:solving 0.14 0.76 -1.39 1.61 1.16
## trend_AB:solving -0.24 0.07 -0.37 -0.11 0.79
## level_BM:solving 2.60 1.43 -0.19 5.35 13.49
## trend_BM:solving 0.22 0.06 0.09 0.34 1.24
pp_check(Model)
plot(Model)
mcmc_plot(Model, type = "trace")
tableS1 <- read.csv("data/tableS1.csv")
rubric <- kable(tableS1, align = "lccc",
col.names = c("Type", "Rubric", "Correct", "Score",
"Type", "Rubric", "Correct", "Score"),
caption = "") %>%
kable_styling(full_width = FALSE) %>%
row_spec(0, bold = TRUE)
Type | Rubric | Correct | Score | Type | Rubric | Correct | Score |
---|---|---|---|---|---|---|---|
Visualization | Correctly created a visual model pertinent to problem-solving and accurately explained how this model applies to the product. | Yes | 5 | Problem Solving | Correctly answered and detailed the problem-solving process, including how it relates to the units of the product and associated fractions. | Yes | 5 |
Visualization | Drew a relevant visual model for problem-solving, but either did not describe the drawing or provided a vague description. However, the model correctly represents the product. | Yes | 4 | Problem Solving | Correctly solved and demonstrated the arithmetic procedures, but did not provide a description of the problem-solving process. | Yes | 4 |
Visualization | Made an incomplete attempt at drawing a visual model, which failed to accurately depict fractions, such as errors in using a number line or a rectangular area model for representing the multiplier or multiplicand. | No | 3 | Problem Solving | Partially solved the problem, with arithmetic or procedural errors, such as mistakes in the simplification process. | No | 3 |
Visualization | Submitted a flawed drawing that was intended to relate to the problem context, but it incorrectly represented the fractions involved in that context. | No | 2 | Problem Solving | Offered faulty problem-solving that led to an incorrect answer, including errors in transcribing. | No | 2 |
Visualization | Incorrectly guessed or drew something unrelated to the context of the word problem. | No | 1 | Problem Solving | Incorrectly guessed the mathematical operations, resulting in a random and unrelated answer. | No | 1 |
Visualization | Did not attempt the problem, simply wrote a number, or drew a picture that was irrelevant to the task. | Blank | 0 | Problem Solving | Did not attempt the problem. | Blank | 0 |