1 Set up

1.3 Custom Functions

## Function for returning beta in multiple regression bootstrap
reg.beta.boot <- function(formula, data, indices) {
    d <- data[indices, ]
    fit <- lm(formula, data = d)
    return(coef(fit))
}

## Function for returning F ratio in multiple regression bootstrap
reg.f.boot <- function(formula, data, indices) {
    d <- data[indices, ]
    fit <- lm(formula, data = d)
    return(summary(fit)$fstatistic[1])
}

# Function for formatting a p-value in APA style
aPa <- function(val) {
    if (val < 0.001) {
        pvl <- paste("<", sub("^(-?)0.", "\\1.", sprintf("%.3f", val)))
    } else {
        pvl <- paste("=", sub("^(-?)0.", "\\1.", sprintf("%.3f", val)))
    }
    return(pvl)
}

# Function for running the bootstrapped multiple regression
bootlm <- function(mod, modeldata) {
    pv <- function(val) {
        paste("=", sub("^(-?)0.", "\\1.", sprintf("%.3f", val)))
    }
    res <- tidy(mod)[1:2]
    names(res)[names(res) == "estimate"] <- "beta"
    f <- mod$call[[2]]
    cluster <- makeCluster(cores_to_use, type = "SOCK")
    registerDoSNOW(cluster)
    bootCoef <- boot(data = modeldata, statistic = reg.beta.boot, R = rsamp, 
        formula = f, cl = cluster, parallel = "snow", ncpus = cores_to_use)
    stopCluster(cluster)
    intervals <- data.frame()
    for (i in 1:nrow(res)) {
        bootInt <- boot.ci(bootCoef, type = "norm", index = i)
        lower <- as.numeric(bootInt$normal[2])
        beta.lower <- ifelse(abs(lower) < 0.01, scientific(lower, digits = 2), 
            round(lower, 2))
        upper <- as.numeric(bootInt$normal[3])
        beta.upper <- ifelse(abs(upper) < 0.01, scientific(upper, digits = 2), 
            round(upper, 2))
        intervals <- rbind(intervals, data.frame(beta.lower, beta.upper))
    }
    res$std.error <- tidy(bootCoef)$std.error
    t <- res$beta/res$std.error
    p <- c()
    for (i in 1:length(bootCoef$t0)) {
        p <- c(p, mean(abs(bootCoef$t[, i] - mean(bootCoef$t[, i], na.rm = T)) > 
            abs(bootCoef$t0[i]), na.rm = T))
    }
    res$t <- ifelse(abs(t) < 0.01, scientific(t, digits = 2), round(t, 
        2))
    res$beta <- ifelse(abs(res$beta) < 0.01, scientific(res$beta, digits = 2), 
        round(res$beta, 2))
    res$std.error <- ifelse(abs(res$std.error) < 0.01, scientific(res$std.error, 
        digits = 2), round(res$std.error, 2))
    res$pval <- ifelse(p < 0.001, "< .001", pv(p))
    res$sig <- ifelse(p < 0.01, "***", ifelse(p < 0.05, "*", ifelse(p < 
        0.1, ".", "")))
    res$beta <- paste(res$beta, " [", intervals$beta.lower, ", ", intervals$beta.upper, 
        "]", sep = "")
    cluster <- makeCluster(cores_to_use, type = "SOCK")
    registerDoSNOW(cluster)
    bootF <- boot(data = modeldata, statistic = reg.f.boot, R = rsamp, 
        formula = f, cl = cluster, parallel = "snow", ncpus = cores_to_use)
    stopCluster(cluster)
    f.CI <- boot.ci(bootF, type = "norm")
    lower <- as.numeric(f.CI$normal[2])
    f.lower <- ifelse(abs(lower) < 0.01, scientific(lower, digits = 2), 
        round(lower, 2))
    upper <- as.numeric(f.CI$normal[3])
    f.upper <- ifelse(abs(upper) < 0.01, scientific(upper, digits = 2), 
        round(upper, 2))
    fratio <- paste(round(summary(mod)$fstatistic[1], 2), " [", f.lower, 
        ", ", f.upper, "]", sep = "")
    modelf <- summary(mod)$fstatistic
    Ftext <- paste("F(", summary(mod)$fstatistic[2], ", ", summary(mod)$fstatistic[3], 
        ") = ", fratio, sep = "")
    Fp <- pf(modelf[1], modelf[2], modelf[3], lower.tail = F)
    Fpval <- paste("*p* ", ifelse(Fp < 0.001, "< .001", pv(Fp)), sep = "")
    rsq <- paste("*R*^2^ = ", round(summary(mod)$r.square, 4), sep = "")
    rsq
    modelfit <- paste(Ftext, Fpval, rsq, sep = ", ")
    varexpl <- round(summary(mod)$r.square, 4)
    output <- list(res, modelfit, varexpl)
    return(output)
}


# Format plots
format.plot <- function(p) {
    p <- p + theme_bw()
    p <- p + theme(legend.position = "none")
    p <- p + theme(plot.title = element_text(lineheight = 0.8, face = "bold", 
        size = 14), axis.title = element_text(face = "bold", size = 14), 
        axis.text = element_text(face = "bold", size = 12), panel.border = element_rect(colour = "black", 
            size = 1.5), legend.key.size = unit(0.9, "line"), legend.title = element_text(face = "bold", 
            size = 11), legend.text = element_text(size = 11), legend.position = "none", 
        strip.text = element_text(face = "bold", size = 14, color = "white"), 
        strip.background = element_rect(fill = "black"))
    p <- p + scale_fill_manual(values = c("#CC6666", "#9999CC", "#66CC99"))
    return(p)
}

## Sets the appearace of the histograms
formatHist <- function(p) {
    p <- p + theme_bw()
    p <- p + theme(plot.title = element_text(lineheight = 0.8, face = "bold", 
        size = 19), axis.title = element_text(face = "bold", size = 17, 
        colour = "black"), axis.text = element_text(face = "bold", size = 14), 
        panel.border = element_rect(colour = "black", size = 1))
    return(p)
}

## Creates a violin+box plot
viobox <- function(p) {
    p <- p + geom_violin(trim = FALSE, adjust = 0.5)
    p <- p + geom_boxplot(width = 0.1, size = 0.75)
    p <- p + geom_hline(aes(yintercept = 0), linetype = 2, size = 0.5, 
        colour = "#333333")
    p <- p + theme_bw()
    p <- p + theme(legend.position = "none")
    p <- p + theme(plot.title = element_text(lineheight = 0.8, face = "bold", 
        size = 14), axis.title = element_text(face = "bold", size = 14), 
        axis.text = element_text(face = "bold", size = 12), panel.border = element_rect(colour = "black", 
            size = 1.5), legend.key.size = unit(0.9, "line"), legend.title = element_text(face = "bold", 
            size = 11), legend.text = element_text(size = 11), legend.position = "none", 
        strip.text = element_text(face = "bold", size = 14, color = "white"), 
        strip.background = element_rect(fill = "black"))
    p <- p + scale_fill_manual(values = c("#CC6666", "#9999CC", "#66CC99"))
    p
}

# Round all the numbers in a data frame
round_df <- function(df) {
    nums <- vapply(df, is.numeric, FUN.VALUE = logical(1))
    df[, nums] <- round(df[, nums], digits = 2)
    return(df)
}

# Plot data for equivalence test
eq_plot_dat <- function(d) {
    res <- data.frame(diff = d$diff, lowertost = d$LL_CI_TOST, uppertost = d$UL_CI_TOST, 
        lowb = d$low_eqbound, highb = d$high_eqbound, p1 = d$TOST_p1, p2 = d$TOST_p2)
    return(res)
}

