1. Once we have all these measures figured out, revisit our core analysis and include the following in models:
  1. Think more about the program-level indicators of quality, using the data you guys generated from students’ ESM reports and observers reports of quality.
## # A tibble: 161 x 5
##    kids_friendly kids_treat_with_respect kids_listen_to_teachers
##            <int>                   <int>                   <int>
##  1             3                       2                       3
##  2             3                       3                       3
##  3             3                       3                       3
##  4             4                       3                       3
##  5             3                       3                       4
##  6             4                       4                       3
##  7             3                       3                       2
##  8             4                       4                       4
##  9             4                       4                       4
## 10             3                       3                       3
## # ... with 151 more rows, and 2 more variables: kids_tease_or_bully <int>,
## #   kids_support_help <int>

Longer-term outcomes question (RQ #4)

RQ: Are challenge, relevance, possibly learning and positive affect during STEM activities across several weeks associated with changes in: (a) individual (sustained) interest in STEM and future goals and aspirations related to STEM? (We have been answering this question.)

OR

RQ: Are situational (momentary) interest and engagement in STEM activities across several weeks associated with changes in: (a) individual (sustained) interest in STEM and future goals and aspirations related to STEM?

Processing data and correlations

A bit more processing.

mod_df <- mod_df %>% 
    left_join(act) %>%
    left_join(loc) %>% 
    rename(lab = `ACT_Lab Activity`,
           create = `ACT_Creating Product`,
           not_focused = `ACT_Not Focused`,
           basic = `ACT_Basic Skills Activity`,
           psl = `ACT_Program Staff Led`,
           fts = `ACT_Field Trip Speaker`,
           class_space = `LOC_Classroom Space`,
           in_comm = `LOC_Outdoors - Community`) %>% 
    mutate(doing = lab + create)

mod_df %>% 
    select(contains("pred"), overall_pre_interest, overall_post_interest, overall_post_interest, pre_future_goals_plans,
           post_future_goals_plans) %>% 
    corrr::correlate() %>% 
    corrr::rearrange() %>% 
    fashion() %>% 
    knitr::kable()
rowname pred_relevance pred_interest pred_learning pred_engagement pred_positive_affect pred_challenge post_future_goals_plans pre_future_goals_plans overall_post_interest overall_pre_interest
pred_relevance 1.00 .86 .80 .67 .58 .30 .28 .17 .11
pred_interest 1.00 .86 .80 .67 .58 .30 .28 .17 .11
pred_learning .86 .86 .85 .66 .46 .28 .23 .21 .10
pred_engagement .80 .80 .85 .75 .42 .28 .24 .32 .15
pred_positive_affect .67 .67 .66 .75 .42 .25 .25 .24 .17
pred_challenge .58 .58 .46 .42 .42 .08 .05 -.06 .01
post_future_goals_plans .30 .30 .28 .28 .25 .08 .47 .47 .20
pre_future_goals_plans .28 .28 .23 .24 .25 .05 .47 .33 .39
overall_post_interest .17 .17 .21 .32 .24 -.06 .47 .33 .59
overall_pre_interest .11 .11 .10 .15 .17 .01 .20 .39 .59
mod_df %>% 
    select(lab, create, not_focused, basic, psl, fts) %>% 
    corrr::correlate() %>% 
    corrr::rearrange() %>% 
    fashion() %>% 
    knitr::kable()
rowname fts lab create not_focused basic psl
fts -.14 .15 -.16 -.28 -.15
lab -.14 -.47 .39 -.27 .07
create .15 -.47 -.06 -.45 -.65
not_focused -.16 .39 -.06 -.72 -.65
basic -.28 -.27 -.45 -.72 .79
psl -.15 .07 -.65 -.65 .79
attendance_ss <- mutate(attendance, prop_attend = DaysAttended / DaysScheduled, participant_ID = as.character(participant_ID))
attendance_ss <- select(attendance_ss, participant_ID, prop_attend)
mod_df <- left_join(mod_df, attendance_ss, by = "participant_ID")

These correlations suggest that (at the program level):

  • basic and program staff led are distinct from one another and not correlated with the other variables
  • not focused and lab are somewhat correlated, but distinct
  • lab and create are negatively correlated
  • field trip speaker is not very highly correlated with many other variables

Perhaps we could use:

  • basic
  • program staff led
  • lab or create (combined)?
mod_df <- mutate(mod_df,
                 lab_or_create = lab + create)

Exploring missing data

Specific variables:

mod_df %>% 
    select(participant_ID, program_name, gender, pred_challenge, pred_relevance, overall_pre_interest, overall_post_interest, pre_future_goals_plans, post_future_goals_plans, lab, create, basic) %>% 
    skimr::skim()
## Numeric Variables
## # A tibble: 9 x 13
##                       var    type missing complete     n       mean
##                     <chr>   <chr>   <dbl>    <dbl> <dbl>      <dbl>
## 1                   basic numeric       0      203   203 0.21187398
## 2                  create numeric       0      203   203 0.17663357
## 3                     lab numeric       0      203   203 0.02509145
## 4   overall_post_interest numeric      44      159   203 3.09433962
## 5    overall_pre_interest numeric      22      181   203 3.04419890
## 6 post_future_goals_plans numeric      50      153   203 2.80718954
## 7  pre_future_goals_plans numeric      25      178   203 2.73033708
## 8          pred_challenge numeric       0      203   203 2.27636813
## 9          pred_relevance numeric       0      203   203 2.57620061
## # ... with 7 more variables: sd <dbl>, min <dbl>, `25% quantile` <dbl>,
## #   median <dbl>, `75% quantile` <dbl>, max <dbl>, hist <chr>
## 
## Character Variables
## # A tibble: 3 x 9
##              var      type complete missing empty     n   min   max
## *          <chr>     <chr>    <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
## 1         gender character      201       2     0   203     1     1
## 2 participant_ID character      203       0     0   203     4     5
## 3   program_name character      203       0     0   203    18    29
## # ... with 1 more variables: n_unique <dbl>

Overall:

mod_df %>% 
    select(participant_ID, program_name, gender, pred_challenge, pred_relevance, overall_pre_interest, overall_post_interest, pre_future_goals_plans, post_future_goals_plans, lab, create, basic) %>% 
    complete.cases() %>% 
    table() # this suggests that 70 obs are not complete cases
## .
## FALSE  TRUE 
##    70   133

Examining raw data (not run):

mod_df %>% 
    select(participant_ID, program_name, gender, pred_challenge, pred_relevance, overall_pre_interest, overall_post_interest, pre_future_goals_plans, post_future_goals_plans, lab, create, basic) %>% 
    mutate_if(is.numeric, round) %>% 
    knitr::kable()
mod_df$prop_attend
##   [1] 0.9200000 1.0000000 0.6400000 0.9600000 0.9600000 0.2000000 0.8400000
##   [8] 0.7600000       NaN 0.5833333 0.5600000 0.9200000 0.7200000 0.8000000
##  [15] 0.9600000 1.0000000 0.9200000 0.3600000 0.9200000 0.9200000 0.6000000
##  [22] 0.8400000 0.8400000 0.9200000 0.7600000 1.0000000 0.9200000 0.9600000
##  [29] 0.6400000 0.6400000 0.7200000 0.9583333 1.0000000 1.0000000 0.9583333
##  [36] 1.0000000 1.0000000 0.8333333 1.0000000 0.7083333 0.9166667 0.7500000
##  [43]       NaN 1.0000000 0.9166667 0.9583333       NaN 0.8750000 0.9166667
##  [50] 0.9583333 0.9583333 0.6250000       NaN 0.7500000       NaN 0.8750000
##  [57] 0.8750000 0.9166667 0.9583333 0.9583333 0.4583333 0.9166667 1.0000000
##  [64] 0.8750000 0.4400000 0.9200000 1.0000000 0.9600000 0.5200000 0.8800000
##  [71] 0.9600000 1.0000000 0.5600000 0.4000000 0.7200000 0.9200000 0.9200000
##  [78] 0.8400000 1.0000000 0.8400000 0.6800000 0.9600000 0.9600000 1.0000000
##  [85] 0.9200000 1.0000000 0.9200000 0.5200000 0.6400000 0.7600000 0.9600000
##  [92] 0.6363636 0.6666667 0.8000000 0.7333333 0.7333333 0.6000000 0.8666667
##  [99] 1.0000000 0.7500000 0.9333333 0.8000000 0.8181818 0.9333333 0.7333333
## [106] 1.0000000 0.8000000 1.0000000 0.8666667 0.7333333 0.6666667 0.8666667
## [113] 0.8666667 1.0000000 0.7333333 1.0000000 1.0000000 0.8000000 0.9333333
## [120] 0.8000000 0.7333333 0.8666667 0.6666667 0.7333333 0.9333333 1.0000000
## [127] 0.6000000 0.9333333 0.7142857 0.6153846 0.9333333 1.0000000 0.8666667
## [134] 0.8666667 0.8666667 1.0000000 1.0000000 1.0000000 0.6250000 0.8666667
## [141] 0.5833333 0.9333333 0.6666667 1.0000000 0.7272727 0.9333333 1.0000000
## [148] 0.9333333 0.7333333 0.8000000 1.0000000 0.9333333 0.9333333 0.8666667
## [155] 1.0000000 0.8000000 0.6666667 0.9333333 0.8666667 0.8666667 0.9333333
## [162] 1.0000000 0.9333333 0.9333333 1.0000000 0.6363636 0.6666667 1.0000000
## [169] 0.9333333 0.9333333 0.8000000 0.8000000 1.0000000 0.9333333 1.0000000
## [176] 0.8000000 0.8666667 0.7333333 0.6666667 0.7333333 0.5000000 0.8000000
## [183] 0.8666667 0.7142857 1.0000000 0.8666667 0.5000000 0.8666667 0.6666667
## [190] 0.8000000 0.6666667 0.6000000 0.7142857 0.8666667 0.7333333 1.0000000
## [197] 1.0000000 0.5333333 0.5000000 0.5833333 0.7333333 0.8666667 0.8666667

Models with momentary predictors of interest and engagement (challenge and relevance)

mod_df
## # A tibble: 203 x 136
##    participant_ID pred_challenge pred_learning pred_positive_affect
##             <chr>          <dbl>         <dbl>                <dbl>
##  1           1001       2.008037      3.020906             3.517998
##  2           1002       1.662917      3.358161             2.562492
##  3           1003       2.685600      2.638687             3.020306
##  4           1004       3.828588      3.844531             2.196869
##  5           1005       2.045985      2.673338             2.782299
##  6           1006       1.490989      2.391861             2.332055
##  7           1007       2.127746      1.934174             2.220552
##  8           1008       2.142987      2.190048             1.671972
##  9           1009       1.630411      2.883714             2.326783
## 10           1010       2.701656      3.042243             3.050524
## # ... with 193 more rows, and 132 more variables: pred_relevance <dbl>,
## #   pred_interest <dbl>, pred_engagement <dbl>,
## #   pre_science_interest <dbl>, pre_science_competence_beliefs <dbl>,
## #   pre_science_utility_value <dbl>, pre_mathematics_interest <dbl>,
## #   pre_mathematics_competence_beliefs <dbl>,
## #   pre_mathematics_utility_value <dbl>, pre_engineering_interest <dbl>,
## #   pre_engineering_competence_beliefs <dbl>,
## #   pre_engineering_utility_value <dbl>,
## #   pre_student_and_other_chose <int>, pre_student_alone_chose <int>,
## #   pre_anybody_but_student_chose <int>,
## #   pre_future_job_work_science_computer <int>,
## #   pre_future_job_use_science_math <int>,
## #   pre_future_job_become_STEM <int>, overall_pre_interest <dbl>,
## #   overall_pre_competence_beliefs <dbl>, overall_pre_utility_value <dbl>,
## #   pre_future_goals_plans <dbl>, post_science_interest <dbl>,
## #   post_science_competence_beliefs <dbl>,
## #   post_science_utility_value <dbl>, post_mathematics_interest <dbl>,
## #   post_mathematics_competence_beliefs <dbl>,
## #   post_mathematics_utility_value <dbl>, post_engineering_interest <dbl>,
## #   post_engineering_competence_beliefs <dbl>,
## #   post_engineering_utility_value <dbl>,
## #   post_future_job_work_science_computer <int>,
## #   post_future_job_use_science_math <int>,
## #   post_future_job_become_STEM <int>, overall_post_interest <dbl>,
## #   overall_post_competence_beliefs <dbl>,
## #   overall_post_utility_value <dbl>, post_future_goals_plans <dbl>,
## #   program_ID <int>, program_providence <int>, have_no_demo_data <int>,
## #   have_pre_survey_data <int>, have_post_survey_data <int>,
## #   has_grade <int>, race <chr>, gender <chr>, English <chr>,
## #   Mathematics <chr>, Science <chr>, STAR_BOY_Math_ScaledScore <int>,
## #   STAR_MOY_Math_ScaledScore <int>, STAR_EOY_Math_ScaledScore <int>,
## #   standardized_bos <chr>, has_standardized_score <int>,
## #   standardized_but_no_grade <int>, grade_but_no_standardized <int>,
## #   LEP <int>, SP <int>, `DaysEnrolled14/15` <int>, `English15/16` <chr>,
## #   `Math15/16` <chr>, `Science15/16` <chr>, `Standardized_Bos
## #   15/16` <int>, ParticipantFirstName <chr>, ParticipantLastName <chr>,
## #   Site <chr>, DaysAttended <dbl>, DaysScheduled <dbl>, SurveyID <int>,
## #   q01_MusicDanceArt <dbl>, q01_SportsTeam <dbl>,
## #   q01_ReligiousSchoolGroup <dbl>, q01_ScoutingClubs <dbl>,
## #   q01_Tutoring <dbl>, q01_MathScience <dbl>, q01_AnotherCamp <dbl>,
## #   q01_AfterschoolProgram <dbl>, q01_NoneOfThese <dbl>,
## #   q02_HaveFun <dbl>, q02_HaveSomething <dbl>, q02_HaveSafePlace <dbl>,
## #   q02_LearnScienceMathComp <dbl>, q02_LearnSpecificSkills <dbl>,
## #   q02_BeWithFriendsFamily <dbl>, q02_DoBetterInSchool <dbl>,
## #   q02_NotSure <dbl>, q03a <dbl>, q03b <dbl>, q03c <dbl>, q03d <dbl>,
## #   q03e <dbl>, q03f <dbl>, q03g <dbl>, q03h <dbl>, q03i <dbl>,
## #   q03j <dbl>, q03k <dbl>, q03l <dbl>, q03m <dbl>, q03n <dbl>, ...
sjstats::icc(lmer(overall_post_interest ~ 
                      (1|program_ID), 
                  data = mod_df))
## 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
## Linear mixed model
##  Family: gaussian (identity)
## Formula: overall_post_interest ~ (1 | program_ID)
## 
##   ICC (program_ID): 0.249150
m4a <- lmer(overall_post_interest ~ 
                pred_challenge + pred_relevance + 
                gender +
                scale(overall_pre_interest, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m4a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`
## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`
    overall_post_interest
    B std. Error p
Fixed Parts
(Intercept)   2.14 0.48 <.001
pred_challenge   -0.19 0.11 .083
pred_relevance   0.31 0.11 .004
gender (M)   0.17 0.12 .172
scale(overall_pre_interest, scale = F)   0.57 0.07 <.001
prop_attend   0.60 0.46 .198
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.041
Observations   138
R2 / Ω02   .469 / .469

Relevance is a significant positive predictor.

With video codes added in:

m4ai <- lmer(overall_post_interest ~ 
                 pred_challenge + pred_relevance + 
                 gender +
                 scale(lab) + scale(psl) + scale(basic) +
                 scale(overall_pre_interest, scale = F) + 
                 prop_attend +
                 (1|program_ID), 
             data = mod_df)

sjPlot::sjt.lmer(m4ai, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(overall_pre_interest, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(overall_pre_interest, scale = F)`
    overall_post_interest
    B std. Error p
Fixed Parts
(Intercept)   2.00 0.47 <.001
pred_challenge   -0.21 0.11 .052
pred_relevance   0.31 0.11 .003
gender (M)   0.17 0.12 .159
scale(lab)   0.15 0.07 .026
scale(psl)   -0.07 0.10 .474
scale(basic)   -0.06 0.11 .598
scale(overall_pre_interest, scale = F)   0.52 0.07 <.001
prop_attend   0.80 0.45 .077
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   138
R2 / Ω02   .484 / .484

Relevance is a significant positive predictor; challenge is (nearly) a negative significant predictor. Basic is approaching a negative, statistically significant relationship.

sjstats::icc(lmer(post_future_goals_plans ~
                      (1|program_ID), 
                  data = mod_df))
## Linear mixed model
##  Family: gaussian (identity)
## Formula: post_future_goals_plans ~ (1 | program_ID)
## 
##   ICC (program_ID): 0.000000
m4b <- lmer(post_future_goals_plans ~ 
                pred_challenge + pred_relevance + 
                gender +
                prop_attend +
                scale(pre_future_goals_plans, scale = F) + (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m4b, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(pre_future_goals_plans, scale = F)`
    post_future_goals_plans
    B std. Error p
Fixed Parts
(Intercept)   1.56 0.55 .004
pred_challenge   -0.11 0.13 .384
pred_relevance   0.37 0.13 .005
gender (M)   0.37 0.14 .011
prop_attend   0.43 0.52 .411
scale(pre_future_goals_plans, scale = F)   0.33 0.09 <.001
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   130
R2 / Ω02   .313 / .313

Relevance is a significant posive predictor of changes in future goals and plans; gender is, as well.

With video codes added in:

m4bi <- lmer(post_future_goals_plans ~ 
                 pred_challenge + pred_relevance + 
                 gender +
                 scale(lab) + scale(psl) + scale(basic) + 
                 prop_attend +
                 scale(pre_future_goals_plans, scale = F) + (1|program_ID), 
             data = mod_df)

sjPlot::sjt.lmer(m4bi, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`
    post_future_goals_plans
    B std. Error p
Fixed Parts
(Intercept)   1.50 0.56 .008
pred_challenge   -0.11 0.13 .394
pred_relevance   0.37 0.13 .005
gender (M)   0.39 0.15 .009
scale(lab)   0.02 0.08 .781
scale(psl)   0.05 0.13 .704
scale(basic)   0.00 0.13 .992
prop_attend   0.48 0.54 .374
scale(pre_future_goals_plans, scale = F)   0.32 0.09 <.001
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   130
R2 / Ω02   .317 / .317

Relevance is a significant posive predictor of changes in future goals and plans; gender is, as well.

Models with momentary interest and engagement as predictors

Without video codes added in

Just interest:

m4a <- lmer(overall_post_interest ~ 
                pred_interest + 
                gender +
                scale(overall_pre_interest, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m4a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`

## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`
    overall_post_interest
    B std. Error p
Fixed Parts
(Intercept)   1.89 0.48 <.001
pred_interest   0.21 0.09 .023
gender (M)   0.15 0.12 .214
scale(overall_pre_interest, scale = F)   0.58 0.07 <.001
prop_attend   0.62 0.47 .184
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.035
Observations   138
R2 / Ω02   .454 / .454

Interest is approaching statistical signficance as a positive predictor.

Just engagement:

m4b <- lmer(overall_post_interest ~ 
                pred_engagement +
                gender +
                scale(overall_pre_interest, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m4b, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`

## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`
    overall_post_interest
    B std. Error p
Fixed Parts
(Intercept)   1.15 0.46 .012
pred_engagement   0.52 0.10 <.001
gender (M)   0.14 0.11 .223
scale(overall_pre_interest, scale = F)   0.54 0.07 <.001
prop_attend   0.47 0.44 .287
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.053
Observations   138
R2 / Ω02   .534 / .533

Engagement predicts changes in post interest.

Both interest and engagement:

m4c <- lmer(overall_post_interest ~ 
                pred_interest + pred_engagement +
                gender +
                scale(overall_pre_interest, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m4c, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`

## Warning: Unknown variables: `scale(overall_pre_interest, scale = F)`
    overall_post_interest
    B std. Error p
Fixed Parts
(Intercept)   1.25 0.45 .005
pred_interest   -0.44 0.14 .002
pred_engagement   0.95 0.17 <.001
gender (M)   0.21 0.11 .057
scale(overall_pre_interest, scale = F)   0.53 0.07 <.001
prop_attend   0.38 0.43 .366
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.056
Observations   138
R2 / Ω02   .566 / .566

Interest is a negative significant predicotr of changes in interest; engagement is a positive predictor of changes.

With video codes added in

Just interest:

m5a <- lmer(post_future_goals_plans ~
                pred_interest + 
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m5a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`
    post_future_goals_plans
    B std. Error p
Fixed Parts
(Intercept)   1.31 0.57 .021
pred_interest   0.31 0.11 .005
gender (M)   0.38 0.15 .011
scale(lab)   0.02 0.08 .780
scale(psl)   0.05 0.13 .719
scale(basic)   0.01 0.13 .964
scale(pre_future_goals_plans, scale = F)   0.34 0.09 <.001
prop_attend   0.49 0.54 .356
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   130
R2 / Ω02   .313 / .313

Interest is approaching statistical signficance as a positive predictor of future goals and plans. Males are associated with changes in future goals and plans.

Just engagement:

m5b <- lmer(post_future_goals_plans ~
                pred_engagement +
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m5b, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`
    post_future_goals_plans
    B std. Error p
Fixed Parts
(Intercept)   1.19 0.59 .043
pred_engagement   0.37 0.13 .005
gender (M)   0.41 0.15 .005
scale(lab)   0.01 0.08 .850
scale(psl)   0.03 0.12 .801
scale(basic)   0.03 0.13 .826
scale(pre_future_goals_plans, scale = F)   0.34 0.09 <.001
prop_attend   0.41 0.54 .444
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   130
R2 / Ω02   .313 / .313

Engagement predicts changes in future goals and plans, as does gender.

Both interest and engagement:

m5c <- lmer(post_future_goals_plans ~
                pred_interest + pred_engagement +
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m5c, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`
    post_future_goals_plans
    B std. Error p
Fixed Parts
(Intercept)   1.15 0.59 .051
pred_interest   0.16 0.19 .396
pred_engagement   0.21 0.23 .352
gender (M)   0.39 0.15 .008
scale(lab)   0.02 0.08 .812
scale(psl)   0.04 0.13 .764
scale(basic)   0.02 0.13 .884
scale(pre_future_goals_plans, scale = F)   0.33 0.09 <.001
prop_attend   0.45 0.54 .407
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.000
Observations   130
R2 / Ω02   .318 / .318

Males are associated with changes in future goals and plans.

Models with measures from the post-survey added (just to full models for now)

post_ss <- select(post, participant_ID, contains("post_"))
post_ss <- mutate(post_ss, participant_ID = as.character(participant_ID))
mod_df <- left_join(mod_df, post_ss)

Reliabilities for new post-survey measures (need to think about pre-measures)

psych::alpha(jmRtools::composite_matrix_maker(post, contains("at_program")))
## 
## Reliability analysis   
## Call: psych::alpha(x = jmRtools::composite_matrix_maker(post, contains("at_program")))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd
##       0.83      0.83    0.82       0.4 4.7 0.021  2.5 0.68
## 
##  lower alpha upper     95% confidence boundaries
## 0.78 0.83 0.87 
## 
##  Reliability if an item is dropped:
##                              raw_alpha std.alpha G6(smc) average_r S/N
## at_program_choose_time            0.81      0.81    0.80      0.42 4.4
## at_program_suggest_ideas          0.80      0.80    0.78      0.40 3.9
## at_program_choose_activities      0.80      0.80    0.79      0.41 4.1
## at_program_plan_activities        0.80      0.81    0.80      0.41 4.1
## at_program_lead_activities        0.80      0.80    0.79      0.40 4.0
## at_program_in_charge              0.79      0.79    0.77      0.39 3.8
## at_program_decicision_rules       0.80      0.80    0.80      0.41 4.1
##                              alpha se
## at_program_choose_time          0.023
## at_program_suggest_ideas        0.024
## at_program_choose_activities    0.024
## at_program_plan_activities      0.024
## at_program_lead_activities      0.025
## at_program_in_charge            0.026
## at_program_decicision_rules     0.024
## 
##  Item statistics 
##                                n raw.r std.r r.cor r.drop mean   sd
## at_program_choose_time       159  0.63  0.64  0.55   0.49  2.7 0.85
## at_program_suggest_ideas     160  0.71  0.72  0.67   0.59  2.8 0.90
## at_program_choose_activities 158  0.69  0.69  0.62   0.56  2.8 0.94
## at_program_plan_activities   156  0.69  0.68  0.61   0.55  2.4 1.01
## at_program_lead_activities   160  0.72  0.71  0.65   0.59  2.4 1.00
## at_program_in_charge         158  0.77  0.75  0.71   0.64  2.3 1.05
## at_program_decicision_rules  160  0.71  0.69  0.61   0.56  2.4 1.08
## 
## Non missing response frequency for each item
##                                 1    2    3    4 miss
## at_program_choose_time       0.11 0.25 0.50 0.14 0.01
## at_program_suggest_ideas     0.10 0.21 0.46 0.22 0.01
## at_program_choose_activities 0.11 0.23 0.41 0.24 0.02
## at_program_plan_activities   0.24 0.29 0.32 0.15 0.03
## at_program_lead_activities   0.24 0.23 0.39 0.14 0.01
## at_program_in_charge         0.31 0.23 0.33 0.13 0.02
## at_program_decicision_rules  0.27 0.26 0.28 0.19 0.01
psych::alpha(jmRtools::composite_matrix_maker(post, contains("teacher_staff")))
## 
## Reliability analysis   
## Call: psych::alpha(x = jmRtools::composite_matrix_maker(post, contains("teacher_staff")))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd
##       0.87      0.87    0.87       0.5 6.9 0.016  2.9 0.78
## 
##  lower alpha upper     95% confidence boundaries
## 0.84 0.87 0.9 
## 
##  Reliability if an item is dropped:
##                                 raw_alpha std.alpha G6(smc) average_r S/N
## teacher_staff_interested_in_you      0.85      0.85    0.84      0.48 5.6
## teacher_staff_can_talk_to            0.86      0.86    0.85      0.50 6.1
## teacher_staff_helps_you              0.85      0.85    0.84      0.48 5.6
## teacher_staff_enjoy                  0.85      0.85    0.85      0.49 5.7
## teacher_staff_interests_talents      0.85      0.85    0.84      0.49 5.7
## teacher_staff_life_goals             0.85      0.85    0.84      0.50 5.9
## teacher_staff_will_miss              0.88      0.88    0.87      0.55 7.2
##                                 alpha se
## teacher_staff_interested_in_you    0.019
## teacher_staff_can_talk_to          0.018
## teacher_staff_helps_you            0.019
## teacher_staff_enjoy                0.019
## teacher_staff_interests_talents    0.019
## teacher_staff_life_goals           0.018
## teacher_staff_will_miss            0.015
## 
##  Item statistics 
##                                   n raw.r std.r r.cor r.drop mean   sd
## teacher_staff_interested_in_you 160  0.79  0.80  0.76   0.71  2.9 0.89
## teacher_staff_can_talk_to       159  0.74  0.74  0.69   0.63  2.9 1.09
## teacher_staff_helps_you         158  0.79  0.79  0.77   0.70  3.0 1.01
## teacher_staff_enjoy             159  0.78  0.79  0.74   0.69  3.1 0.99
## teacher_staff_interests_talents 157  0.78  0.78  0.74   0.69  2.6 1.06
## teacher_staff_life_goals        157  0.77  0.76  0.71   0.66  2.6 1.07
## teacher_staff_will_miss         158  0.62  0.62  0.51   0.48  3.0 1.07
## 
## Non missing response frequency for each item
##                                    1    2    3    4 miss
## teacher_staff_interested_in_you 0.07 0.26 0.41 0.27 0.01
## teacher_staff_can_talk_to       0.16 0.19 0.27 0.38 0.01
## teacher_staff_helps_you         0.11 0.18 0.31 0.41 0.02
## teacher_staff_enjoy             0.09 0.16 0.29 0.46 0.01
## teacher_staff_interests_talents 0.18 0.29 0.27 0.26 0.02
## teacher_staff_life_goals        0.18 0.27 0.28 0.27 0.02
## teacher_staff_will_miss         0.14 0.15 0.27 0.44 0.02
psych::alpha(jmRtools::composite_matrix_maker(post, contains("kids_")))
## Warning in psych::alpha(jmRtools::composite_matrix_maker(post, contains("kids_"))): Some items were negatively correlated with the total scale and probably 
## should be reversed.  
## To do this, run the function again with the 'check.keys=TRUE' option
## Some items ( kids_tease_or_bully ) were negatively correlated with the total scale and 
## probably should be reversed.  
## To do this, run the function again with the 'check.keys=TRUE' option
## 
## Reliability analysis   
## Call: psych::alpha(x = jmRtools::composite_matrix_maker(post, contains("kids_")))
## 
##   raw_alpha std.alpha G6(smc) average_r S/N   ase mean   sd
##        0.5      0.54    0.62      0.19 1.2 0.062  2.5 0.52
## 
##  lower alpha upper     95% confidence boundaries
## 0.38 0.5 0.62 
## 
##  Reliability if an item is dropped:
##                         raw_alpha std.alpha G6(smc) average_r  S/N
## kids_friendly                0.35      0.40    0.46     0.141 0.66
## kids_treat_with_respect      0.26      0.30    0.40     0.097 0.43
## kids_listen_to_teachers      0.29      0.35    0.49     0.121 0.55
## kids_tease_or_bully          0.77      0.77    0.74     0.457 3.36
## kids_support_help            0.32      0.40    0.53     0.142 0.66
##                         alpha se
## kids_friendly              0.085
## kids_treat_with_respect    0.096
## kids_listen_to_teachers    0.092
## kids_tease_or_bully        0.030
## kids_support_help          0.089
## 
##  Item statistics 
##                           n raw.r std.r r.cor r.drop mean   sd
## kids_friendly           160  0.67 0.696  0.66   0.41  2.7 0.83
## kids_treat_with_respect 159  0.76 0.784  0.78   0.56  2.5 0.80
## kids_listen_to_teachers 159  0.72 0.738  0.65   0.50  2.6 0.84
## kids_tease_or_bully     160  0.12 0.059 -0.30  -0.27  2.2 0.99
## kids_support_help       159  0.71 0.695  0.56   0.43  2.6 0.94
## 
## Non missing response frequency for each item
##                            1    2    3    4 miss
## kids_friendly           0.10 0.26 0.51 0.13 0.01
## kids_treat_with_respect 0.11 0.35 0.45 0.09 0.01
## kids_listen_to_teachers 0.10 0.36 0.42 0.13 0.01
## kids_tease_or_bully     0.28 0.39 0.20 0.13 0.01
## kids_support_help       0.13 0.30 0.38 0.19 0.01
m6a <- lmer(post_agency ~
                pred_interest + pred_engagement +
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m6a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`,
## `scale(pre_future_goals_plans, scale = F)`
    post_agency
    B std. Error p
Fixed Parts
(Intercept)   1.78 0.47 <.001
pred_interest   0.11 0.15 .490
pred_engagement   0.30 0.18 .098
gender (M)   0.01 0.12 .901
scale(lab)   -0.09 0.07 .208
scale(psl)   -0.04 0.11 .751
scale(basic)   -0.00 0.11 .990
scale(pre_future_goals_plans, scale = F)   -0.05 0.07 .452
prop_attend   -0.46 0.43 .290
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.015
Observations   136
R2 / Ω02   .158 / .158
m6a <- lmer(post_peer_relations ~
                pred_interest + pred_engagement +
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                #scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m6a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`
    post_peer_relations
    B std. Error p
Fixed Parts
(Intercept)   1.82 0.32 <.001
pred_interest   -0.03 0.10 .790
pred_engagement   0.18 0.12 .145
gender (M)   0.20 0.08 .013
scale(lab)   0.14 0.06 .025
scale(psl)   -0.20 0.10 .048
scale(basic)   0.19 0.10 .068
prop_attend   0.19 0.30 .530
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.059
Observations   154
R2 / Ω02   .178 / .177
m6a <- lmer(post_feelings_of_staff ~
                pred_interest + pred_engagement +
                gender +
                scale(lab) + scale(psl) + scale(basic) + 
                # scale(pre_future_goals_plans, scale = F) + 
                prop_attend +
                (1|program_ID), 
            data = mod_df)

sjPlot::sjt.lmer(m6a, p.kr = F, show.re.var = F, show.ci = F, show.se = T)
## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`

## Warning: Unknown variables: `scale(lab)`, `scale(psl)`, `scale(basic)`
    post_feelings_of_staff
    B std. Error p
Fixed Parts
(Intercept)   1.80 0.49 <.001
pred_interest   0.17 0.15 .277
pred_engagement   0.22 0.18 .236
gender (M)   -0.25 0.12 .046
scale(lab)   0.05 0.11 .626
scale(psl)   -0.13 0.18 .475
scale(basic)   0.17 0.18 .352
prop_attend   0.12 0.46 .792
Random Parts
Nprogram_ID   9
ICCprogram_ID   0.096
Observations   153
R2 / Ω02   .188 / .186