For use later on.
calculate_pooled_sd <- function(sd_group1, n_group1, sd_group2, n_group2) {
sqrt(((n_group1 - 1) * (sd_group1 ^ 2) + (n_group2 - 1) * (sd_group2 ^ 2)) / (n_group1 + n_group2 - 2))
}
# test
calculate_pooled_sd(sd_group1 = 17.85, n_group1 = 6, sd_group2 = 8.16, n_group2 = 8)
## [1] 13.09966
Mixed effects models (with gender added and variables scaled)
Somewhat final models.
library(lme4)
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
## The following object is masked from 'package:tidyr':
##
## expand
df <- mutate(df,
PreUV_s = scale(PreUV_ave, center = T, scale = F),
PreEff_s = scale(PreEff_Ave, center = T, scale = F),
PreInt_s = scale(PreInt_Ave, center = T, scale = F),
PreVal_s = scale(PreVal_Ave, center = T, scale = F))
# m_utility_val_lm <- lm(PostUV_ave ~ Int + PreUV_ave + Int*PreEff_Ave + ClassTeacher, data = df)
# summary(m_utility_val_lm)
m_utility_val <- lmer(PostUV_ave ~ Int + PreUV_s + Int*PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_utility_val, show.se = TRUE)
## Warning in checkMatrixPackageVersion(): Package version inconsistency detected.
## TMB was built with Matrix version 1.2.10
## Current Matrix version is 1.2.11
## Please re-install 'TMB' from source or restore original 'Matrix' package
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostUV_ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.52
|
5.14 – 5.90
|
0.19
|
<.001
|
Int
|
|
0.44
|
0.04 – 0.84
|
0.20
|
.041
|
PreUV_s
|
|
0.43
|
0.27 – 0.60
|
0.08
|
<.001
|
PreEff_s
|
|
-0.19
|
-0.48 – 0.10
|
0.15
|
.216
|
PreInt_s
|
|
0.24
|
0.05 – 0.42
|
0.09
|
.017
|
Gender
|
|
-0.22
|
-0.62 – 0.18
|
0.20
|
.286
|
Int:PreEff_s
|
|
0.24
|
-0.17 – 0.65
|
0.21
|
.254
|
Random Parts
|
σ2
|
|
1.728
|
τ00, ClassTeacher
|
|
0.057
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.032
|
Observations
|
|
170
|
R2 / Ω02
|
|
.294 / .293
|
df %>%
group_by(Int) %>%
summarize(sd = sd(PostUV_ave, na.rm = T),
n = n())
## # A tibble: 3 x 3
## Int sd n
## <int> <dbl> <int>
## 1 0 1.6625691 90
## 2 1 1.3618003 98
## 3 NA 0.9268222 24
calculate_pooled_sd(sd_group1 = 1.36, n_group1 = 98, sd_group2 = 1.66, n_group2 = 90)
## [1] 1.510998
.438 / calculate_pooled_sd(sd_group1 = 1.36, n_group1 = 98, sd_group2 = 1.66, n_group2 = 90)
## [1] 0.2898746
m_utility_val_ni <- lmer(PostUV_ave ~ Int + PreUV_s + Int + PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_utility_val_ni, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostUV_ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.52
|
5.14 – 5.91
|
0.19
|
<.001
|
Int
|
|
0.44
|
0.04 – 0.84
|
0.20
|
.039
|
PreUV_s
|
|
0.43
|
0.26 – 0.59
|
0.08
|
<.001
|
PreEff_s
|
|
-0.09
|
-0.34 – 0.15
|
0.12
|
.461
|
PreInt_s
|
|
0.25
|
0.06 – 0.43
|
0.09
|
.014
|
Gender
|
|
-0.22
|
-0.62 – 0.18
|
0.20
|
.285
|
Random Parts
|
σ2
|
|
1.732
|
τ00, ClassTeacher
|
|
0.056
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.031
|
Observations
|
|
170
|
R2 / Ω02
|
|
.287 / .287
|
.443 / calculate_pooled_sd(sd_group1 = 1.36, n_group1 = 98, sd_group2 = 1.66, n_group2 = 90)
## [1] 0.2931836
# m_utility_val_ni <- lmer(PostUV_ave ~ Int + PreUV_ave + PreEff_Ave + (1|ClassTeacher), data = df)
# sjPlot::sjt.lmer(m_utility_val_ni)
m_val <- lmer(PostVal_Ave ~ Int + PreVal_s + Int*PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_val, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostVal_Ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.51
|
5.16 – 5.85
|
0.18
|
<.001
|
Int
|
|
0.32
|
-0.01 – 0.65
|
0.17
|
.076
|
PreVal_s
|
|
0.46
|
0.26 – 0.66
|
0.10
|
<.001
|
PreEff_s
|
|
-0.09
|
-0.34 – 0.15
|
0.13
|
.465
|
PreInt_s
|
|
0.19
|
0.03 – 0.36
|
0.08
|
.036
|
Gender
|
|
-0.02
|
-0.35 – 0.31
|
0.17
|
.922
|
Int:PreEff_s
|
|
0.12
|
-0.22 – 0.46
|
0.17
|
.496
|
Random Parts
|
σ2
|
|
1.231
|
τ00, ClassTeacher
|
|
0.088
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.067
|
Observations
|
|
177
|
R2 / Ω02
|
|
.341 / .340
|
summary(m_val)
## Linear mixed model fit by REML ['lmerMod']
## Formula:
## PostVal_Ave ~ Int + PreVal_s + Int * PreEff_s + PreInt_s + Gender +
## (1 | ClassTeacher)
## Data: df
##
## REML criterion at convergence: 556.1
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.4306 -0.4742 0.2630 0.6342 1.7582
##
## Random effects:
## Groups Name Variance Std.Dev.
## ClassTeacher (Intercept) 0.08788 0.2964
## Residual 1.23117 1.1096
## Number of obs: 177, groups: ClassTeacher, 8
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 5.50576 0.17800 30.931
## Int 0.31717 0.16870 1.880
## PreVal_s 0.45964 0.10114 4.544
## PreEff_s -0.09358 0.12554 -0.745
## PreInt_s 0.19154 0.08476 2.260
## Gender -0.01683 0.16920 -0.099
## Int:PreEff_s 0.12044 0.17328 0.695
##
## Correlation of Fixed Effects:
## (Intr) Int PrVl_s PrEff_ PrInt_ Gender
## Int -0.483
## PreVal_s 0.011 0.008
## PreEff_s 0.048 -0.030 -0.364
## PreInt_s -0.052 0.043 -0.473 -0.085
## Gender -0.445 0.005 -0.022 -0.056 0.113
## Int:PrEff_s -0.013 -0.028 0.004 -0.540 -0.067 -0.004
df %>%
group_by(Int) %>%
summarize(sd = sd(PostVal_Ave, na.rm = T),
n = n())
## # A tibble: 3 x 3
## Int sd n
## <int> <dbl> <int>
## 1 0 1.3811120 90
## 2 1 1.2636460 98
## 3 NA 0.7863987 24
calculate_pooled_sd(sd_group1 = 1.26, n_group1 = 98, sd_group2 = 1.38, n_group2 = 90)
## [1] 1.318782
.317 / calculate_pooled_sd(sd_group1 = 1.26, n_group1 = 98, sd_group2 = 1.38, n_group2 = 90)
## [1] 0.2403732
m_val_ni <- lmer(PostVal_Ave ~ Int + PreVal_s + PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_val_ni, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostVal_Ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.51
|
5.16 – 5.86
|
0.18
|
<.001
|
Int
|
|
0.32
|
-0.01 – 0.65
|
0.17
|
.073
|
PreVal_s
|
|
0.46
|
0.26 – 0.66
|
0.10
|
<.001
|
PreEff_s
|
|
-0.05
|
-0.25 – 0.16
|
0.11
|
.665
|
PreInt_s
|
|
0.20
|
0.03 – 0.36
|
0.08
|
.032
|
Gender
|
|
-0.02
|
-0.35 – 0.31
|
0.17
|
.923
|
Random Parts
|
σ2
|
|
1.227
|
τ00, ClassTeacher
|
|
0.088
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.067
|
Observations
|
|
177
|
R2 / Ω02
|
|
.339 / .338
|
summary(m_val_ni)
## Linear mixed model fit by REML ['lmerMod']
## Formula: PostVal_Ave ~ Int + PreVal_s + PreEff_s + PreInt_s + Gender +
## (1 | ClassTeacher)
## Data: df
##
## REML criterion at convergence: 554.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.3321 -0.4861 0.2623 0.6413 1.8726
##
## Random effects:
## Groups Name Variance Std.Dev.
## ClassTeacher (Intercept) 0.08844 0.2974
## Residual 1.22716 1.1078
## Number of obs: 177, groups: ClassTeacher, 8
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 5.50744 0.17800 30.941
## Int 0.32051 0.16836 1.904
## PreVal_s 0.45934 0.10098 4.549
## PreEff_s -0.04645 0.10548 -0.440
## PreInt_s 0.19549 0.08444 2.315
## Gender -0.01645 0.16893 -0.097
##
## Correlation of Fixed Effects:
## (Intr) Int PrVl_s PrEff_ PrInt_
## Int -0.483
## PreVal_s 0.011 0.008
## PreEff_s 0.048 -0.053 -0.430
## PreInt_s -0.053 0.041 -0.474 -0.145
## Gender -0.444 0.005 -0.022 -0.069 0.113
.320 / calculate_pooled_sd(sd_group1 = 1.26, n_group1 = 98, sd_group2 = 1.38, n_group2 = 90)
## [1] 0.2426481
m_interest <- lmer(PostInt_Ave ~ Int + PreVal_s + Int*PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_interest, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostInt_Ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.49
|
4.99 – 5.98
|
0.25
|
<.001
|
Int
|
|
0.02
|
-0.36 – 0.41
|
0.20
|
.903
|
PreVal_s
|
|
0.29
|
0.05 – 0.52
|
0.12
|
.030
|
PreEff_s
|
|
-0.15
|
-0.44 – 0.14
|
0.15
|
.337
|
PreInt_s
|
|
0.42
|
0.22 – 0.61
|
0.10
|
<.001
|
Gender
|
|
-0.30
|
-0.68 – 0.09
|
0.20
|
.155
|
Int:PreEff_s
|
|
0.20
|
-0.20 – 0.60
|
0.20
|
.336
|
Random Parts
|
σ2
|
|
1.671
|
τ00, ClassTeacher
|
|
0.283
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.145
|
Observations
|
|
177
|
R2 / Ω02
|
|
.372 / .371
|
summary(m_interest)
## Linear mixed model fit by REML ['lmerMod']
## Formula:
## PostInt_Ave ~ Int + PreVal_s + Int * PreEff_s + PreInt_s + Gender +
## (1 | ClassTeacher)
## Data: df
##
## REML criterion at convergence: 612.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.0813 -0.4602 0.1875 0.6826 1.8974
##
## Random effects:
## Groups Name Variance Std.Dev.
## ClassTeacher (Intercept) 0.2832 0.5322
## Residual 1.6713 1.2928
## Number of obs: 177, groups: ClassTeacher, 8
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 5.48659 0.25219 21.756
## Int 0.02450 0.19708 0.124
## PreVal_s 0.28567 0.11840 2.413
## PreEff_s -0.14648 0.14740 -0.994
## PreInt_s 0.41622 0.09966 4.176
## Gender -0.29684 0.19752 -1.503
## Int:PreEff_s 0.20144 0.20233 0.996
##
## Correlation of Fixed Effects:
## (Intr) Int PrVl_s PrEff_ PrInt_ Gender
## Int -0.396
## PreVal_s 0.011 0.008
## PreEff_s 0.042 -0.025 -0.360
## PreInt_s -0.045 0.038 -0.475 -0.090
## Gender -0.367 0.002 -0.024 -0.061 0.117
## Int:PrEff_s -0.012 -0.030 0.006 -0.543 -0.065 -0.002
df %>%
group_by(Int) %>%
summarize(sd = sd(PostInt_Ave, na.rm = T),
n = n())
## # A tibble: 3 x 3
## Int sd n
## <int> <dbl> <int>
## 1 0 1.5395672 90
## 2 1 1.6183902 98
## 3 NA 0.8764629 24
calculate_pooled_sd(sd_group1 = 1.61, n_group1 = 98, sd_group2 = 1.53, n_group2 = 90)
## [1] 1.572228
.024 / calculate_pooled_sd(sd_group1 = 1.61, n_group1 = 98, sd_group2 = 1.53, n_group2 = 90)
## [1] 0.01526496
m_interest_ni <- lmer(PostInt_Ave ~ Int + PreVal_s + PreEff_s + PreInt_s + Gender + (1|ClassTeacher), data = df)
sjPlot::sjt.lmer(m_interest_ni, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
PostInt_Ave
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.49
|
5.00 – 5.98
|
0.25
|
<.001
|
Int
|
|
0.03
|
-0.36 – 0.42
|
0.20
|
.880
|
PreVal_s
|
|
0.28
|
0.05 – 0.52
|
0.12
|
.030
|
PreEff_s
|
|
-0.07
|
-0.31 – 0.18
|
0.12
|
.598
|
PreInt_s
|
|
0.42
|
0.23 – 0.62
|
0.10
|
<.001
|
Gender
|
|
-0.30
|
-0.68 – 0.09
|
0.20
|
.155
|
Random Parts
|
σ2
|
|
1.672
|
τ00, ClassTeacher
|
|
0.282
|
NClassTeacher
|
|
8
|
ICCClassTeacher
|
|
0.144
|
Observations
|
|
177
|
R2 / Ω02
|
|
.369 / .367
|
summary(m_interest_ni)
## Linear mixed model fit by REML ['lmerMod']
## Formula: PostInt_Ave ~ Int + PreVal_s + PreEff_s + PreInt_s + Gender +
## (1 | ClassTeacher)
## Data: df
##
## REML criterion at convergence: 611.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.1730 -0.5027 0.1919 0.6837 1.8470
##
## Random effects:
## Groups Name Variance Std.Dev.
## ClassTeacher (Intercept) 0.2816 0.5307
## Residual 1.6716 1.2929
## Number of obs: 177, groups: ClassTeacher, 8
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 5.48957 0.25178 21.803
## Int 0.03027 0.19700 0.154
## PreVal_s 0.28487 0.11841 2.406
## PreEff_s -0.06686 0.12383 -0.540
## PreInt_s 0.42278 0.09945 4.251
## Gender -0.29647 0.19753 -1.501
##
## Correlation of Fixed Effects:
## (Intr) Int PrVl_s PrEff_ PrInt_
## Int -0.397
## PreVal_s 0.011 0.008
## PreEff_s 0.042 -0.048 -0.425
## PreInt_s -0.046 0.036 -0.475 -0.150
## Gender -0.368 0.002 -0.024 -0.074 0.117
.030 / calculate_pooled_sd(sd_group1 = 1.61, n_group1 = 98, sd_group2 = 1.53, n_group2 = 90)
## [1] 0.0190812
Participant flow
df <- dplyr::select(df, -dplyr::contains("_s"))
# UTILITY VALUE
df %>%
dplyr::filter(is.na(PreUV_ave)) # 3 students missing pre UV
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 1 10 NA 6.2 4.0 6.2 1
## 2 0 11 NA 2.4 4.6 4.2 1
## 3 0 11 NA 4.8 7.0 5.4 0
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 NA 5.666667 3.2 4.428571 5.625 0
## 2 NA 2.666667 1.2 4.000000 2.000 6
## 3 NA 5.333333 3.0 7.000000 4.750 7
df %>%
filter(is.na(PostUV_ave)) # 20 students missing pre UV
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 0 11 7.0 NA 7.00 7.0 1
## 2 0 10 3.6 NA 5.60 3.2 NA
## 3 0 11 3.6 NA 4.40 6.2 1
## 4 0 11 6.8 NA 6.80 5.4 1
## 5 0 11 6.8 NA 6.40 6.4 1
## 6 1 11 7.0 NA 7.00 6.8 1
## 7 0 10 5.6 NA 6.00 5.4 0
## 8 1 11 6.4 NA 6.80 3.0 NA
## 9 1 11 5.2 NA 7.00 5.6 0
## 10 1 10 NA NA 6.75 6.6 NA
## 11 0 10 7.0 NA 7.00 7.0 1
## 12 1 10 6.4 NA 6.60 5.8 1
## 13 0 10 7.0 NA 7.00 6.4 1
## 14 0 11 4.8 NA 6.60 5.8 0
## 15 1 10 5.4 NA 6.80 5.6 0
## 16 0 10 5.8 NA 6.40 3.6 1
## 17 1 11 6.4 NA 6.60 5.8 0
## 18 0 10 5.2 NA 5.00 2.8 NA
## 19 0 11 4.2 NA 2.25 6.2 0
## 20 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 7.000000 NA NA 7.000000 NA 7
## 2 3.666667 NA NA 3.500000 NA 1
## 3 3.666667 NA NA 3.875000 NA 7
## 4 6.666667 NA 6.2 6.875000 5.000000 6
## 5 6.666667 NA NA 6.500000 NA 5
## 6 7.000000 NA NA 7.000000 NA 7
## 7 5.333333 NA 5.6 5.500000 5.714286 1
## 8 6.000000 NA NA 6.375000 NA 4
## 9 4.000000 NA NA 5.750000 NA 4
## 10 6.333333 NA NA 6.714286 NA 0
## 11 7.000000 NA NA 7.000000 NA 3
## 12 6.333333 NA NA 5.750000 NA 2
## 13 7.000000 NA 7.0 7.000000 7.000000 2
## 14 5.000000 NA NA 5.000000 NA 6
## 15 5.000000 NA NA 5.500000 NA 0
## 16 5.000000 NA NA 6.250000 NA 1
## 17 6.666667 NA NA 6.500000 NA 3
## 18 5.000000 NA NA 4.875000 NA 3
## 19 4.333333 NA 2.8 3.500000 3.428571 4
## 20 3.000000 NA NA 2.250000 NA 3
df %>%
filter(is.na(PreUV_ave) | is.na(PostUV_ave)) # 23 students missing either pre or post UV
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 1 10 NA 6.2 4.00 6.2 1
## 2 0 11 7.0 NA 7.00 7.0 1
## 3 0 10 3.6 NA 5.60 3.2 NA
## 4 0 11 3.6 NA 4.40 6.2 1
## 5 0 11 NA 2.4 4.60 4.2 1
## 6 0 11 6.8 NA 6.80 5.4 1
## 7 0 11 6.8 NA 6.40 6.4 1
## 8 1 11 7.0 NA 7.00 6.8 1
## 9 0 10 5.6 NA 6.00 5.4 0
## 10 1 11 6.4 NA 6.80 3.0 NA
## 11 0 11 NA 4.8 7.00 5.4 0
## 12 1 11 5.2 NA 7.00 5.6 0
## 13 1 10 NA NA 6.75 6.6 NA
## 14 0 10 7.0 NA 7.00 7.0 1
## 15 1 10 6.4 NA 6.60 5.8 1
## 16 0 10 7.0 NA 7.00 6.4 1
## 17 0 11 4.8 NA 6.60 5.8 0
## 18 1 10 5.4 NA 6.80 5.6 0
## 19 0 10 5.8 NA 6.40 3.6 1
## 20 1 11 6.4 NA 6.60 5.8 0
## 21 0 10 5.2 NA 5.00 2.8 NA
## 22 0 11 4.2 NA 2.25 6.2 0
## 23 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 NA 5.666667 3.2 4.428571 5.625000 0
## 2 7.000000 NA NA 7.000000 NA 7
## 3 3.666667 NA NA 3.500000 NA 1
## 4 3.666667 NA NA 3.875000 NA 7
## 5 NA 2.666667 1.2 4.000000 2.000000 6
## 6 6.666667 NA 6.2 6.875000 5.000000 6
## 7 6.666667 NA NA 6.500000 NA 5
## 8 7.000000 NA NA 7.000000 NA 7
## 9 5.333333 NA 5.6 5.500000 5.714286 1
## 10 6.000000 NA NA 6.375000 NA 4
## 11 NA 5.333333 3.0 7.000000 4.750000 7
## 12 4.000000 NA NA 5.750000 NA 4
## 13 6.333333 NA NA 6.714286 NA 0
## 14 7.000000 NA NA 7.000000 NA 3
## 15 6.333333 NA NA 5.750000 NA 2
## 16 7.000000 NA 7.0 7.000000 7.000000 2
## 17 5.000000 NA NA 5.000000 NA 6
## 18 5.000000 NA NA 5.500000 NA 0
## 19 5.000000 NA NA 6.250000 NA 1
## 20 6.666667 NA NA 6.500000 NA 3
## 21 5.000000 NA NA 4.875000 NA 3
## 22 4.333333 NA 2.8 3.500000 3.428571 4
## 23 3.000000 NA NA 2.250000 NA 3
# VALUE
df %>%
filter(is.na(PreVal_Ave)) # 0 students missing pre val
## [1] Gender Age PreUV_all_ave PostUV_all_ave
## [5] PreInt_Ave PreEff_Ave Int PreUV_ave
## [9] PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave
## [13] ClassTeacher
## <0 rows> (or 0-length row.names)
df %>%
filter(is.na(PostVal_Ave)) # 16 students missing pre val
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 0 11 7.0 NA 7.00 7.0 1
## 2 0 10 3.6 NA 5.60 3.2 NA
## 3 0 11 3.6 NA 4.40 6.2 1
## 4 0 11 6.8 NA 6.40 6.4 1
## 5 1 11 7.0 NA 7.00 6.8 1
## 6 1 11 6.4 NA 6.80 3.0 NA
## 7 1 11 5.2 NA 7.00 5.6 0
## 8 1 10 NA NA 6.75 6.6 NA
## 9 0 10 7.0 NA 7.00 7.0 1
## 10 1 10 6.4 NA 6.60 5.8 1
## 11 0 11 4.8 NA 6.60 5.8 0
## 12 1 10 5.4 NA 6.80 5.6 0
## 13 0 10 5.8 NA 6.40 3.6 1
## 14 1 11 6.4 NA 6.60 5.8 0
## 15 0 10 5.2 NA 5.00 2.8 NA
## 16 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 7.000000 NA NA 7.000000 NA 7
## 2 3.666667 NA NA 3.500000 NA 1
## 3 3.666667 NA NA 3.875000 NA 7
## 4 6.666667 NA NA 6.500000 NA 5
## 5 7.000000 NA NA 7.000000 NA 7
## 6 6.000000 NA NA 6.375000 NA 4
## 7 4.000000 NA NA 5.750000 NA 4
## 8 6.333333 NA NA 6.714286 NA 0
## 9 7.000000 NA NA 7.000000 NA 3
## 10 6.333333 NA NA 5.750000 NA 2
## 11 5.000000 NA NA 5.000000 NA 6
## 12 5.000000 NA NA 5.500000 NA 0
## 13 5.000000 NA NA 6.250000 NA 1
## 14 6.666667 NA NA 6.500000 NA 3
## 15 5.000000 NA NA 4.875000 NA 3
## 16 3.000000 NA NA 2.250000 NA 3
df %>%
filter(is.na(PreVal_Ave) | is.na(PostVal_Ave)) # 16 students missing either pre or post val
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 0 11 7.0 NA 7.00 7.0 1
## 2 0 10 3.6 NA 5.60 3.2 NA
## 3 0 11 3.6 NA 4.40 6.2 1
## 4 0 11 6.8 NA 6.40 6.4 1
## 5 1 11 7.0 NA 7.00 6.8 1
## 6 1 11 6.4 NA 6.80 3.0 NA
## 7 1 11 5.2 NA 7.00 5.6 0
## 8 1 10 NA NA 6.75 6.6 NA
## 9 0 10 7.0 NA 7.00 7.0 1
## 10 1 10 6.4 NA 6.60 5.8 1
## 11 0 11 4.8 NA 6.60 5.8 0
## 12 1 10 5.4 NA 6.80 5.6 0
## 13 0 10 5.8 NA 6.40 3.6 1
## 14 1 11 6.4 NA 6.60 5.8 0
## 15 0 10 5.2 NA 5.00 2.8 NA
## 16 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 7.000000 NA NA 7.000000 NA 7
## 2 3.666667 NA NA 3.500000 NA 1
## 3 3.666667 NA NA 3.875000 NA 7
## 4 6.666667 NA NA 6.500000 NA 5
## 5 7.000000 NA NA 7.000000 NA 7
## 6 6.000000 NA NA 6.375000 NA 4
## 7 4.000000 NA NA 5.750000 NA 4
## 8 6.333333 NA NA 6.714286 NA 0
## 9 7.000000 NA NA 7.000000 NA 3
## 10 6.333333 NA NA 5.750000 NA 2
## 11 5.000000 NA NA 5.000000 NA 6
## 12 5.000000 NA NA 5.500000 NA 0
## 13 5.000000 NA NA 6.250000 NA 1
## 14 6.666667 NA NA 6.500000 NA 3
## 15 5.000000 NA NA 4.875000 NA 3
## 16 3.000000 NA NA 2.250000 NA 3
# INTEREST
df %>%
filter(is.na(PreInt_Ave)) # 0 students missing pre interest
## [1] Gender Age PreUV_all_ave PostUV_all_ave
## [5] PreInt_Ave PreEff_Ave Int PreUV_ave
## [9] PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave
## [13] ClassTeacher
## <0 rows> (or 0-length row.names)
df %>%
filter(is.na(PostInt_Ave)) # 16 students missing pre int
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 0 11 7.0 NA 7.00 7.0 1
## 2 0 10 3.6 NA 5.60 3.2 NA
## 3 0 11 3.6 NA 4.40 6.2 1
## 4 0 11 6.8 NA 6.40 6.4 1
## 5 1 11 7.0 NA 7.00 6.8 1
## 6 1 11 6.4 NA 6.80 3.0 NA
## 7 1 11 5.2 NA 7.00 5.6 0
## 8 1 10 NA NA 6.75 6.6 NA
## 9 0 10 7.0 NA 7.00 7.0 1
## 10 1 10 6.4 NA 6.60 5.8 1
## 11 0 11 4.8 NA 6.60 5.8 0
## 12 1 10 5.4 NA 6.80 5.6 0
## 13 0 10 5.8 NA 6.40 3.6 1
## 14 1 11 6.4 NA 6.60 5.8 0
## 15 0 10 5.2 NA 5.00 2.8 NA
## 16 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 7.000000 NA NA 7.000000 NA 7
## 2 3.666667 NA NA 3.500000 NA 1
## 3 3.666667 NA NA 3.875000 NA 7
## 4 6.666667 NA NA 6.500000 NA 5
## 5 7.000000 NA NA 7.000000 NA 7
## 6 6.000000 NA NA 6.375000 NA 4
## 7 4.000000 NA NA 5.750000 NA 4
## 8 6.333333 NA NA 6.714286 NA 0
## 9 7.000000 NA NA 7.000000 NA 3
## 10 6.333333 NA NA 5.750000 NA 2
## 11 5.000000 NA NA 5.000000 NA 6
## 12 5.000000 NA NA 5.500000 NA 0
## 13 5.000000 NA NA 6.250000 NA 1
## 14 6.666667 NA NA 6.500000 NA 3
## 15 5.000000 NA NA 4.875000 NA 3
## 16 3.000000 NA NA 2.250000 NA 3
df %>%
filter(is.na(PreInt_Ave) | is.na(PostInt_Ave)) # 16 students missing either pre or post int
## Gender Age PreUV_all_ave PostUV_all_ave PreInt_Ave PreEff_Ave Int
## 1 0 11 7.0 NA 7.00 7.0 1
## 2 0 10 3.6 NA 5.60 3.2 NA
## 3 0 11 3.6 NA 4.40 6.2 1
## 4 0 11 6.8 NA 6.40 6.4 1
## 5 1 11 7.0 NA 7.00 6.8 1
## 6 1 11 6.4 NA 6.80 3.0 NA
## 7 1 11 5.2 NA 7.00 5.6 0
## 8 1 10 NA NA 6.75 6.6 NA
## 9 0 10 7.0 NA 7.00 7.0 1
## 10 1 10 6.4 NA 6.60 5.8 1
## 11 0 11 4.8 NA 6.60 5.8 0
## 12 1 10 5.4 NA 6.80 5.6 0
## 13 0 10 5.8 NA 6.40 3.6 1
## 14 1 11 6.4 NA 6.60 5.8 0
## 15 0 10 5.2 NA 5.00 2.8 NA
## 16 0 10 2.8 NA 1.00 3.4 NA
## PreUV_ave PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave ClassTeacher
## 1 7.000000 NA NA 7.000000 NA 7
## 2 3.666667 NA NA 3.500000 NA 1
## 3 3.666667 NA NA 3.875000 NA 7
## 4 6.666667 NA NA 6.500000 NA 5
## 5 7.000000 NA NA 7.000000 NA 7
## 6 6.000000 NA NA 6.375000 NA 4
## 7 4.000000 NA NA 5.750000 NA 4
## 8 6.333333 NA NA 6.714286 NA 0
## 9 7.000000 NA NA 7.000000 NA 3
## 10 6.333333 NA NA 5.750000 NA 2
## 11 5.000000 NA NA 5.000000 NA 6
## 12 5.000000 NA NA 5.500000 NA 0
## 13 5.000000 NA NA 6.250000 NA 1
## 14 6.666667 NA NA 6.500000 NA 3
## 15 5.000000 NA NA 4.875000 NA 3
## 16 3.000000 NA NA 2.250000 NA 3
# SELF-EFFICACY
df %>%
filter(is.na(PreEff_Ave)) # 0 students missing pre eff ave
## [1] Gender Age PreUV_all_ave PostUV_all_ave
## [5] PreInt_Ave PreEff_Ave Int PreUV_ave
## [9] PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave
## [13] ClassTeacher
## <0 rows> (or 0-length row.names)
# GENDER
df %>%
filter(is.na(Gender)) # 0 missing
## [1] Gender Age PreUV_all_ave PostUV_all_ave
## [5] PreInt_Ave PreEff_Ave Int PreUV_ave
## [9] PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave
## [13] ClassTeacher
## <0 rows> (or 0-length row.names)
df %>%
filter(is.na(ClassTeacher)) # 0 missing
## [1] Gender Age PreUV_all_ave PostUV_all_ave
## [5] PreInt_Ave PreEff_Ave Int PreUV_ave
## [9] PostUV_ave PostInt_Ave PreVal_Ave PostVal_Ave
## [13] ClassTeacher
## <0 rows> (or 0-length row.names)
For LIWC
library(tidyttest)
to_match <- read_csv("essays_for_matching_fin.csv")
## Parsed with column specification:
## cols(
## name = col_character(),
## scienceTeacher = col_integer(),
## ClassTeacher = col_character(),
## treatment = col_integer(),
## text1 = col_character(),
## text2 = col_character(),
## text_1_and_2 = col_character()
## )
# data <- read_csv("Fall_2012_Practices_Mot_dataAll1.csv")
#
# essays <- read_csv("UnitReviews/all_unit_reviews.csv")
df <- readr::read_csv("~/dropbox/1_research/IQWST_Motivation/data/unitreviews/all_unit_reviews_results_FINAL.csv")
## Parsed with column specification:
## cols(
## .default = col_double(),
## `Source (A)` = col_character(),
## `Source (B)` = col_character(),
## `Source (C)` = col_character(),
## `Source (D)` = col_character(),
## `Source (E)` = col_character(),
## `Source (F)` = col_character(),
## WC = col_integer()
## )
## See spec(...) for full column specifications.
df <- df[-1, ]
df <- tbl_df(dplyr::rename(df, treatment = `Source (C)`,
name = `Source (A)`))
df <- arrange(df, name)
# df <- rename(df, SurveyStudentID = StudentID)
# df$StudentID <- df$SurveyStudentID
# x <- dplyr::select(df, SurveyStudentID, StudentID)
# y <- dplyr::select(to_join, StudentID, ClassTeacher)
# y$EssayStudentID <- y$StudentID
#
# y$StudentID <- stringr::str_replace(y$StudentID, "\\.", "")
dff <- bind_cols(to_match, df)
dff <- dplyr::select(dff,
ClassTeacher,
treatment,
ppron, # from Canning
Sixltr,
WPS,
social,
family,
friend,
female,
male, # added a fourth
cogproc,
insight,
cause,
Analytic, # writing style
Clout,
Authentic,
Tone,
work, # those that we added
leisure)
dff <- filter(dff, ClassTeacher != "-")
na_mean <- function(x) {
mean(x, na.rm = T)
}
dff %>%
group_by(treatment) %>%
summarize_all(na_mean) %>%
gather(key, val, -treatment) %>%
mutate(treatment = as.factor(treatment)) %>%
ggplot(aes(x = reorder(key,val), y = val, fill = treatment, group = treatment)) +
geom_col(position = "dodge")
## Warning in mean.default(x, na.rm = T): argument is not numeric or logical:
## returning NA
## Warning in mean.default(x, na.rm = T): argument is not numeric or logical:
## returning NA
## Warning: Removed 2 rows containing missing values (geom_col).

#df_ss <- dplyr::select(data, StudentID, ClassTeacher)
#df <- tbl_df(df)
#df$ClassTeacher <- as.character(df$ClassTeacher)
#df
#df_ss
# left_join(df, df_ss, by = "StudentID")
# library(lme4)
Interlude: Our handy-dandy function
library(dplyr)
library(rlang)
##
## Attaching package: 'rlang'
## The following objects are masked from 'package:purrr':
##
## %@%, %||%, as_function, flatten, flatten_chr, flatten_dbl,
## flatten_int, flatten_lgl, invoke, list_along, modify, prepend,
## rep_along, splice
## The following object is masked from 'package:tibble':
##
## has_name
library(broom)
calculate_pooled_sd <- function(sd_group1, n_group1, sd_group2, n_group2) {
sqrt(((n_group1 - 1) * (sd_group1 ^ 2) + (n_group2 - 1) * (sd_group2 ^ 2)) / (n_group1 + n_group2 - 2))
}
lmer_effect <- function(df, dv, lmer_model_object, var_name) {
quo_var_name <- rlang::enquo(var_name)
quo_var_string <- rlang::quo_name(quo_var_name)
quo_dv_name <- rlang::enquo(dv)
quo_dv_string <- rlang::quo_name(quo_dv_name)
sd_n_d <- df %>%
dplyr::group_by(!!quo_var_name) %>%
dplyr::summarise(sd = sd(!!quo_dv_name, na.rm = T),
n = n())
the_mean <- broom::tidy(lmer_model_object) %>%
dplyr::filter(term == quo_var_string) %>%
dplyr::pull(estimate)
sd_group1 <- sd_n_d %>% filter(rlang::UQ(quo_var_name) == 0) %>% dplyr::pull(sd)
sd_group2 <- sd_n_d %>% filter(rlang::UQ(quo_var_name) == 1) %>% dplyr::pull(sd)
n_group1 <- sd_n_d %>% filter(rlang::UQ(quo_var_name) == 0) %>% dplyr::pull(n)
n_group2 <- sd_n_d %>% filter(rlang::UQ(quo_var_name) == 1) %>% dplyr::pull(n)
pooled_sd <- calculate_pooled_sd(sd_group1 = sd_group1, n_group1 = n_group1, sd_group2 = sd_group1, n_group2 = n_group2)
message("Cohen's d for the selected variable is: ", round(the_mean / pooled_sd, 3))
}
# example
# library(lme4)
# sleepstudy$dichotomous_var <- rbinom(nrow(sleepstudy), 1, .5)
# fm1 <- lmer(Reaction ~ Days + dichotomous_var + (1 | Subject), sleepstudy)
# lmer_effect(df = sleepstudy, dv = Reaction, lmer_model_object = fm1, var_name = dichotomous_var)
Output for LIWC
m1 <- lmer(ppron ~ treatment + (1|ClassTeacher), data = dff) # p = .055
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
ppron
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
5.32
|
4.25 – 6.39
|
0.55
|
<.001
|
treatment
|
|
1.60
|
0.20 – 3.00
|
0.71
|
.055
|
Random Parts
|
σ2
|
|
16.490
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.037 / .037
|
lmer_effect(dff, ppron, m1, treatment)
## Cohen's d for the selected variable is: 0.373
m1 <- lmer(Sixltr ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
Sixltr
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
17.20
|
15.59 – 18.80
|
0.82
|
<.001
|
treatment
|
|
-0.48
|
-2.57 – 1.61
|
1.07
|
.655
|
Random Parts
|
σ2
|
|
36.912
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.002 / .002
|
lmer_effect(dff, Sixltr, m1, treatment)
## Cohen's d for the selected variable is: -0.076
m1 <- lmer(WPS ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
WPS
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
14.56
|
12.95 – 16.16
|
0.82
|
<.001
|
treatment
|
|
1.01
|
-0.98 – 3.01
|
1.02
|
.334
|
Random Parts
|
σ2
|
|
32.307
|
τ00, ClassTeacher
|
|
0.448
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.014
|
Observations
|
|
134
|
R2 / Ω02
|
|
.034 / .026
|
lmer_effect(dff, WPS, m1, treatment)
## Cohen's d for the selected variable is: 0.168
m1 <- lmer(social ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
social
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
4.45
|
3.35 – 5.54
|
0.56
|
<.001
|
treatment
|
|
-0.04
|
-1.46 – 1.38
|
0.73
|
.958
|
Random Parts
|
σ2
|
|
17.060
|
τ00, ClassTeacher
|
|
0.005
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.003 / .000
|
lmer_effect(dff, social, m1, treatment)
## Cohen's d for the selected variable is: -0.009
m1 <- lmer(family ~ treatment + (1|ClassTeacher), data = dff) # p = .075
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
family
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
0.01
|
-0.11 – 0.14
|
0.06
|
.825
|
treatment
|
|
0.15
|
-0.01 – 0.31
|
0.08
|
.075
|
Random Parts
|
σ2
|
|
0.218
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.024 / .024
|
lmer_effect(dff, family, m1, treatment)
## Cohen's d for the selected variable is: 1.422
m1 <- lmer(friend ~ treatment + (1|ClassTeacher), data = dff) # p = .095
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
friend
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
0.18
|
0.05 – 0.31
|
0.07
|
.008
|
treatment
|
|
-0.13
|
-0.28 – 0.02
|
0.08
|
.095
|
Random Parts
|
σ2
|
|
0.176
|
τ00, ClassTeacher
|
|
0.006
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.034
|
Observations
|
|
134
|
R2 / Ω02
|
|
.071 / .064
|
lmer_effect(dff, friend, m1, treatment)
## Cohen's d for the selected variable is: -0.214
m1 <- lmer(female ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
female
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
0.03
|
-0.09 – 0.15
|
0.06
|
.659
|
treatment
|
|
0.08
|
-0.07 – 0.24
|
0.08
|
.292
|
Random Parts
|
σ2
|
|
0.206
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.008 / .008
|
lmer_effect(dff, female, m1, treatment)
## Cohen's d for the selected variable is: 0.421
m1 <- lmer(male ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
male
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
-0.00
|
-0.14 – 0.14
|
0.07
|
.986
|
treatment
|
|
0.09
|
-0.08 – 0.26
|
0.09
|
.304
|
Random Parts
|
σ2
|
|
0.235
|
τ00, ClassTeacher
|
|
0.003
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.013
|
Observations
|
|
134
|
R2 / Ω02
|
|
.033 / .026
|
lmer_effect(dff, male, m1, treatment)
## Cohen's d for the selected variable is: Inf
m1 <- lmer(cogproc ~ treatment + (1|ClassTeacher), data = dff) # p = .028
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
cogproc
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
9.27
|
7.56 – 10.98
|
0.87
|
<.001
|
treatment
|
|
2.81
|
0.84 – 4.77
|
1.00
|
.028
|
Random Parts
|
σ2
|
|
30.604
|
τ00, ClassTeacher
|
|
1.148
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.036
|
Observations
|
|
134
|
R2 / Ω02
|
|
.111 / .108
|
lmer_effect(dff, cogproc, m1, treatment)
## Cohen's d for the selected variable is: 0.501
m1 <- lmer(insight ~ treatment + (1|ClassTeacher), data = dff) # p = .053
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
insight
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
1.63
|
1.05 – 2.20
|
0.30
|
.004
|
treatment
|
|
1.00
|
0.25 – 1.76
|
0.38
|
.053
|
Random Parts
|
σ2
|
|
4.798
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.049 / .049
|
lmer_effect(dff, insight, m1, treatment)
## Cohen's d for the selected variable is: 0.551
m1 <- lmer(cause ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
cause
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
2.89
|
2.19 – 3.59
|
0.36
|
<.001
|
treatment
|
|
0.55
|
-0.35 – 1.46
|
0.46
|
.256
|
Random Parts
|
σ2
|
|
6.954
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.011 / .011
|
lmer_effect(dff, cause, m1, treatment)
## Cohen's d for the selected variable is: 0.194
m1 <- lmer(Analytic ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
Analytic
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
65.71
|
58.47 – 72.94
|
3.69
|
<.001
|
treatment
|
|
-7.15
|
-16.57 – 2.27
|
4.81
|
.148
|
Random Parts
|
σ2
|
|
749.241
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.016 / .016
|
lmer_effect(dff, Analytic, m1, treatment)
## Cohen's d for the selected variable is: -0.256
m1 <- lmer(Clout ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
Clout
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
50.80
|
43.99 – 57.61
|
3.47
|
<.001
|
treatment
|
|
-7.46
|
-16.33 – 1.41
|
4.53
|
.110
|
Random Parts
|
σ2
|
|
664.119
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.020 / .020
|
lmer_effect(dff, Clout, m1, treatment)
## Cohen's d for the selected variable is: -0.327
m1 <- lmer(Authentic ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
Authentic
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
66.74
|
58.33 – 75.14
|
4.29
|
<.001
|
treatment
|
|
-0.47
|
-11.42 – 10.47
|
5.58
|
.933
|
Random Parts
|
σ2
|
|
1011.110
|
τ00, ClassTeacher
|
|
0.000
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.000
|
Observations
|
|
134
|
R2 / Ω02
|
|
.000 / .000
|
lmer_effect(dff, Authentic, m1, treatment)
## Cohen's d for the selected variable is: -0.016
m1 <- lmer(Tone ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
Tone
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
38.41
|
31.33 – 45.50
|
3.61
|
<.001
|
treatment
|
|
3.77
|
-5.36 – 12.91
|
4.66
|
.431
|
Random Parts
|
σ2
|
|
698.080
|
τ00, ClassTeacher
|
|
1.930
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.003
|
Observations
|
|
134
|
R2 / Ω02
|
|
.011 / .010
|
lmer_effect(dff, Tone, m1, treatment)
## Cohen's d for the selected variable is: 0.155
m1 <- lmer(work ~ treatment + (1|ClassTeacher), data = dff) # p = .103
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
work
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
1.15
|
0.34 – 1.97
|
0.42
|
.034
|
treatment
|
|
0.91
|
-0.01 – 1.84
|
0.47
|
.103
|
Random Parts
|
σ2
|
|
6.699
|
τ00, ClassTeacher
|
|
0.289
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.041
|
Observations
|
|
134
|
R2 / Ω02
|
|
.078 / .069
|
lmer_effect(dff, work, m1, treatment)
## Cohen's d for the selected variable is: 0.513
m1 <- lmer(leisure ~ treatment + (1|ClassTeacher), data = dff)
sjPlot::sjt.lmer(m1, show.se = TRUE)
## Computing p-values via Kenward-Roger approximation. Use `p.kr = FALSE` if computation takes too long.
|
|
leisure
|
|
|
B
|
CI
|
std. Error
|
p
|
Fixed Parts
|
(Intercept)
|
|
0.31
|
-0.07 – 0.70
|
0.20
|
.137
|
treatment
|
|
-0.02
|
-0.38 – 0.35
|
0.19
|
.933
|
Random Parts
|
σ2
|
|
1.018
|
τ00, ClassTeacher
|
|
0.115
|
NClassTeacher
|
|
6
|
ICCClassTeacher
|
|
0.102
|
Observations
|
|
134
|
R2 / Ω02
|
|
.125 / .116
|
lmer_effect(dff, leisure, m1, treatment)
## Cohen's d for the selected variable is: -0.018