# Plot for equivalence test
eq_plot <- function(p) {
    if (graph$p1 < 0.05 & graph$p2 < 0.05) {
        cl = "#05B859"
    } else {
        cl = "#CC6666"
    }
    if (graph$p1 < 0.05 & graph$p2 < 0.05) {
        cl = "black"
    } else {
        cl = "black"
    }
    
    p <- p + geom_hline(yintercept = 0, linetype = 2, size = 0.75, colour = "#CCCCCC")
    p <- p + geom_hline(yintercept = graph$lowb, size = 1, linetype = 2, 
        colour = "black")
    p <- p + geom_hline(yintercept = graph$highb, size = 1, linetype = 2, 
        colour = "black")
    p <- p + geom_errorbar(aes(ymin = lowertost, ymax = uppertost), width = 0, 
        size = 3, colour = cl)
    p <- p + geom_point(size = 8, colour = cl)
    p <- p + ylab("Mean Difference\n")
    p <- p + coord_flip()
    p <- p + theme_bw()
    p <- p + theme(plot.title = element_text(lineheight = 0.8, face = "bold", 
        size = 14), axis.title = element_text(face = "bold", size = 12), 
        axis.text = element_text(face = "bold", size = 11), panel.border = element_rect(colour = "black", 
            size = 1.5), axis.ticks.y = element_blank(), axis.text.y = element_blank(), 
        axis.title.y = element_blank())
    return(p)
}

# Equivalence test results
eq_text_results <- function(d) {
    if (d$TOST_p1 > d$TOST_p2) {
        paste("t(", round(d$TOST_df, 2), ") = ", round(d$TOST_t1, 2), ", *p* ", 
            aPa(d$TOST_p1), sep = "")
    } else {
        paste("t(", round(d$TOST_df, 2), ") = ", round(d$TOST_t2, 2), ", *p* ", 
            aPa(d$TOST_p2), sep = "")
    }
}

# Build table for equivalence test
eq_add_row <- function(d) {
    if (d$TOST_p1 > d$TOST_p2) {
        res <- data.frame(t = round(d$TOST_t1, 2), df = round(d$TOST_df, 
            2), p = aPa(d$TOST_p1))
    } else {
        res <- data.frame(t = round(d$TOST_t2, 2), df = round(d$TOST_df, 
            2), p = aPa(d$TOST_p2))
    }
    return(res)
}

# Function to convert PLS-5 raw scores to/from growth scale values
# (GSVs)
gsv_convert <- function(input, type, out, new = c()) {
    
    # Receptive
    if (type == "receptive") {
        convert_tbl <- data.frame(raw = c(0:65), gsv = c(96, 127, 153, 
            175, 194, 207, 218, 227, 236, 245, 254, 262, 271, 280, 288, 
            296, 304, 313, 321, 332, 342, 351, 358, 364, 369, 374, 379, 
            384, 388, 393, 397, 402, 408, 414, 420, 425, 431, 436, 440, 
            445, 449, 453, 457, 460, 464, 467, 470, 473, 476, 478, 481, 
            484, 486, 489, 492, 495, 498, 501, 504, 508, 511, 515, 520, 
            526, 535, 543))
        new <- c()
        if (out == "gsv") {
            for (i in 1:length(input)) {
                new <- c(new, convert_tbl$gsv[convert_tbl$raw == input[i]])
            }
        } else if (out == "raw") {
            for (i in 1:length(input)) {
                new <- c(new, convert_tbl$raw[convert_tbl$gsv == input[i]])
            }
        }
    }
    
    # Expressive
    if (type == "expressive") {
        convert_tbl <- data.frame(raw = c(0:67), gsv = c(157, 171, 183, 
            193, 204, 216, 230, 242, 251, 258, 264, 270, 275, 280, 285, 
            290, 296, 302, 307, 313, 318, 323, 328, 334, 341, 349, 359, 
            367, 374, 380, 386, 393, 400, 409, 417, 426, 433, 440, 446, 
            452, 457, 462, 466, 469, 473, 476, 479, 483, 486, 489, 491, 
            494, 497, 500, 503, 505, 508, 511, 513, 516, 519, 522, 525, 
            529, 534, 539, 548, 556))
        new <- c()
        if (out == "gsv") {
            for (i in 1:length(input)) {
                new <- c(new, convert_tbl$gsv[convert_tbl$raw == input[i]])
            }
        } else if (out == "raw") {
            for (i in 1:length(input)) {
                new <- c(new, convert_tbl$raw[convert_tbl$gsv == input[i]])
            }
        }
    }
    
    return(new)
}

# P-value
pv <- function(val) {
    sub("^(-?)0.", "\\1.", sprintf("%.3f", val))
}
         [,1] [,2]
Pause      -1   -1
Dialogic    1   -1
Control     0    2
         [,1]
Low SES    -1
High SES    1
         [,1] [,2]
Pause      -1   -1
Dialogic    1   -1
Control     0    2
         [,1]
Low SES    -1
High SES    1

2 Caregiver Reading Style

2.2 Dialogic Reading

Warning: Removed 11 rows containing non-finite values (stat_ydensity).
Warning: Removed 11 rows containing non-finite values (stat_boxplot).

Term β SE t p
Intercept 0.12 [0.09, 0.21] 0.03 3.90 < .001
Dialogic vs. Control 0.36 [0.17, 0.41] 0.06 5.97 < .001
Fidelity 2.3e-03 [-8.6e-04, 5.1e-03] 1.5e-03 1.52 .096
SES 0.03 [-0.09, 0.09] 0.04 0.76 .449
Pre-Intervention Score -0.73 [-0.9, -0.56] 0.09 -8.40 < .001
Dialogic vs. Control × Fidelity -2.6e-03 [-8.4e-03, 3.3e-03] 3.0e-03 -0.88 .304
Dialogic vs. Control × SES -0.07 [-0.17, 0.18] 0.09 -0.76 .441
Dialogic vs. Control × Pre-Intervention -0.16 [-0.49, 0.17] 0.17 -0.91 .356

F(7, 82) = 16.62 [0.97, 26.84], p < .001, R2 = 0.5866, N = 90


2.3 Pause Reading

Warning: Removed 8 rows containing non-finite values (stat_ydensity).
Warning: Removed 8 rows containing non-finite values (stat_boxplot).

Term β SE t p
Intercept 0.2 [0.18, 0.32] 0.04 5.57 < .001
Pause vs. Control 0.42 [0.29, 0.57] 0.07 5.87 < .001
Fidelity -0.3 [-0.58, -0.02] 0.14 -2.13 .034
SES 0.05 [-0.09, 0.09] 0.05 1.04 .294
Pre-Intervention Score 7.6e-04 [-2.6e-03, 4e-03] 1.7e-03 0.45 .637
Pause vs. Control × Fidelity 0.56 [0.05, 1.14] 0.28 1.98 .047
Pause vs. Control × SES 9.7e-03 [-0.18, 0.19] 0.09 0.10 .917
Pause vs. Control × Pre-Intervention -3.6e-03 [-9.9e-03, 3.4e-03] 3.4e-03 -1.06 .267

F(7, 82) = 16.76 [3.96, 24.57], p < .001, R2 = 0.5886, N = 90


3 Child Language Outcomes

3.1 Expressive Vocabulary

3.1.1 Reported Model

