WRCA Courses

Overview

This is a very brief look at a sample of WRCA courses. Examined first is the general structure of the courses, including the number of lessons per course and number of activities per lesson.

The next section examines the Universal Design for Learning attributes, particularly around providing multiple modes of representation and expression. Examined are a coded list of verbs and a coded list of media with which students are expected to engage.

The final section examines the depth of knowledge attributed to each activity. Provided are the distribution of DOK and some explorations of relationships between DOK and number of lessons, number of activities, and sequence of activities.

Course Structures

Number of Lessons per Course

wrca_lessons <- wrca_frame |>
  select(course, lesson) |>
  na.omit() |>
  group_by(course) |>
  filter(lesson == max(lesson)) |>
  ungroup() |>
  unique() |>
  arrange(lesson, course)
Desc(wrca_lessons$lesson, plotit = TRUE, main = "Lessons per Course")
------------------------------------------------------------------------------ 
Lessons per Course

  length       n    NAs  unique    0s   mean  meanCI'
       7       7      0       5     0   7.86    4.82
          100.0%   0.0%          0.0%          10.90
                                                    
     .05     .10    .25  median   .75    .90     .95
    5.30    5.60   6.50    7.00  7.50  10.80   12.90
                                                    
   range      sd  vcoef     mad   IQR   skew    kurt
   10.00    3.29   0.42    1.48  1.00   1.34    0.28
                                                    

   value  freq   perc  cumfreq  cumperc
1      5     1  14.3%        1    14.3%
2      6     1  14.3%        2    28.6%
3      7     3  42.9%        5    71.4%
4      8     1  14.3%        6    85.7%
5     15     1  14.3%        7   100.0%

' 95%-CI (classic)

Number of Activities per Lesson

wrca_activities <- wrca_frame |>
  select(course, lesson, sequence) |>
  na.omit() |>
  group_by(course, lesson) |>
  filter(sequence == max(sequence)) |>
  ungroup() |>
  arrange(course, lesson)
Desc(wrca_activities$sequence, main = "Number of Activities Per Lesson", plotit = TRUE)
------------------------------------------------------------------------------ 
Number of Activities Per Lesson

  length       n    NAs  unique    0s  mean  meanCI'
      59      59      0       9     0  4.59    4.03
          100.0%   0.0%          0.0%          5.16
                                                   
     .05     .10    .25  median   .75   .90     .95
    2.00    2.00   3.00    5.00  6.00  7.00    7.10
                                                   
   range      sd  vcoef     mad   IQR  skew    kurt
    9.00    2.16   0.47    2.97  3.00  0.59   -0.12
                                                   

   value  freq   perc  cumfreq  cumperc
1      2    13  22.0%       13    22.0%
2      3    10  16.9%       23    39.0%
3      4     6  10.2%       29    49.2%
4      5    10  16.9%       39    66.1%
5      6     7  11.9%       46    78.0%
6      7    10  16.9%       56    94.9%
7      8     1   1.7%       57    96.6%
8     10     1   1.7%       58    98.3%
9     11     1   1.7%       59   100.0%

' 95%-CI (classic)

Indicators of Universal Design for Learning

Verbs Used for Representation

Desc(wrca_frame$rep_verb, plotit = TRUE, main = "Representation Verbs")
------------------------------------------------------------------------------ 
Representation Verbs

  length      n    NAs unique levels  dupes
     445    437      8      3      3      y
          98.2%   1.8%                     

     level  freq   perc  cumfreq  cumperc
1     read   309  70.7%      309    70.7%
2    watch    92  21.1%      401    91.8%
3  offload    36   8.2%      437   100.0%

Media Used for Representation

Desc(wrca_frame$rep_object, plotit = TRUE, main = "Representation Media")
------------------------------------------------------------------------------ 
Representation Media

  length      n    NAs unique levels  dupes
     445    438      7     10     10      y
          98.4%   1.6%                     

          level  freq   perc  cumfreq  cumperc
1          text   275  62.8%      275    62.8%
2         video    92  21.0%      367    83.8%
3    assignment    36   8.2%      403    92.0%
4         image    10   2.3%      413    94.3%
5        slides     8   1.8%      421    96.1%
6       website     8   1.8%      429    97.9%
7   infographic     4   0.9%      433    98.9%
8      scenario     3   0.7%      436    99.5%
9         posts     1   0.2%      437    99.8%
10     research     1   0.2%      438   100.0%

Verbs Used for Expression

Desc(wrca_frame$exp_verb, plotit = TRUE, main = "Expression Verbs")
------------------------------------------------------------------------------ 
Expression Verbs

  length      n    NAs unique levels  dupes
     445    375     70      7      7      y
          84.3%  15.7%                     

      level  freq   perc  cumfreq  cumperc
