Ziele

  • Eine Einführung in Single-Case Datenstrukturen.
  • Die häufigsten Analysezugänge.
  • Visualisierung von Single-Case Daten mit dem Package scplot.
  • Analysen mit dem Package scan.

Teaser

Activating the packages

install.packages("scplot")
library(scan)
library(scplot)

Creating cases

case1 <- scdf(
  c(A = 3, 2, 4, 6, 4, 3, 
    B = 6, 5, 4, 6, 7, 5, 6, 8, 6, 7, 8, 9, 7, 8, 
    C = 6, 6, 8, 5, 7), 
  name = "Dustin"
)
case2 <- scdf(
  c(A = 0, 1, 3, 1, 4, 2, 1, 
    B = 2, 1, 4, 3, 5, 5, 7, 6, 3, 8, 6, 4, 7, 
    C = 6, 5, 6, 8, 6), 
  name = "Mike"
)
case3 <- scdf(
  c(A = 7, 5, 6, 4, 4, 7, 5, 7, 4,
    B = 8, 9, 11, 13, 12, 15, 16, 13, 17, 16, 18,
    C = 17, 20, 22, 18, 20), 
  name = "Will"
)
strange_study <- c(case1, case2, case3)

Visualize the results

scplot(strange_study)

Describe the results

describe(strange_study)
Describe Single-Case Data

       Dustin  Mike  Will
Design  A-B-C A-B-C A-B-C
n.A         6     7     9
n.B        14    13    11
n.C         5     5     5
mis.A       0     0     0
mis.B       0     0     0
mis.C       0     0     0

        Dustin   Mike   Will
m.A      3.667  1.714  5.444
m.B      6.571  4.692 13.455
m.C        6.4    6.2   19.4
md.A       3.5    1.0    5.0
md.B       6.5    5.0   13.0
md.C         6      6     20
sd.A     1.366  1.380  1.333
sd.B     1.399  2.097  3.267
sd.C     1.140  1.095  1.949
mad.A    0.741  1.483  1.483
mad.B    1.483  2.965  4.448
mad.C    1.483  0.000  2.965
min.A        2      0      4
min.B        4      1      8
min.C        5      5     17
max.A        6      4      7
max.B        9      8     18
max.C        8      8     22
trend.A  0.229  0.214 -0.083
trend.B  0.246  0.357  0.909
trend.C    0.1    0.3    0.4

Analyses: Overlap indices

overlap(strange_study)
Overlap Indices

Comparing phase 1 against phase 2 

             Dustin  Mike  Will
Design        A-B-C A-B-C A-B-C
PND              50    54   100
PEM             100    92   100
PET              71    62   100
NAP              93    88   100
NAP rescaled     86    76   100
PAND             90    80   100
IRD            0.76  0.56  1.00
Tau_U(A)       0.53  0.45  0.67
Tau_U(BA)      0.66  0.56  0.80
Base_Tau       0.60  0.55  0.74
Diff_mean      2.90  2.98  8.01
Diff_trend     0.02  0.14  0.99
SMD            2.13  2.16  6.01
Hedges_g       2.00  1.51  2.96

Complex regression analyses

plm(strange_study$Dustin)
Piecewise Regression Analysis

Contrast model: W / level = first, slope = first

Fitted a gaussian distribution.
F(5, 19) = 7.88; p = 0.000; R² = 0.675; Adjusted R² = 0.589; AIC = 85.1094

                            B LL-CI95% UL-CI95%    SE      t     p delta R²
Intercept               3.095    1.463    4.728 0.833  3.716 0.001         
Trend (mt)              0.229   -0.311    0.768 0.275  0.831 0.416    0.012
Level phase B (phaseB)  0.505   -1.886    2.896 1.220  0.414 0.684    0.003
Level phase C (phaseC) -1.467  -11.107    8.173 4.919 -0.298 0.769    0.002
Slope phase B (interB)  0.018   -0.542    0.577 0.285  0.062 0.952    0.000
Slope phase C (interC) -0.129   -1.023    0.766 0.456 -0.282 0.781    0.001

Autocorrelations of the residuals
 lag    cr
   1 -0.28
   2 -0.45
   3  0.28
Ljung-Box test: X²(3) = 10.51; p = 0.015 

Formula: values ~ 1 + mt + phaseB + phaseC + interB + interC 
plm(strange_study$Mike)
Piecewise Regression Analysis

Contrast model: W / level = first, slope = first

Fitted a gaussian distribution.
F(5, 19) = 8.00; p = 0.000; R² = 0.678; Adjusted R² = 0.593; AIC = 98.8502

                            B LL-CI95% UL-CI95%    SE      t     p delta R²
Intercept               1.071   -0.952    3.094 1.032  1.038 0.312         
Trend (mt)              0.214   -0.347    0.775 0.286  0.749 0.463    0.009
Level phase B (phaseB) -0.022   -2.975    2.931 1.506 -0.015 0.989    0.000
Level phase C (phaseC)  0.243   -9.633   10.118 5.039  0.048 0.962    0.000
Slope phase B (interB)  0.143   -0.460    0.746 0.308  0.465 0.648    0.004
Slope phase C (interC)  0.086   -1.008    1.179 0.558  0.154 0.880    0.000

Autocorrelations of the residuals
 lag    cr
   1 -0.20
   2 -0.12
   3  0.25