Term β SE t p
Intercept 1.33 [0.83, 2.71] 0.48 2.77 .007
Pause vs. Dialogic 0.5 [-1.97, 1.88] 0.98 0.51 .608
Control vs. Intervention 0.24 [-1.4, 1.68] 0.79 0.31 .766
Pre-Intervention Score -0.1 [-0.22, 0.03] 0.06 -1.53 .124
SES 0.42 [-1.17, 1.16] 0.59 0.71 .468
Fidelity 3.3e-03 [-0.04, 0.04] 0.02 0.16 .842
Pause vs. Dialogic × Pre-Intervention Score -0.1 [-0.41, 0.2] 0.16 -0.65 .511
Pause vs. Dialogic × SES -0.52 [-2.59, 2.65] 1.34 -0.39 .697
Pause vs. Dialogic × Fidelity 0.03 [-0.04, 0.1] 0.04 0.82 .394
Control vs. Intervention × Pre-Intervention Score 0.05 [-0.13, 0.22] 0.09 0.56 .568
Control vs. Intervention × SES -0.03 [-1.76, 1.76] 0.90 -0.03 .973
Control vs. Intervention × Fidelity -8.8e-03 [-0.07, 0.07] 0.03 -0.25 .738

F(11, 135) = 0.5 [-1.85, 0.85], p = .898, R2 = 0.0394, N = 147


3.1.2 Supplemental - Parent

Term β SE t p
Intercept 1.31 [0.58, 2.57] 0.51 2.59 .010
Pause vs. Dialogic 0.8 [-1.76, 2.39] 1.06 0.76 .442
Control vs. Intervention 3.5e-03 [-1.37, 1.78] 0.81 4.3e-03 .996
Pre-Intervention Score -0.13 [-0.25, 9.1e-04] 0.06 -1.98 .050
SES 0.27 [-1.1, 1.08] 0.55 0.49 .627
Dialogic Score -4.33 [-7.85, -0.75] 1.81 -2.39 .018
Pause Score 4.78 [0.83, 8.54] 1.97 2.43 .018
Pause vs. Dialogic × Pre-Intervention Score -0.06 [-0.39, 0.25] 0.16 -0.37 .700
Pause vs. Dialogic × SES -0.48 [-2.52, 2.57] 1.30 -0.37 .714
Pause vs. Dialogic × Dialogic Score 5.88 [-3.21, 14.29] 4.46 1.32 .176
Pause vs. Dialogic × Pause Score -1.31 [-9.27, 7.34] 4.24 -0.31 .748
Control vs. Intervention × Pre-Intervention Score -9.2e-03 [-0.18, 0.16] 0.09 -0.1 .910
Control vs. Intervention × SES 0.17 [-1.63, 1.59] 0.82 0.21 .830
Control vs. Intervention × Dialogic Score -1.31 [-6.24, 3.4] 2.46 -0.53 .584
Control vs. Intervention × Pause Score 2.39 [-3.32, 8.52] 3.02 0.79 .418

F(14, 122) = 1.11 [-1.66, 1.51], p = .359, R2 = 0.1126, N = 137


3.1.3 Supplemental - GSV

Term β SE t p
Intercept 7.28 [1.95, 15.33] 3.41 2.13 .033
Pause vs. Dialogic 5.09 [-12.19, 13.34] 6.51 0.78 .436
Control vs. Intervention -0.47 [-10.92, 11.56] 5.73 -0.08 .934
Pre-Intervention Score -1.12 [-1.88, -0.3] 0.40 -2.76 .007
SES 1.38 [-7.01, 6.93] 3.56 0.39 .693
Dialogic Score -23.44 [-44.15, -1.94] 10.77 -2.18 .032
Pause Score 26.5 [1.44, 49.97] 12.38 2.14 .034
Pause vs. Dialogic × Pre-Intervention Score -0.09 [-2.05, 1.81] 0.99 -0.10 .930
Pause vs. Dialogic × SES -4.48 [-15.16, 15.68] 7.87 -0.57 .568
Pause vs. Dialogic × Dialogic Score 38.6 [-16.13, 91.11] 27.36 1.41 .148
Pause vs. Dialogic × Pause Score -18.26 [-69.74, 34.87] 26.69 -0.68 .488
Control vs. Intervention × Pre-Intervention Score -0.01 [-1.19, 1.09] 0.58 -0.02 .978
Control vs. Intervention × SES 0.69 [-10.89, 10.89] 5.56 0.12 .902
Control vs. Intervention × Dialogic Score -4.12 [-33.83, 24.37] 14.85 -0.28 .770
Control vs. Intervention × Pause Score 12.08 [-25.02, 51.22] 19.45 0.62 .518

F(14, 122) = 1.26 [-1.84, 1.92], p = .240, R2 = 0.1266, N = 137


3.2 Receptive Vocabulary

3.2.1 Reported Model

Term β SE t p
Intercept 1.68 [1.72, 3.7] 0.51 3.30 .001
Pause vs. Dialogic 1.48 [-0.72, 4.28] 1.27 1.16 .247
Control vs. Intervention 0.33 [-0.59, 2.19] 0.71 0.46 .638
Pre-Intervention Score -0.2 [-0.33, -0.09] 0.06 -3.29 .001
SES 1.01 [-1.25, 1.26] 0.64 1.57 .116
Fidelity 0.02 [-0.05, 0.07] 0.03 0.54 .525
Pause vs. Dialogic × Pre-Intervention Score -6.7e-03 [-0.32, 0.32] 0.16 -0.04 .967
Pause vs. Dialogic × SES 0.34 [-3.12, 3.22] 1.62 0.21 .832
Pause vs. Dialogic × Fidelity 0.04 [-0.07, 0.17] 0.06 0.73 .463
Control vs. Intervention × Pre-Intervention Score 0.02 [-0.13, 0.18] 0.08 0.31 .757
Control vs. Intervention × SES 0.59 [-1.69, 1.73] 0.87 0.68 .498
Control vs. Intervention × Fidelity -0.03 [-0.11, 0.08] 0.05 -0.59 .445

F(11, 135) = 1.97 [-1.5, 2.9], p = .036, R2 = 0.1382, N = 147


3.2.2 Supplemental - Parent

Term β SE t p
Intercept 1.65 [1.18, 3.64] 0.63 2.62 .012
Pause vs. Dialogic 2.83 [-0.87, 5.59] 1.65 1.72 .090
Control vs. Intervention 0.48 [-0.42, 2.77] 0.81 0.58 .561
Pre-Intervention Score -0.27 [-0.42, -0.13] 0.07 -3.72 < .001
SES 0.83 [-1.36, 1.34] 0.69 1.20 .227
Dialogic Score -3.08 [-7.72, 2.04] 2.49 -1.24 .211
Pause Score 2.32 [-2.79, 7.18] 2.54 0.91 .352
Pause vs. Dialogic × Pre-Intervention Score -0.02 [-0.41, 0.39] 0.21 -0.07 .939
Pause vs. Dialogic × SES -0.28 [-3.43, 3.63] 1.80 -0.15 .875
Pause vs. Dialogic × Dialogic Score -0.46 [-13.14, 14.66] 7.09 -0.06 .944
Pause vs. Dialogic × Pause Score 1.82 [-12.27, 14.59] 6.85 0.27 .793
Control vs. Intervention × Pre-Intervention Score 0.02 [-0.16, 0.18] 0.09 0.23 .821
Control vs. Intervention × SES 0.73 [-1.76, 1.73] 0.89 0.82 .409
Control vs. Intervention × Dialogic Score -8.15 [-13.28, -1.99] 2.88 -2.83 .006
Control vs. Intervention × Pause Score 9.2 [2.59, 15.21] 3.22 2.86 .006

F(14, 122) = 1.26 [-1.84, 1.92], p = .240, R2 = 0.1266, N = 137

3.2.3 Supplemental - GSV