1  complete   181  48.3%      181    48.3%
2     write   118  31.5%      299    79.7%
3    create    61  16.3%      360    96.0%
4    record     6   1.6%      366    97.6%
5    modify     4   1.1%      370    98.7%
6   offload     4   1.1%      374    99.7%
7    search     1   0.3%      375   100.0%

Media Used for Expression

Desc(wrca_frame$exp_object, plotit = TRUE, main = "Expression Media")
------------------------------------------------------------------------------ 
Expression Media

  length      n    NAs unique levels  dupes
     445    375     70     41     41      y
          84.3%  15.7%                     

         level  freq   perc  cumfreq  cumperc
1         quiz    86  22.9%       86    22.9%
2         post    58  15.5%      144    38.4%
3    worksheet    49  13.1%      193    51.5%
4    questions    27   7.2%      220    58.7%
5        notes    16   4.3%      236    62.9%
6     response    15   4.0%      251    66.9%
7      drawing    13   3.5%      264    70.4%
8         poll    13   3.5%      277    73.9%
9     document    11   2.9%      288    76.8%
10  reflection     9   2.4%      297    79.2%
11     summary     9   2.4%      306    81.6%
12   recording     7   1.9%      313    83.5%
... etc.
 [list output truncated]

Depth of Knowledge

Depth of Knowledge for Activities

wrca_frame$dok <- factor(wrca_frame$dok, level = c("1", "2", "3", "4"))
Desc(wrca_frame$dok, plotit = TRUE, main = "Depth of Knowledge")
------------------------------------------------------------------------------ 
Depth of Knowledge

  length      n    NAs unique levels  dupes
     445    293    152      3      4      y
          65.8%  34.2%                     

   level  freq   perc  cumfreq  cumperc
1      2   179  61.1%      179    61.1%
2      1    76  25.9%      255    87.0%
3      3    38  13.0%      293   100.0%
4      4     0   0.0%      293   100.0%

Depth of Knowledge Sequences

The probability that one DOK will be followed by another.

markovchainFit(wrca_frame$dok)$estimate
MLE Fit 
 A  3 - dimensional discrete Markov Chain defined by the following states: 
 1, 2, 3 
 The transition matrix  (by rows)  is defined as follows: 
          1         2          3
1 0.7000000 0.2500000 0.05000000
2 0.1038961 0.8246753 0.07142857
3 0.0000000 0.2962963 0.70370370

Number of Lessons and Average Depth of Knowledge

nol_frame <- wrca_frame |>
  select(course, lesson, dok) |>
  na.omit() |>
  group_by(course) |>
  filter(lesson == max(lesson)) |>
  mutate(dok = median(as.integer(dok))) |>
  ungroup() |>
  unique() |>
  mutate(dok = factor(dok, levels = c("1", "2", "3", "4")))

Desc(lesson ~ dok, nol_frame, main = "Number of Lessons and DOK")
------------------------------------------------------------------------------ 
Number of Lessons and DOK

Summary: 
n pairs: 7, valid: 7 (100.0%), missings: 0 (0.0%), groups: 3

                                 
              1        2        3
mean     10.000    5.667    7.000
median    8.000    6.000    7.000
sd        4.359    0.577  <NA>   
IQR       4.000    0.500    0.000
n             3        3        1
np      42.857%  42.857%  14.286%
NAs           0        0        0
0s            0        0        0

Kruskal-Wallis rank sum test:
  Kruskal-Wallis chi-squared = 4.963, df = 2, p-value = 0.08362

Number of Activities and Average Depth of Knowledge

noa_frame <- wrca_frame |>
  select(course, lesson, sequence, dok) |>
  na.omit() |>
  group_by(course, lesson) |>
  filter(sequence == max(sequence)) |>
  mutate(dok = median(as.integer(dok))) |>
  ungroup() |>
  unique() |>
  mutate(dok = factor(dok, levels = c("1", "2", "3", "4"))) |>
  mutate(sequence = as.integer(sequence))

Desc(sequence ~ dok, noa_frame, main = "Number of Activities and DOK")
------------------------------------------------------------------------------ 
Number of Activities and DOK

Summary: 
n pairs: 45, valid: 45 (100.0%), missings: 0 (0.0%), groups: 3

                                 
              1        2        3
mean      3.929    5.333    4.900
median    3.500    5.000    4.500
sd        1.900    2.176    2.470
IQR       4.000    3.000    3.500
n            14       21       10
np      31.111%  46.667%  22.222%
NAs           0        0        0
0s            0        0        0

