knitr::opts_chunk$set(message = FALSE, warning = FALSE)
Libraries.
library(tidyverse)
library(here)
library(lme4)
library(lsr)
library(ggplot2)
library(viridis)
library(readxl)
library(sjstats)
library(reshape2)
library(coin)
library(ggbeeswarm)
library(praise)
library(langcog)
library(ggpubr)
library(ggthemes)
library(gganimate)
library(lmerTest)
library(janitor)
Read in data.
hs = read_csv("hs_f21_ex1_2x2.csv")
ms = read_csv("ms_f21_ex1_2x2.csv")
Age of participants
hs_age = hs %>%
mutate(age = as.numeric(substr(sr_age,1,2)))
age = hs_age %>%
summarise(n = n(),
mean_age = mean(age),
sd_age = sd(age),
min_age = min(age),
max_age = max(age))
age
## # A tibble: 1 x 5
## n mean_age sd_age min_age max_age
## <int> <dbl> <dbl> <dbl> <dbl>
## 1 425 15.7 1.23 11 19
ggplot(hs_age, aes(x=age, col=age)) +
geom_histogram() +
theme_few() +
scale_x_discrete("Age", limits=c(11:19))
# why is there an 11 year old in high school?
Gender
table(hs$sr_gender)
##
## Female Femenino Male Masculino
## 208 6 183 10
## Other Prefer not to say
## 9 3
Grade
table(hs$sr_grade)
##
## 10.º grado 10th grade 11.º grado 11th grade 12.º grado 12th grade 8.º grado
## 4 115 7 106 4 94 1
## 9.º grado 9th grade
## 1 93
Age of participants
ms_age = ms %>%
mutate(age = as.numeric(substr(sr_age,1,2)))
age = ms_age %>%
summarise(n = n(),
mean_age = mean(age),
sd_age = sd(age),
min_age = min(age),
max_age = max(age))
age
## # A tibble: 1 x 5
## n mean_age sd_age min_age max_age
## <int> <dbl> <dbl> <dbl> <dbl>
## 1 288 12.3 0.913 10 15
ggplot(ms_age, aes(x=age, col=age)) +
geom_histogram() +
theme_few() +
scale_x_discrete("Age", limits=c(10:15))
Gender
table(ms$sr_gender)
##
## Female Femenino Male Masculino
## 115 12 123 7
## Other Prefer not to say
## 14 9
Grade
table(ms$sr_grade)
##
## 6.º grado 6th grade 7.º grado 7th grade 8.º grado 8th grade
## 1 81 15 93 3 95
Seek.
hs_seek = hs %>%
select(response_id, fc_seek_c_test_1:fc_seek_c_test_4,fc_seek_p_test_1:fc_seek_p_test_4) %>%
gather(question, response, fc_seek_c_test_1:fc_seek_c_test_4,fc_seek_p_test_1:fc_seek_p_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab)) %>%
mutate(person = factor(substr(question, 16,16)),
person = factor(person, levels=c(1,2,4,3), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question, 9,9)),
group = "test - seek")
hs_seek_table = hs_seek %>%
group_by(person) %>%
summarize(n=n(),
mean= mean(response_num))
hs_seek_knowledge = hs_seek %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
Listen.
hs_list_p = hs %>%
select(response_id, fc_listen_p_test_1:fc_listen_p_test_4) %>%
gather(question, response, fc_listen_p_test_1:fc_listen_p_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all motivated","Slightly motivated","Somewhat motivated", "Very motivated", "Extremely motivated")),
response_num = as.numeric(response_lab))
hs_list_c = hs %>%
select(response_id, fc_listen_c_test_1:fc_listen_c_test_4) %>%
gather(question, response, fc_listen_c_test_1:fc_listen_c_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab))
hs_list = hs_list_p %>%
full_join(hs_list_c) %>%
mutate(person = factor(substr(question, 18,18)),
person = factor(person, levels=c(1,2,3,4), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question,11,11)),
group = "test - listen")
hs_list_table = hs_list %>%
group_by(person) %>%
summarize(n=n(),
mean= mean(response_num))
hs_list_knowledge = hs_list %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
Control.
hs_control_seek = hs %>%
select(response_id, fc_seek_c_control_1:fc_seek_c_control_4) %>%
gather(question, response, fc_seek_c_control_1:fc_seek_c_control_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab)) %>%
mutate(person_num = factor(substr(question, 19,19)),
person = factor(person_num, levels=c(1,2,4,3), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question, 9,9)))
hs_control_seek_knowledge = hs_control_seek %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
hs_control_listen = hs %>%
select(response_id, fc_listen_p_control_1:fc_listen_p_control_4) %>%
gather(question, response, fc_listen_p_control_1:fc_listen_p_control_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all motivated","Slightly motivated","Somewhat motivated", "Very motivated", "Extremely motivated")),
response_num = as.numeric(response_lab)) %>%
mutate(person_num = factor(substr(question, 21,21)),
person = factor(person_num, levels=c(1,2,4,3), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question,11,11)))
hs_control_listen_knowledge = hs_control_listen %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
hs_control = full_join(hs_control_listen_knowledge, hs_control_seek_knowledge) %>%
mutate(group = "control")
Seek.
ms_seek = ms %>%
select(response_id, fc_seek_c_test_1:fc_seek_c_test_4,fc_seek_p_test_1:fc_seek_p_test_4) %>%
gather(question, response, fc_seek_c_test_1:fc_seek_c_test_4,fc_seek_p_test_1:fc_seek_p_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab)) %>%
mutate(person = factor(substr(question, 16,16)),
person = factor(person, levels=c(1,2,4,3), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question, 9,9)),
group = "test - seek")
ms_seek_table = ms_seek %>%
group_by(person) %>%
summarize(n=n(),
mean= mean(response_num))
ms_seek_knowledge = ms_seek %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
Listen.
ms_list_p = ms %>%
select(response_id, fc_listen_p_test_1:fc_listen_p_test_4) %>%
gather(question, response, fc_listen_p_test_1:fc_listen_p_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all motivated","Slightly motivated","Somewhat motivated", "Very motivated", "Extremely motivated")),
response_num = as.numeric(response_lab))
ms_list_c = ms %>%
select(response_id, fc_listen_c_test_1:fc_listen_c_test_4) %>%
gather(question, response, fc_listen_c_test_1:fc_listen_c_test_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab))
ms_list = ms_list_p %>%
full_join(hs_list_c) %>%
mutate(person = factor(substr(question, 18,18)),
person = factor(person, levels=c(1,2,3,4), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question,11,11)),
group = "test - listen")
ms_list_table = ms_list %>%
group_by(person) %>%
summarize(n=n(),
mean= mean(response_num))
ms_list_knowledge = ms_list %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
Control.
ms_control_seek = ms %>%
select(response_id, fc_seek_c_control_1:fc_seek_c_control_4) %>%
gather(question, response, fc_seek_c_control_1:fc_seek_c_control_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all likely","Slightly likely","Somewhat likely", "Very likely", "Extremely likely")),
response_num = as.numeric(response_lab)) %>%
mutate(person_num = factor(substr(question, 19,19)),
person = factor(person_num, levels=c(1,2,3,4), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question, 9,9)))
ms_control_seek_knowledge = ms_control_seek %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
ms_control_listen = ms %>%
select(response_id, fc_listen_p_control_1:fc_listen_p_control_4) %>%
gather(question, response, fc_listen_p_control_1:fc_listen_p_control_4) %>%
mutate(response_lab = factor(response, levels=c("Not at all motivated","Slightly motivated","Somewhat motivated", "Very motivated", "Extremely motivated")),
response_num = as.numeric(response_lab)) %>%
mutate(person_num = factor(substr(question, 21,21)),
person = factor(person_num, levels=c(1,2,4,3), labels=c("knows both", "knows abilities, does not know class", "does not know abilities, knows class", "knows neither")),
type = factor(substr(question,11,11)))
ms_control_listen_knowledge = ms_control_listen %>%
mutate(knowledge_abilities = ifelse(person == "knows both" |
person == "knows abilities, does not know class", 1, 0),
knowledge_class = ifelse(person == "knows both" |
person == "does not know abilities, knows class", 1, 0))
ms_control = full_join(ms_control_listen_knowledge, ms_control_seek_knowledge) %>%
mutate(group = "control")
hs_all = hs_control %>%
full_join(hs_list) %>%
full_join(hs_seek)
hs_all_table = hs_all %>%
group_by(group, person) %>%
multi_boot_standard("response_num")
ggplot(hs_all_table, aes(x=person, y=mean, color=person)) +
geom_pointrange(aes(ymin = ci_lower, ymax = ci_upper),
position = position_dodge(width = .1),size=.5, alpha=.5) +
theme_few() +
ylim(1,5) +
facet_grid(~ group) +
theme(axis.text.x=element_text(angle=90, vjust = 0.5, hjust=1)) +
ggtitle("HIGH SCHOOL 2X2s")
ms_all = ms_control %>%
full_join(ms_list) %>%
full_join(ms_seek)
ms_all_table = ms_all %>%
group_by(group, person) %>%
multi_boot_standard("response_num")
ggplot(ms_all_table, aes(x=person, y=mean, color=person)) +
geom_pointrange(aes(ymin = ci_lower, ymax = ci_upper),
position = position_dodge(width = .1),size=.5, alpha=.5) +
theme_few() +
ylim(1,5) +
facet_grid(~ group) +
theme(axis.text.x=element_text(angle=90, vjust = 0.5, hjust=1)) +
ggtitle("MIDDLE SCHOOL 2X2s")
Seek.
# interactive - maximal random effects
#hs_seek_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities|response_id) + (1+knowledge_class*knowledge_abilities|type), data=hs_seek_knowledge)
# remove correlations
#hs_seek_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=hs_seek_knowledge)
# remove interaction term random effects
#hs_seek_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=hs_seek_knowledge)
# remove knowledge abilities slope in type random effecgts
#hs_seek_interaction_4 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class||type), data=hs_seek_knowledge)
#hs_seek_interaction_5 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1|type), data=hs_seek_knowledge)
hs_seek_interaction_6 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id), data=hs_seek_knowledge)
# Analysis that runs!
summary(hs_seek_interaction_6)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_class +
## knowledge_abilities || response_id)
## Data: hs_seek_knowledge
##
## REML criterion at convergence: 9625.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.8883 -0.5628 -0.0151 0.5369 3.5708
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 0.4553 0.6748
## response_id.1 knowledge_class 0.4937 0.7026
## response_id.2 knowledge_abilities 0.2255 0.4748
## Residual 0.6372 0.7983
## Number of obs: 3400, groups: response_id, 425
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 1.934e+00 4.267e-02 6.353e+02 45.32
## knowledge_abilities 6.824e-01 4.505e-02 1.127e+03 15.14
## knowledge_class 9.118e-01 5.158e-02 8.655e+02 17.68
## knowledge_abilities:knowledge_class 1.506e-01 5.476e-02 1.832e+03 2.75
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## knowledge_abilities < 2e-16 ***
## knowledge_class < 2e-16 ***
## knowledge_abilities:knowledge_class 0.00602 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.390
## knwldg_clss -0.341 0.323
## knwldg_bl:_ 0.321 -0.608 -0.531
Listen.
# interactive - maximal random effects
#hs_list_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities|response_id) + (1+knowledge_class*knowledge_abilities|type), data=hs_list_knowledge)
# remove correlations
#hs_list_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=hs_list_knowledge)
# remove interaction terms in random effects
#hs_list_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=hs_list_knowledge)
# remove knowledge_class random slope for ID
hs_list_interaction_4 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=hs_list_knowledge)
# Analysis that runs!
summary(hs_list_interaction_4)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_abilities ||
## response_id) + (1 + knowledge_class + knowledge_abilities || type)
## Data: hs_list_knowledge
##
## REML criterion at convergence: 9981.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.2149 -0.6545 0.0073 0.6102 3.5929
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 0.367134 0.6059
## response_id.1 knowledge_abilities 0.174360 0.4176
## type (Intercept) 0.030861 0.1757
## type.1 knowledge_class 0.260663 0.5106
## type.2 knowledge_abilities 0.005976 0.0773
## Residual 0.865218 0.9302
## Number of obs: 3400, groups: response_id, 425; type, 2
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 2.378e+00 1.316e-01 1.135e+00 18.071
## knowledge_abilities 3.977e-01 7.372e-02 1.827e+00 5.394
## knowledge_class 1.129e-01 3.638e-01 1.015e+00 0.310
## knowledge_abilities:knowledge_class 8.012e-01 6.381e-02 2.555e+03 12.556
## Pr(>|t|)
## (Intercept) 0.0246 *
## knowledge_abilities 0.0396 *
## knowledge_class 0.8078
## knowledge_abilities:knowledge_class <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.105
## knwldg_clss -0.021 0.038
## knwldg_bl:_ 0.121 -0.433 -0.088
Control.
# interactive - maximal random effects
#hs_control_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities|response_id) + (1+knowledge_class*knowledge_abilities|type), data=hs_control)
# remove correlations
#hs_control_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=hs_control)
# remove interaction terms in random effects
#hs_control_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=hs_control)
# remove knowledge_abilities random slope for type
hs_control_interaction_4 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_abilities||response_id) + (1+knowledge_class||type), data=hs_control)
# Analysis that runs!
summary(hs_control_interaction_4)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_abilities ||
## response_id) + (1 + knowledge_class || type)
## Data: hs_control
##
## REML criterion at convergence: 9818.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.7264 -0.6064 -0.0224 0.5609 3.5498
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 0.554818 0.74486
## response_id.1 knowledge_abilities 0.216909 0.46574
## type (Intercept) 0.006904 0.08309
## type.1 knowledge_class 0.001597 0.03996
## Residual 0.774440 0.88002
## Number of obs: 3400, groups: response_id, 425; type, 2
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 1.999e+00 7.529e-02 1.912e+00 26.548
## knowledge_abilities 5.259e-01 4.830e-02 1.212e+03 10.889
## knowledge_class 4.976e-01 5.119e-02 2.135e+00 9.721
## knowledge_abilities:knowledge_class 1.577e-01 6.037e-02 2.591e+03 2.611
## Pr(>|t|)
## (Intercept) 0.00179 **
## knowledge_abilities < 2e-16 ***
## knowledge_class 0.00837 **
## knowledge_abilities:knowledge_class 0.00907 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.251
## knwldg_clss -0.236 0.369
## knwldg_bl:_ 0.200 -0.625 -0.590
Seek.
# interactive - maximal random effects
#ms_seek_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities|response_id) + (1+knowledge_class*knowledge_abilities|type), data=ms_seek_knowledge)
# remove correlations
#ms_seek_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=ms_seek_knowledge)
# remove interaction terms in random effects
#ms_seek_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=ms_seek_knowledge)
# remove knowledge abilities random slope in type
#ms_seek_interaction_4 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class||type), data=ms_seek_knowledge)
# remove knowledge class random slope in type
ms_seek_interaction_5 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1|type), data=ms_seek_knowledge)
# model that runs!
summary(ms_seek_interaction_5)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_class +
## knowledge_abilities || response_id) + (1 | type)
## Data: ms_seek_knowledge
##
## REML criterion at convergence: 6660.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.5563 -0.5852 -0.0599 0.5891 3.3504
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 4.216e-01 0.649294
## response_id.1 knowledge_class 3.100e-01 0.556769
## response_id.2 knowledge_abilities 1.887e-01 0.434379
## type (Intercept) 9.509e-05 0.009751
## Residual 7.307e-01 0.854809
## Number of obs: 2304, groups: response_id, 288; type, 2
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 1.979e+00 5.273e-02 5.216e+01 37.537
## knowledge_abilities 7.257e-01 5.650e-02 8.485e+02 12.844
## knowledge_class 7.483e-01 6.011e-02 7.365e+02 12.448
## knowledge_abilities:knowledge_class 2.674e-01 7.123e-02 1.257e+03 3.753
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## knowledge_abilities < 2e-16 ***
## knowledge_class < 2e-16 ***
## knowledge_abilities:knowledge_class 0.000183 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.426
## knwldg_clss -0.400 0.374
## knwldg_bl:_ 0.338 -0.630 -0.593
Listen.
# interactive - maximal random effects w/ removed correlations
#ms_list_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=ms_list_knowledge)
# remove interaction terms in random effects
#ms_list_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=ms_list_knowledge)
# remove knowledge class random slopes
ms_list_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_abilities||response_id) + (1+knowledge_class||type), data=ms_list_knowledge)
# Analysis that runs!
summary(ms_list_interaction_3)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_abilities ||
## response_id) + (1 + knowledge_class || type)
## Data: ms_list_knowledge
##
## REML criterion at convergence: 8593.3
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.09934 -0.62977 -0.01044 0.61877 3.12391
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 0.38901 0.6237
## response_id.1 knowledge_abilities 0.01133 0.1064
## type (Intercept) 0.04246 0.2061
## type.1 knowledge_class 0.27738 0.5267
## Residual 0.91903 0.9587
## Number of obs: 2852, groups: response_id, 713; type, 2
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 2.372e+00 1.520e-01 1.056e+00 15.606
## knowledge_abilities 4.067e-01 5.093e-02 2.046e+03 7.986
## knowledge_class 1.699e-01 3.759e-01 1.023e+00 0.452
## knowledge_abilities:knowledge_class 6.648e-01 7.180e-02 1.669e+03 9.258
## Pr(>|t|)
## (Intercept) 0.0354 *
## knowledge_abilities 2.3e-15 ***
## knowledge_class 0.7284
## knowledge_abilities:knowledge_class < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.166
## knwldg_clss -0.023 0.067
## knwldg_bl:_ 0.118 -0.705 -0.096
## convergence code: 0
## Model failed to converge with max|grad| = 0.00289783 (tol = 0.002, component 1)
Control.
# maximal model
#ms_control_interaction = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities|response_id) + (1+knowledge_class*knowledge_abilities|type), data=ms_control)
# remove correlations
#ms_control_interaction_2 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class*knowledge_abilities||response_id) + (1+knowledge_class*knowledge_abilities||type), data=ms_control)
# remove interaction terms in random effects
#ms_control_interaction_3 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1+knowledge_class+knowledge_abilities||type), data=ms_control)
# remove random slopes for type
ms_control_interaction_4 = lmer(response_num ~ knowledge_abilities * knowledge_class + (1+knowledge_class+knowledge_abilities||response_id) + (1|type), data=ms_control)
summary(ms_control_interaction_4)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula:
## response_num ~ knowledge_abilities * knowledge_class + (1 + knowledge_class +
## knowledge_abilities || response_id) + (1 | type)
## Data: ms_control
##
## REML criterion at convergence: 6833.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -3.09034 -0.66980 0.01872 0.61935 2.89586
##
## Random effects:
## Groups Name Variance Std.Dev.
## response_id (Intercept) 0.4196 0.6477
## response_id.1 knowledge_class 0.0000 0.0000
## response_id.2 knowledge_abilities 0.1949 0.4415
## type (Intercept) 0.0000 0.0000
## Residual 0.8804 0.9383
## Number of obs: 2304, groups: response_id, 288; type, 2
##
## Fixed effects:
## Estimate Std. Error df t value
## (Intercept) 2.335e+00 5.464e-02 6.352e+02 42.738
## knowledge_abilities 3.247e-01 6.110e-02 9.217e+02 5.313
## knowledge_class 1.736e-03 5.529e-02 1.744e+03 0.031
## knowledge_abilities:knowledge_class 7.726e-01 7.819e-02 1.744e+03 9.881
## Pr(>|t|)
## (Intercept) < 2e-16 ***
## knowledge_abilities 1.35e-07 ***
## knowledge_class 0.975
## knowledge_abilities:knowledge_class < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) knwldg_b knwldg_c
## knwldg_blts -0.458
## knwldg_clss -0.506 0.452
## knwldg_bl:_ 0.358 -0.640 -0.707
## convergence code: 0
## boundary (singular) fit: see ?isSingular