Term β SE t p
Intercept 7.42 [5.01, 16.54] 2.94 2.52 .010
Pause vs. Dialogic 13.3 [-2.56, 26.77] 7.48 1.78 .077
Control vs. Intervention 1.05 [-2.85, 12.74] 3.98 0.26 .793
Pre-Intervention Score -1.52 [-2.19, -0.88] 0.33 -4.56 < .001
SES 3.41 [-6.59, 6.17] 3.25 1.05 .296
Dialogic Score -12.21 [-32.27, 9.02] 10.54 -1.16 .236
Pause Score 9.29 [-12.74, 30.82] 11.11 0.84 .396
Pause vs. Dialogic × Pre-Intervention Score -4.7e-03 [-1.76, 1.83] 0.92 -5.1e-03 .997
Pause vs. Dialogic × SES -0.4 [-15.83, 16.69] 8.30 -0.05 .961
Pause vs. Dialogic × Dialogic Score 0.68 [-51.91, 61.43] 28.91 0.02 .981
Pause vs. Dialogic × Pause Score 1.53 [-55.23, 53.97] 27.86 0.06 .956
Control vs. Intervention × Pre-Intervention Score 0.13 [-0.69, 0.9] 0.41 0.31 .748
Control vs. Intervention × SES 3.95 [-8.65, 8.42] 4.36 0.91 .361
Control vs. Intervention × Dialogic Score -36.91 [-59.45, -9.47] 12.75 -2.89 .007
Control vs. Intervention × Pause Score 40.07 [8.94, 67.96] 15.06 2.66 .011

F(14, 122) = 1.26 [-1.84, 1.92], p = .240, R2 = 0.1266, N = 137

3.3 CELF Scores

3.3.1 Reported Model

Term β SE t p
Intercept 1.19 [0.78, 3.07] 0.58 2.04 .042
Pause vs. Dialogic 0.87 [-2.18, 3.57] 1.47 0.59 .544
Control vs. Intervention 0.18 [-1.39, 1.83] 0.82 0.22 .823
Pre-Intervention Score -0.35 [-0.49, -0.21] 0.07 -4.70 < .001
SES 0.63 [-1.45, 1.43] 0.73 0.85 .402
Fidelity 0.04 [-0.07, 0.12] 0.05 0.78 .443
Pause vs. Dialogic × Pre-Intervention Score 0.23 [-0.12, 0.56] 0.17 1.31 .184
Pause vs. Dialogic × SES -0.16 [-3.62, 3.84] 1.90 -0.09 .928
Pause vs. Dialogic × Fidelity -0.02 [-0.13, 0.09] 0.06 -0.32 .723
Control vs. Intervention × Pre-Intervention Score 0.06 [-0.15, 0.27] 0.11 0.60 .542
Control vs. Intervention × SES 0.2 [-1.97, 1.8] 0.96 0.21 .832
Control vs. Intervention × Fidelity -9.0e-04 [-0.14, 0.21] 0.09 -0.01 .994

F(11, 124) = 2.07 [-1.3, 2.95], p = .027, R2 = 0.1552, N = 136


3.3.2 Supplemental - Parent

Term β SE t p
Intercept 0.88 [0.16, 2.74] 0.66 1.34 .181
Pause vs. Dialogic 2.04 [-1.01, 4.86] 1.50 1.36 .169
Control vs. Intervention -0.5 [-2, 1.9] 0.99 -0.50 .606
Pre-Intervention Score -0.38 [-0.52, -0.22] 0.08 -4.91 < .001
SES 0.53 [-1.47, 1.41] 0.74 0.72 .467
Dialogic Score -1.67 [-6.52, 2.65] 2.34 -0.71 .462
Pause Score 3.2 [-2.05, 8.62] 2.72 1.17 .233
Pause vs. Dialogic × Pre-Intervention Score 0.37 [0.02, 0.73] 0.18 2.04 .043
Pause vs. Dialogic × SES -0.22 [-3.61, 3.66] 1.85 -0.12 .909
Pause vs. Dialogic × Dialogic Score 8.44 [-4.83, 19.71] 6.26 1.35 .174
Pause vs. Dialogic × Pause Score -11.9 [-23.33, 0.58] 6.10 -1.95 .052
Control vs. Intervention × Pre-Intervention Score 0.07 [-0.16, 0.29] 0.11 0.61 .536
Control vs. Intervention × SES 0.39 [-2.06, 2.14] 1.07 0.36 .714
Control vs. Intervention × Dialogic Score -5.46 [-11.8, 0.37] 3.10 -1.76 .076
Control vs. Intervention × Pause Score 5.63 [-2.38, 14.31] 4.26 1.32 .178

F(14, 113) = 2.21 [-1.15, 3.07], p = .011, R2 = 0.2153, N = 128

3.4 Mean Length of Utterance

3.4.1 Reported Model

Term β SE t p
Intercept 0.12 [-1.43, 1.53] 0.76 0.16 .303
Pause vs. Dialogic 0.26 [-3.99, 4.81] 2.24 0.12 .347
Control vs. Intervention 0.13 [-1.47, 1.6] 0.78 0.17 .450
Pre-Intervention Score -0.15 [-2.8, 2.53] 1.36 -0.11 .435
SES -0.07 [-0.68, 0.65] 0.34 -0.22 .681
Fidelity 6.1e-03 [-0.05, 0.06] 0.03 0.21 .448
Pause vs. Dialogic × Pre-Intervention Score 0.3 [-7.63, 8.28] 4.06 0.07 .498
Pause vs. Dialogic × SES 0.18 [-1.81, 1.93] 0.95 0.18 .648
Pause vs. Dialogic × Fidelity 8.8e-03 [-0.15, 0.17] 0.08 0.11 .666
Control vs. Intervention × Pre-Intervention Score -0.04 [-2.85, 2.56] 1.38 -0.03 .912
Control vs. Intervention × SES -9.4e-03 [-0.71, 0.85] 0.40 -0.02 .973
Control vs. Intervention × Fidelity 2.2e-03 [-0.07, 0.07] 0.03 0.06 .823

F(11, 35) = 1.1 [-4.19, 2.46], p = .388, R2 = 0.2574, N = 47


3.4.2 Supplemental - Parent

Term β SE t p
Intercept 0.05 [-0.6, 0.51] 0.28 0.18 .773
Pause vs. Dialogic 0.3 [-0.62, 1.38] 0.51 0.59 .395
Control vs. Intervention 0.14 [-0.87, 1.03] 0.49 0.30 .633
Pre-Intervention Score -0.17 [-1.21, 0.88] 0.53 -0.32 .419
SES -0.05 [-0.8, 0.85] 0.42 -0.12 .831
Dialogic Score -0.58 [-3.89, 2.99] 1.75 -0.33 .383
Pause Score 0.66 [-3.09, 3.87] 1.78 0.37 .380
Pause vs. Dialogic × Pre-Intervention Score 0.44 [-2.58, 3.46] 1.54 0.28 .391
Pause vs. Dialogic × SES 0.13 [-1.7, 1.83] 0.90 0.14 .799
Pause vs. Dialogic × Dialogic Score 0.93 [-4.54, 6.56] 2.83 0.33 .519
Pause vs. Dialogic × Pause Score -0.49 [-6.16, 5.08] 2.87 -0.17 .761
Control vs. Intervention × Pre-Intervention Score -0.02 [-1.22, 1.05] 0.58 -0.03 .957
Control vs. Intervention × SES -0.11 [-1.33, 1.26] 0.66 -0.16 .745
Control vs. Intervention × Dialogic Score 0.55 [-5.55, 6.68] 3.12 0.18 .502
Control vs. Intervention × Pause Score -0.05 [-5.92, 6.42] 3.15 -0.02 .952