Kruskal-Wallis rank sum test:
  Kruskal-Wallis chi-squared = 3.3114, df = 2, p-value = 0.191

Sequence and Depth of Knowledge

Does the activity sequence impact the identified depth of knowledge?

wrca_frame$sequence <- factor(wrca_frame$sequence,
                              levels = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"))
wrca_frame$dok <- as.integer(wrca_frame$dok)

Desc(sequence ~ dok, wrca_frame, plotit = TRUE, main = "Sequence and Depth of Knowledge")
------------------------------------------------------------------------------ 
Sequence and Depth of Knowledge

Summary: 
n pairs: 445, valid: 292 (65.6%), missings: 153 (34.4%), groups: 11

                                                                              
              1        2        3        4        5        6        7        8
mean      1.853    1.718    1.941    1.882    1.966    1.789    2.083    2.000
median    2.000    2.000    2.000    2.000    2.000    2.000    2.000    2.000
sd        0.697    0.659    0.645    0.409    0.421    0.535    0.515    0.000
IQR       1.000    1.000    0.000    0.000    0.000    0.500    0.000    0.000
n            68       71       51       34       29       19       12        3
np      23.288%  24.315%  17.466%  11.644%   9.932%   6.507%   4.110%   1.027%
NAs           3        2        0        4        3        0        1        0
0s            0        0        0        0        0        0        0        0
                                 
              9       10       11
mean      2.500    2.500    2.000
median    2.500    2.500    2.000
sd        0.707    0.707  <NA>   
IQR       0.500    0.500    0.000
n             2        2        1
np       0.685%   0.685%   0.342%
NAs           0        0        0
0s            0        0        0

Kruskal-Wallis rank sum test:
  Kruskal-Wallis chi-squared = 12.711, df = 10, p-value = 0.2403


Warning:
  Grouping variable contains 140 NAs (31.5%).



Proportions of sequence in the quantiles of dok:
    
           1       2   (2,3]
  1    28.9%   19.0%   32.4%
  2    36.8%   19.6%   21.6%
  3    15.8%   16.8%   24.3%
  4     6.6%   15.6%    2.7%
  5     3.9%   13.4%    5.4%
  6     6.6%    7.3%    2.7%
  7     1.3%    5.0%    5.4%
  8     0.0%    1.7%    0.0%
  9     0.0%    0.6%    2.7%
  10    0.0%    0.6%    2.7%
  11    0.0%    0.6%    0.0%

noa2_frame <- wrca_frame |>
  select(course, lesson, sequence, dok) |>
  na.omit() |>
  group_by(course, lesson, sequence) |>
  filter(dok == max(as.numeric(dok))) |>
  ungroup() |>
  unique() |>
  pivot_wider(names_from = sequence, values_from = dok, names_prefix = "activity_")

dok.alphab <- c("1", "2", "3", "4")
dok.seq <- seqdef(noa2_frame, 3:13, xtstep = 1, alphabet = dok.alphab)
seqIplot(dok.seq, border = NA, with.legend = "right")

trate <- seqtrate(dok.seq)
knitr::kable(round(trate, 2))
[-> 1] [-> 2] [-> 3] [-> 4]
[1 ->] 0.57 0.40 0.03 0
[2 ->] 0.11 0.79 0.10 0
[3 ->] 0.00 0.58 0.42 0
[4 ->] 0.00 0.00 0.00 0
seqHtplot(dok.seq, with.legend = "right", legend.prop=0.4)

Session Information

Session information is provided for reproducibility purposes.

sessioninfo::session_info(pkgs = "attached")
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.3.1 (2023-06-16)
 os       macOS Ventura 13.5.1
 system   aarch64, darwin20
 ui       X11
 language (EN)
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       America/Indiana/Indianapolis
 date     2023-08-27
 pandoc   3.1.4 @ /opt/homebrew/bin/ (via rmarkdown)

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 DescTools   * 0.99.49 2023-05-17 [1] CRAN (R 4.3.0)
 dplyr       * 1.1.2   2023-04-20 [1] CRAN (R 4.3.0)
 ggplot2     * 3.4.2   2023-04-03 [1] CRAN (R 4.3.0)
 here        * 1.0.1   2020-12-13 [1] CRAN (R 4.3.0)
 markovchain * 0.9.3   2023-05-18 [1] CRAN (R 4.3.0)
 readr       * 2.1.4   2023-02-10 [1] CRAN (R 4.3.0)
 tidyr       * 1.3.0   2023-01-24 [1] CRAN (R 4.3.0)
 TraMineR    * 2.2-7   2023-03-31 [1] CRAN (R 4.3.0)

 [1] /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library

──────────────────────────────────────────────────────────────────────────────