Ljung-Box test: X²(3) = 3.43; p = 0.330 

Formula: values ~ 1 + mt + phaseB + phaseC + interB + interC 
plm(strange_study$Will)
Piecewise Regression Analysis

Contrast model: W / level = first, slope = first

Fitted a gaussian distribution.
F(5, 19) = 68.16; p = 0.000; R² = 0.947; Adjusted R² = 0.933; AIC = 98.63478

                            B LL-CI95% UL-CI95%    SE      t     p delta R²
Intercept               5.778    3.961    7.595 0.927  6.232 0.000         
Trend (mt)             -0.083   -0.465    0.298 0.195 -0.428 0.673    0.001
Level phase B (phaseB)  3.881    1.162    6.600 1.387  2.798 0.011    0.022
Level phase C (phaseC) 14.489    7.893   21.084 3.365  4.306 0.000    0.052
Slope phase B (interB)  0.992    0.518    1.467 0.242  4.100 0.001    0.047
Slope phase C (interC)  0.483   -0.526    1.493 0.515  0.938 0.360    0.002

Autocorrelations of the residuals
 lag    cr
   1 -0.27
   2 -0.08
   3 -0.07
Ljung-Box test: X²(3) = 2.40; p = 0.493 

Formula: values ~ 1 + mt + phaseB + phaseC + interB + interC 

Create, display, and store single-case data

One case

case1 <- scdf(values = c(A = 2, 2, 4, 5, B = 8, 7, 6, 9, 8, 7))

case1
#A single-case data frame with one case

 [case #1]: values mt phase
                 2  1     A
                 2  2     A
                 4  3     A
                 5  4     A
                 8  5     B
                 7  6     B
                 6  7     B
                 9  8     B
                 8  9     B
                 7 10     B

Multiple cases

case1 <- scdf(values = c(A = 2, 2, 4, 5, B = 8, 7, 6, 9, 8, 7))
case2 <- scdf(values = c(A = 3, 1, 3, 2, B = 6, 3, 4, 6, 7, 5))
study <- c(case1, case2)
study
#A single-case data frame with two cases

 [case #1]: values mt phase │ [case #2]: values mt phase │
                 2  1     A │                 3  1     A │
                 2  2     A │                 1  2     A │
                 4  3     A │                 3  3     A │
                 5  4     A │                 2  4     A │
                 8  5     B │                 6  5     B │
                 7  6     B │                 3  6     B │
                 6  7     B │                 4  7     B │
                 9  8     B │                 6  8     B │
                 8  9     B │                 7  9     B │
                 7 10     B │                 5 10     B │

One case with multiple variables

case1 <- scdf(
  values = c(A = 2,2,3,5, B = 8,7,6,9,7,7), 
  teacher = c(0,0,1,1,0,1,1,1,0,1), 
  hour = c(2,3,4,3,3,1,6,5,2,2)
)

case1
#A single-case data frame with one case

 [case #1]: values teacher hour mt phase
                 2       0    2  1     A
                 2       0    3  2     A
                 3       1    4  3     A
                 5       1    3  4     A
                 8       0    3  5     B
                 7       1    1  6     B
                 6       1    6  7     B
                 9       1    5  8     B
                 7       0    2  9     B
                 7       1    2 10     B

A publication table

options(scan.export.engine = "gt")
export(study, filename = "my_table.docx")
Table
Single case data frame with two cases
[case #1]
[case #2]
values mt phase values mt phase
2 1 A 3 1 A
2 2 A 1 2 A
4 3 A 3 3 A
5 4 A 2 4 A
8 5 B 6 5 B
7 6 B 3 6 B
6 7 B 4 7 B
9 8 B 6 8 B
8 9 B 7 9 B
7 10 B 5 10 B

Drwaw plot

scplot(case1)

Task

Create a dataset in scan for the following data frame:

Table
Single case data frame for case
values mt phase
5 1 A
7 2 A
8 3 A
5 4 A
7 5 A
12 6 B
16 7 B
18 8 B
15 9 B
14 10 B
19 11 B

Results

case1 <- scdf(values = c(A = 5, 7, 8, 5, 7, B = 12, 16, 18, 15, 14, 19))

Task

Create a new case and combine this case and the previous case into a single scdf:

Table
Single case data frame for case
values mt phase
2 1 A
5 2 A
2 3 A
2 4 A
3 5 A
4 6 A
10 7 B
12 8 B
8 9 B
12 10 B
11 11 B

Results

case1 <- scdf(values = c(A = 5, 7, 8, 5, 7, B = 12, 16, 18, 15, 14, 19))
case2 <- scdf(values = c(A = 2, 5, 2, 2, 3, 4, B = 10, 12, 8, 12, 11))
study <- c(case1, case2)
#A single-case data frame with two cases

 [case #1]: values teacher hour mt phase │ [case #2]: values mt phase │
                 2       0    2  1     A │                 2  1     A │
                 2       0    3  2     A │                 5  2     A │
                 3       1    4  3     A │                 2  3     A │
                 5       1    3  4     A │                 2  4     A │
                 8       0    3  5     B │                 3  5     A │
                 7       1    1  6     B │                 4  6     A │
                 6       1    6  7     B │                10  7     B │
                 9       1    5  8     B │                12  8     B │
                 7       0    2  9     B │                 8  9     B │
                 7       1    2 10     B │                12 10     B │
                                         │                11 11     B │