F(14, 33) = 0.96 [-4.47, 2.37], p = .514, R2 = 0.2888, N = 48

4 Exploratory Analyses

4.1 Power Analyses

# Load in simulation results
row_to_add <- data.frame(Outcome = NA, Comparison = NA, N = NA, B = NA, 
    N_required = NA)
obs_n <- read.csv("Power_Simulation_Results/expressive_observed_N.csv")
row_to_add$Outcome <- "Expressive language"
row_to_add$Comparison <- "Pause vs Dialogic"
row_to_add$N <- sum(obs_n$Freq)
obs_pow <- read.csv("Power_Simulation_Results/expressive_observed_power.csv")
row_to_add$B <- pv(obs_pow$express.power[obs_pow$term == "pauseVSdialogic"])
sim_n <- read.csv("Power_Simulation_Results/expressive_sim_pause-dia_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- row_to_add
row_to_add <- data.frame(Outcome = "Expressive language", Comparison = NA, 
    N = sum(obs_n$Freq), B = NA, N_required = NA)
row_to_add$Comparison <- "Control vs Pooled Intervention"
row_to_add$B <- pv(obs_pow$express.power[obs_pow$term == "control"])
sim_n <- read.csv("Power_Simulation_Results/expressive_sim_control_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)

row_to_add <- data.frame(Outcome = NA, Comparison = NA, N = NA, B = NA, 
    N_required = NA)
obs_n <- read.csv("Power_Simulation_Results/receptive_observed_N.csv")
row_to_add$Outcome <- "Receptive language"
row_to_add$Comparison <- "Pause vs Dialogic"
row_to_add$N <- sum(obs_n$Freq)
obs_pow <- read.csv("Power_Simulation_Results/receptive_observed_power.csv")
row_to_add$B <- pv(obs_pow$recp.power[obs_pow$term == "pauseVSdialogic"])
sim_n <- read.csv("Power_Simulation_Results/receptive_sim_pause-dia_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)
row_to_add <- data.frame(Outcome = "Receptive language", Comparison = NA, 
    N = sum(obs_n$Freq), B = NA, N_required = NA)
row_to_add$Comparison <- "Control vs Pooled Intervention"
row_to_add$B <- pv(obs_pow$recp.power[obs_pow$term == "control"])
sim_n <- read.csv("Power_Simulation_Results/receptive_sim_control_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)

row_to_add <- data.frame(Outcome = NA, Comparison = NA, N = NA, B = NA, 
    N_required = NA)
obs_n <- read.csv("Power_Simulation_Results/celf_observed_N.csv")
row_to_add$Outcome <- "Syntax comprehension"
row_to_add$Comparison <- "Pause vs Dialogic"
row_to_add$N <- sum(obs_n$Freq)
obs_pow <- read.csv("Power_Simulation_Results/celf_observed_power.csv")
row_to_add$B <- pv(obs_pow$celf.power[obs_pow$term == "pauseVSdialogic"])
sim_n <- read.csv("Power_Simulation_Results/celf_sim_pause-dia_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)
row_to_add <- data.frame(Outcome = "Syntax comprehension", Comparison = NA, 
    N = sum(obs_n$Freq), B = NA, N_required = NA)
row_to_add$Comparison <- "Control vs Pooled Intervention"
row_to_add$B <- pv(obs_pow$celf.power[obs_pow$term == "control"])
sim_n <- read.csv("Power_Simulation_Results/celf_sim_control_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)
row_to_add <- data.frame(Outcome = NA, Comparison = NA, N = NA, B = NA, 
    N_required = NA)

obs_n <- read.csv("Power_Simulation_Results/mlu_observed_N.csv")
row_to_add$Outcome <- "MLU"
row_to_add$Comparison <- "Pause vs Dialogic"
row_to_add$N <- sum(obs_n$Freq)
obs_pow <- read.csv("Power_Simulation_Results/mlu_observed_power.csv")
row_to_add$B <- pv(obs_pow$mlu.power[obs_pow$term == "pauseVSdialogic"])
sim_n <- read.csv("Power_Simulation_Results/mlu_sim_pause-dia_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)
row_to_add <- data.frame(Outcome = "MLU", Comparison = NA, N = sum(obs_n$Freq), 
    B = NA, N_required = NA)
row_to_add$Comparison <- "Control vs Pooled Intervention"
row_to_add$B <- pv(obs_pow$mlu.power[obs_pow$term == "control"])
sim_n <- read.csv("Power_Simulation_Results/mlu_sim_control_N.csv")
row_to_add$N_required <- ifelse(sum(sim_n$Freq) >= 10000, ">10000", sum(sim_n$Freq))
tab <- rbind(tab, row_to_add)

kable(tab, col.names = c("Outcome Measure", "Comparison", "N", "B", "N required for 80% power"))
Outcome Measure Comparison N B N required for 80% power
Expressive language Pause vs Dialogic 150 .180 942
Expressive language Control vs Pooled Intervention 150 .190 4272
Receptive language Pause vs Dialogic 150 .122 1056
Receptive language Control vs Pooled Intervention 150 .033 9078
Syntax comprehension Pause vs Dialogic 150 .154 1296
Syntax comprehension Control vs Pooled Intervention 150 .052 >10000
MLU Pause vs Dialogic 48 .052 2640
MLU Control vs Pooled Intervention 48 .255 294

4.2 Equivalence Tests

4.2.1 Expressive Vocabulary

Comparison N Mean SD
Pause 48 1.44 3.23
Dialogic 51 1.55 2.62
TOST results:
t-value lower bound: 2.29   p-value lower bound: 0.012
t-value upper bound: -2.67  p-value upper bound: 0.005
degrees of freedom : 90.57

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.4694 
high eqbound: 1.4694

TOST confidence interval:
lower bound 90% CI: -1.097
upper bound 90% CI:  0.874

NHST confidence interval:
lower bound 95% CI: -1.289
upper bound 95% CI:  1.066

Equivalence Test Result:
The equivalence test was significant, t(90.57) = 2.290, p = 0.0122, given equivalence bounds of -1.469 and 1.469 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(90.57) = -0.188, p = 0.851, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
Comparison N Mean SD
Intervention 51 1.25 3.19
Control 99 1.49 2.92
TOST results:
t-value lower bound: 2.41   p-value lower bound: 0.009
t-value upper bound: -3.31  p-value upper bound: 0.0007
degrees of freedom : 93.54

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.5269 
high eqbound: 1.5269

TOST confidence interval:
lower bound 90% CI: -1.127
upper bound 90% CI:  0.647

NHST confidence interval:
lower bound 95% CI: -1.3
upper bound 95% CI:  0.82

Equivalence Test Result:
The equivalence test was significant, t(93.54) = 2.411, p = 0.00894, given equivalence bounds of -1.527 and 1.527 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(93.54) = -0.450, p = 0.654, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
Comparison N Mean SD
Low SES 62 1.11 3.23
High SES 88 1.62 2.83
TOST results:
t-value lower bound: 1.98   p-value lower bound: 0.025
t-value upper bound: -3.99  p-value upper bound: 0.00006
degrees of freedom : 119.92

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.5185 
high eqbound: 1.5185

TOST confidence interval:
lower bound 90% CI: -1.356
upper bound 90% CI:  0.332

NHST confidence interval:
lower bound 95% CI: -1.521
upper bound 95% CI:  0.496

Equivalence Test Result:
The equivalence test was significant, t(119.92) = 1.976, p = 0.0252, given equivalence bounds of -1.518 and 1.518 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(119.92) = -1.005, p = 0.317, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
SES Group N Mean SD
1 Low SES Pause 19 0.79 2.99
2 Low SES Dialogic 22 1.55 2.50
4 High SES Pause 29 1.86 3.36
5 High SES Dialogic 29 1.55 2.75
TOST results:
t-value lower bound: 0.717  p-value lower bound: 0.239
t-value upper bound: -2.46  p-value upper bound: 0.010
degrees of freedom : 35.28

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.379 
high eqbound: 1.379

TOST confidence interval:
lower bound 90% CI: -2.224
upper bound 90% CI:  0.713

NHST confidence interval:
lower bound 95% CI: -2.52
upper bound 95% CI:  1.008

Equivalence Test Result:
The equivalence test was non-significant, t(35.28) = 0.717, p = 0.239, given equivalence bounds of -1.379 and 1.379 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(35.28) = -0.870, p = 0.390, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 0.886  p-value lower bound: 0.191
t-value upper bound: -2.55  p-value upper bound: 0.007
degrees of freedom : 37.66

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.878 
high eqbound: 1.878

TOST confidence interval:
lower bound 90% CI: -2.754
upper bound 90% CI:  0.934

NHST confidence interval:
lower bound 95% CI: -3.124
upper bound 95% CI:  1.304

Equivalence Test Result:
The equivalence test was non-significant, t(37.66) = 0.886, p = 0.191, given equivalence bounds of -1.878 and 1.878 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(37.66) = -0.832, p = 0.411, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group N Mean SD
Low SES Intervention 21 0.95 4.12
Low SES Control 41 1.20 2.73
High SES Intervention 30 1.47 2.39
High SES Control 58 1.71 3.04
TOST results:
t-value lower bound: 1.51   p-value lower bound: 0.071
t-value upper bound: -2.00  p-value upper bound: 0.027
degrees of freedom : 29.29

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.7467 
high eqbound: 1.7467

TOST confidence interval:
lower bound 90% CI: -1.932
upper bound 90% CI:  1.446

NHST confidence interval:
lower bound 95% CI: -2.276
upper bound 95% CI:  1.79

Equivalence Test Result:
The equivalence test was non-significant, t(29.29) = 1.512, p = 0.0706, given equivalence bounds of -1.747 and 1.747 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(29.29) = -0.244, p = 0.809, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 1.91   p-value lower bound: 0.030
t-value upper bound: -2.72  p-value upper bound: 0.004
degrees of freedom : 72.24

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.3679 
high eqbound: 1.3679

TOST confidence interval:
lower bound 90% CI: -1.226
upper bound 90% CI:  0.745

NHST confidence interval:
lower bound 95% CI: -1.419
upper bound 95% CI:  0.939

Equivalence Test Result:
The equivalence test was significant, t(72.24) = 1.906, p = 0.0303, given equivalence bounds of -1.368 and 1.368 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(72.24) = -0.406, p = 0.686, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.

Comparison t df p
Pause vs. Dialogic 2.29 90.57 = .012
Control vs. Intervention 2.41 93.54 = .009
SES 1.98 119.92 = .025
Pause vs. Dialogic (Low SES) 0.72 35.28 = .239
Pause vs. Dialogic (High SES) 0.89 37.66 = .191
Control vs. Intervention (Low SES) 1.51 29.29 = .071
Control vs. Intervention (High SES) 1.91 72.24 = .030

4.2.2 Receptive Vocabulary

Comparison N Mean SD
Pause 48 1.42 4.50
Dialogic 51 2.65 3.92
TOST results:
t-value lower bound: 1.04   p-value lower bound: 0.152
t-value upper bound: -3.93  p-value upper bound: 0.00008
degrees of freedom : 93.34

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.112 
high eqbound: 2.112

TOST confidence interval:
lower bound 90% CI: -2.645
upper bound 90% CI:  0.184

NHST confidence interval:
lower bound 95% CI: -2.921
upper bound 95% CI:  0.46

Equivalence Test Result:
The equivalence test was non-significant, t(93.34) = 1.036, p = 0.152, given equivalence bounds of -2.112 and 2.112 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(93.34) = -1.445, p = 0.152, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
Comparison N Mean SD
Intervention 51 1.69 3.43
Control 99 2.05 4.24
TOST results:
t-value lower bound: 2.44   p-value lower bound: 0.008
t-value upper bound: -3.57  p-value upper bound: 0.0003
degrees of freedom : 121.25

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.9283 
high eqbound: 1.9283

TOST confidence interval:
lower bound 90% CI: -1.429
upper bound 90% CI:  0.7

NHST confidence interval:
lower bound 95% CI: -1.636
upper bound 95% CI:  0.907

Equivalence Test Result:
The equivalence test was significant, t(121.25) = 2.435, p = 0.00817, given equivalence bounds of -1.928 and 1.928 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(121.25) = -0.567, p = 0.572, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
Comparison N Mean SD
Low SES 62 1.24 4.09
High SES 88 2.41 3.84
TOST results:
t-value lower bound: 1.23   p-value lower bound: 0.110
t-value upper bound: -4.76  p-value upper bound: 0.000003
degrees of freedom : 126.15

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.9841 
high eqbound: 1.9841

TOST confidence interval:
lower bound 90% CI: -2.263
upper bound 90% CI:  -0.071

NHST confidence interval:
lower bound 95% CI: -2.476
upper bound 95% CI:  0.142

Equivalence Test Result:
The equivalence test was non-significant, t(126.15) = 1.235, p = 0.110, given equivalence bounds of -1.984 and 1.984 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(126.15) = -1.764, p = 0.0801, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group N Mean SD
1 Low SES Pause 19 0.53 4.13
2 Low SES Dialogic 22 1.41 4.34
4 High SES Pause 29 2.00 4.71
5 High SES Dialogic 29 3.59 3.35
TOST results:
t-value lower bound: 0.933  p-value lower bound: 0.178
t-value upper bound: -2.27  p-value upper bound: 0.015
degrees of freedom : 38.61

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.1174 
high eqbound: 2.1174

TOST confidence interval:
lower bound 90% CI: -3.114
upper bound 90% CI:  1.348

NHST confidence interval:
lower bound 95% CI: -3.561
upper bound 95% CI:  1.796

Equivalence Test Result:
The equivalence test was non-significant, t(38.61) = 0.933, p = 0.178, given equivalence bounds of -2.117 and 2.117 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(38.61) = -0.667, p = 0.509, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 1.54   p-value lower bound: 0.065
t-value upper bound: -2.01  p-value upper bound: 0.025
degrees of freedom : 47.07

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.163 
high eqbound: 2.163

TOST confidence interval:
lower bound 90% CI: -2.334
upper bound 90% CI:  1.763

NHST confidence interval:
lower bound 95% CI: -2.742
upper bound 95% CI:  2.17

Equivalence Test Result:
The equivalence test was non-significant, t(47.07) = 1.538, p = 0.0654, given equivalence bounds of -2.163 and 2.163 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(47.07) = -0.234, p = 0.816, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group N Mean SD
Low SES Intervention 21 1.71 3.90
Low SES Control 41 1.00 4.21
High SES Intervention 30 1.67 3.13
High SES Control 58 2.79 4.13
TOST results:
t-value lower bound: 2.55   p-value lower bound: 0.007
t-value upper bound: -1.22  p-value upper bound: 0.114
degrees of freedom : 43.31

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.0299 
high eqbound: 2.0299

TOST confidence interval:
lower bound 90% CI: -1.094
upper bound 90% CI:  2.523

NHST confidence interval:
lower bound 95% CI: -1.455
upper bound 95% CI:  2.883

Equivalence Test Result:
The equivalence test was non-significant, t(43.31) = -1.223, p = 0.114, given equivalence bounds of -2.030 and 2.030 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(43.31) = 0.664, p = 0.510, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 0.897  p-value lower bound: 0.186
t-value upper bound: -3.75  p-value upper bound: 0.0002
degrees of freedom : 74.14

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.8336 
high eqbound: 1.8336

TOST confidence interval:
lower bound 90% CI: -2.44
upper bound 90% CI:  0.187

NHST confidence interval:
lower bound 95% CI: -2.697
upper bound 95% CI:  0.445

Equivalence Test Result:
The equivalence test was non-significant, t(74.14) = 0.897, p = 0.186, given equivalence bounds of -1.834 and 1.834 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(74.14) = -1.429, p = 0.157, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.

Comparison t df p
Pause vs. Dialogic 1.04 93.34 = .152
Control vs. Intervention 2.44 121.25 = .008
SES 1.23 126.15 = .110
Pause vs. Dialogic (Low SES) 0.93 38.61 = .178
Pause vs. Dialogic (High SES) 1.54 47.07 = .065
Control vs. Intervention (Low SES) -1.22 43.31 = .114
Control vs. Intervention (High SES) 0.90 74.14 = .186

4.2.3 CELF Scores

Comparison Mean SD N
Pause 1.10 4.62 42
Dialogic 1.53 3.37 49
Control 1.33 3.94 48
TOST results:
t-value lower bound: 1.84   p-value lower bound: 0.035
t-value upper bound: -2.86  p-value upper bound: 0.003
degrees of freedom : 73.81

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.0201 
high eqbound: 2.0201

TOST confidence interval:
lower bound 90% CI: -1.867
upper bound 90% CI:  0.996

NHST confidence interval:
lower bound 95% CI: -2.148
upper bound 95% CI:  1.277

Equivalence Test Result:
The equivalence test was significant, t(73.81) = 1.844, p = 0.0346, given equivalence bounds of -2.020 and 2.020 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(73.81) = -0.507, p = 0.614, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
Comparison Mean SD N
Intervention 1.33 3.94 48
Control 1.33 3.98 91
TOST results:
t-value lower bound: 2.81   p-value lower bound: 0.003
t-value upper bound: -2.80  p-value upper bound: 0.003
degrees of freedom : 96.43

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.9795 
high eqbound: 1.9795

TOST confidence interval:
lower bound 90% CI: -1.168
upper bound 90% CI:  1.175

NHST confidence interval:
lower bound 95% CI: -1.396
upper bound 95% CI:  1.404

Equivalence Test Result:
The equivalence test was significant, t(96.43) = -2.801, p = 0.00308, given equivalence bounds of -1.979 and 1.979 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(96.43) = 0.00519, p = 0.996, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
Comparison Mean SD N
Low SES 0.93 3.55 59
High SES 1.62 4.22 80
TOST results:
t-value lower bound: 1.90   p-value lower bound: 0.030
t-value upper bound: -4.00  p-value upper bound: 0.00005
degrees of freedom : 134.6

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.949 
high eqbound: 1.949

TOST confidence interval:
lower bound 90% CI: -1.786
upper bound 90% CI:  0.401

NHST confidence interval:
lower bound 95% CI: -1.998
upper bound 95% CI:  0.613

Equivalence Test Result:
The equivalence test was significant, t(134.6) = 1.903, p = 0.0296, given equivalence bounds of -1.949 and 1.949 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(134.6) = -1.049, p = 0.296, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically equivalent to zero.
SES Group Mean SD N
1 Low SES Pause 0.33 4.35 18
2 High SES Pause 1.67 4.82 24
4 High SES Dialogic 1.85 3.35 27
5 Low SES Control 1.26 2.90 19
TOST results:
t-value lower bound: 0.677  p-value lower bound: 0.251
t-value upper bound: -2.55  p-value upper bound: 0.007
degrees of freedom : 38.54

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -2.2948 
high eqbound: 2.2948

TOST confidence interval:
lower bound 90% CI: -3.728
upper bound 90% CI:  1.061

NHST confidence interval:
lower bound 95% CI: -4.208
upper bound 95% CI:  1.541

Equivalence Test Result:
The equivalence test was non-significant, t(38.54) = 0.677, p = 0.251, given equivalence bounds of -2.295 and 2.295 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(38.54) = -0.938, p = 0.354, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 1.00   p-value lower bound: 0.160
t-value upper bound: -2.47  p-value upper bound: 0.009
degrees of freedom : 44.59

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.6938 
high eqbound: 1.6938

TOST confidence interval:
lower bound 90% CI: -2.352
upper bound 90% CI:  0.921

NHST confidence interval:
lower bound 95% CI: -2.678
upper bound 95% CI:  1.247

Equivalence Test Result:
The equivalence test was non-significant, t(44.59) = 1.004, p = 0.160, given equivalence bounds of -1.694 and 1.694 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(44.59) = -0.735, p = 0.466, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group Mean SD N
Low SES Intervention 1.26 2.90 19
High SES Control 1.38 4.55 29
Low SES Intervention 0.78 3.84 40
High SES Control 1.76 4.06 51
TOST results:
t-value lower bound: 1.67   p-value lower bound: 0.051
t-value upper bound: -1.88  p-value upper bound: 0.033
degrees of freedom : 45.99

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.9072 
high eqbound: 1.9072

TOST confidence interval:
lower bound 90% CI: -1.921
upper bound 90% CI:  1.689

NHST confidence interval:
lower bound 95% CI: -2.281
upper bound 95% CI:  2.048

Equivalence Test Result:
The equivalence test was non-significant, t(45.99) = 1.666, p = 0.0513, given equivalence bounds of -1.907 and 1.907 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(45.99) = -0.108, p = 0.914, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 1.19   p-value lower bound: 0.119
t-value upper bound: -3.57  p-value upper bound: 0.0003
degrees of freedom : 85.9

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -1.9763 
high eqbound: 1.9763

TOST confidence interval:
lower bound 90% CI: -2.373
upper bound 90% CI:  0.394

NHST confidence interval:
lower bound 95% CI: -2.644
upper bound 95% CI:  0.664

Equivalence Test Result:
The equivalence test was non-significant, t(85.9) = 1.186, p = 0.119, given equivalence bounds of -1.976 and 1.976 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(85.9) = -1.190, p = 0.237, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.

Comparison t df p
Pause vs. Dialogic 1.84 73.81 = .035
Control vs. Intervention -2.80 96.43 = .003
SES 1.90 134.60 = .030
Pause vs. Dialogic (Low SES) 0.68 38.54 = .251
Pause vs. Dialogic (High SES) 1.00 44.59 = .160
Control vs. Intervention (Low SES) 1.67 45.99 = .051
Control vs. Intervention (High SES) 1.19 85.90 = .119

4.2.4 Mean Length of Utterance

Comparison N Mean SD
Pause 16 0.08 0.59
Dialogic 16 0.31 0.43
TOST results:
t-value lower bound: 0.174  p-value lower bound: 0.432
t-value upper bound: -2.65  p-value upper bound: 0.007
degrees of freedom : 27.33

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.2582 
high eqbound: 0.2582

TOST confidence interval:
lower bound 90% CI: -0.537
upper bound 90% CI:  0.084

NHST confidence interval:
lower bound 95% CI: -0.601
upper bound 95% CI:  0.148

Equivalence Test Result:
The equivalence test was non-significant, t(27.33) = 0.174, p = 0.432, given equivalence bounds of -0.258 and 0.258 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(27.33) = -1.241, p = 0.225, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
Comparison N Mean SD
Intervention 16 -0.01 0.48
Control 32 0.19 0.52
TOST results:
t-value lower bound: 0.336  p-value lower bound: 0.369
t-value upper bound: -2.97  p-value upper bound: 0.003
degrees of freedom : 32.16

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.2515 
high eqbound: 0.2515

TOST confidence interval:
lower bound 90% CI: -0.458
upper bound 90% CI:  0.057

NHST confidence interval:
lower bound 95% CI: -0.51
upper bound 95% CI:  0.109

Equivalence Test Result:
The equivalence test was non-significant, t(32.16) = 0.336, p = 0.369, given equivalence bounds of -0.251 and 0.251 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(32.16) = -1.317, p = 0.197, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
Comparison N Mean SD
Low SES 24 0.22 0.4
High SES 24 0.03 0.6
TOST results:
t-value lower bound: 3.00   p-value lower bound: 0.002
t-value upper bound: -0.462     p-value upper bound: 0.323
degrees of freedom : 40.01

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.2547 
high eqbound: 0.2547

TOST confidence interval:
lower bound 90% CI: -0.061
upper bound 90% CI:  0.434

NHST confidence interval:
lower bound 95% CI: -0.11
upper bound 95% CI:  0.484

Equivalence Test Result:
The equivalence test was non-significant, t(40.01) = -0.462, p = 0.323, given equivalence bounds of -0.255 and 0.255 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(40.01) = 1.270, p = 0.211, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group N Mean SD
1 Low SES Pause 8 0.29 0.24
2 Low SES Dialogic 8 0.31 0.50
4 High SES Pause 8 -0.13 0.77
5 High SES Dialogic 8 0.31 0.38
TOST results:
t-value lower bound: 0.928  p-value lower bound: 0.188
t-value upper bound: -1.07  p-value upper bound: 0.154
degrees of freedom : 10.04

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.1968 
high eqbound: 0.1968

TOST confidence interval:
lower bound 90% CI: -0.371
upper bound 90% CI:  0.342

NHST confidence interval:
lower bound 95% CI: -0.452
upper bound 95% CI:  0.424

Equivalence Test Result:
The equivalence test was non-significant, t(10.04) = 0.928, p = 0.188, given equivalence bounds of -0.197 and 0.197 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(10.04) = -0.0724, p = 0.944, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 1.63   p-value lower bound: 0.067
t-value upper bound: -0.374     p-value upper bound: 0.358
degrees of freedom : 10.71

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.3078 
high eqbound: 0.3078

TOST confidence interval:
lower bound 90% CI: -0.362
upper bound 90% CI:  0.747

NHST confidence interval:
lower bound 95% CI: -0.487
upper bound 95% CI:  0.872

Equivalence Test Result:
The equivalence test was non-significant, t(10.71) = -0.374, p = 0.358, given equivalence bounds of -0.308 and 0.308 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(10.71) = 0.626, p = 0.545, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
SES Group N Mean SD
Low SES Intervention 8 0.06 0.41
Low SES Control 16 0.30 0.38
High SES Intervention 8 -0.07 0.57
High SES Control 16 0.09 0.63
TOST results:
t-value lower bound: -0.241     p-value lower bound: 0.593
t-value upper bound: -2.52  p-value upper bound: 0.013
degrees of freedom : 13.14

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.198 
high eqbound: 0.198

TOST confidence interval:
lower bound 90% CI: -0.547
upper bound 90% CI:  0.067

NHST confidence interval:
lower bound 95% CI: -0.615
upper bound 95% CI:  0.135

Equivalence Test Result:
The equivalence test was non-significant, t(13.14) = -0.241, p = 0.593, given equivalence bounds of -0.198 and 0.198 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(13.14) = -1.381, p = 0.190, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.
TOST results:
t-value lower bound: 0.543  p-value lower bound: 0.298
t-value upper bound: -1.80  p-value upper bound: 0.045
degrees of freedom : 15.41

Equivalence bounds (Cohen's d):
low eqbound: -0.5 
high eqbound: 0.5

Equivalence bounds (raw scores):
low eqbound: -0.299 
high eqbound: 0.299

TOST confidence interval:
lower bound 90% CI: -0.607
upper bound 90% CI:  0.285

NHST confidence interval:
lower bound 95% CI: -0.702
upper bound 95% CI:  0.381

Equivalence Test Result:
The equivalence test was non-significant, t(15.41) = 0.543, p = 0.298, given equivalence bounds of -0.299 and 0.299 (on a raw scale) and an alpha of 0.05.

Null Hypothesis Test Result:
The null hypothesis test was non-significant, t(15.41) = -0.631, p = 0.537, given an alpha of 0.05.

Based on the equivalence test and the null-hypothesis test combined, we can conclude that the observed effect is statistically not different from zero and statistically not equivalent to zero.

Comparison t df p
Pause vs. Dialogic 0.17 27.33 = .432
Control vs. Intervention 0.34 32.16 = .369
SES -0.46 40.01 = .323
Pause vs. Dialogic (Low SES) 0.93 10.04 = .188
Pause vs. Dialogic (High SES) -0.37 10.71 = .358
Control vs. Intervention (Low SES) -0.24 13.14 = .593
Control vs. Intervention (High SES) 0.54 15.41 = .298

5 Appendix

R version 3.6.2 (2019-12-12)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.3 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets 
[7] methods   base     

other attached packages:
 [1] doSNOW_1.0.18     snow_0.4-3        doParallel_1.0.15
 [4] iterators_1.0.12  foreach_1.4.7     future_1.15.1    
 [7] TOSTER_0.3.4      plyr_1.8.4        forcats_0.4.0    
[10] dplyr_0.8.3       purrr_0.3.3       readr_1.3.1      
[13] tidyr_1.0.0       tibble_2.1.3      tidyverse_1.3.0  
[16] ggpubr_0.2.4      magrittr_1.5      stringr_1.4.0    
[19] knitr_1.26        scales_1.1.0      broom_0.5.2      
[22] reshape2_1.4.3    boot_1.3-23       lme4_1.1-21      
[25] Matrix_1.2-18     ggplot2_3.2.1     foreign_0.8-72   

loaded via a namespace (and not attached):
 [1] httr_1.4.1       jsonlite_1.6     splines_3.6.2   
 [4] modelr_0.1.5     assertthat_0.2.1 highr_0.8       
 [7] cellranger_1.1.0 yaml_2.2.0       globals_0.12.5  
[10] pillar_1.4.2     backports_1.1.5  lattice_0.20-38 
[13] glue_1.3.1       digest_0.6.23    ggsignif_0.6.0  
[16] rvest_0.3.5      minqa_1.2.4      colorspace_1.4-1
[19] cowplot_1.0.0    htmltools_0.4.0  pkgconfig_2.0.3 
[22] listenv_0.8.0    haven_2.2.0      farver_2.0.1    
[25] generics_0.0.2   withr_2.1.2      lazyeval_0.2.2  
[28] cli_2.0.0        crayon_1.3.4     readxl_1.3.1    
[31] evaluate_0.14    fs_1.3.1         fansi_0.4.0     
[34] nlme_3.1-142     MASS_7.3-51.4    xml2_1.2.2      
[37] tools_3.6.2      hms_0.5.2        formatR_1.7     
[40] lifecycle_0.1.0  munsell_0.5.0    reprex_0.3.0    
[43] compiler_3.6.2   rlang_0.4.2      grid_3.6.2      
[46] nloptr_1.2.1     rstudioapi_0.10  labeling_0.3    
[49] rmarkdown_1.18   gtable_0.3.0     codetools_0.2-16
[52] DBI_1.0.0        R6_2.4.1         lubridate_1.7.4 
[55] zeallot_0.1.0    stringi_1.4.3    Rcpp_1.0.3      
[58] vctrs_0.2.0      dbplyr_1.4.2     tidyselect_0.2.5
[61] xfun_0.11