Time : assessment period (levels = “t0”, “t1”, “t2”, “t3”, “t6”, “t8”)
age : individual age at each assessment (years)
m_mirwald : calculation of maturity offset according to Mirwald et al. 2002 (Mirwald et al., 2002) (years)
m_moore : calculation of maturity offset according to Moore et al. 2012 (Moore et al., 2015) (years)
Code
ages <-as_tibble(tx) |>select(Child ="id", "gender",starts_with("date"),starts_with(c("t0","t1","t2","t3","t6","t8")) &contains(c("height","weight"))) |>pivot_longer(10:27, names_to =c("Time","Type","Test", "Measure"),names_sep ="_", values_to ="value") |>select(-Test,-Type) |>pivot_wider(names_from = Measure,values_from = value) |>mutate(date =case_when(Time =="t0"~ date.t0, Time =="t1"~ date.t1, Time =="t2"~ date.t2, Time =="t3"~ date.t3, Time =="t6"~ date.t6, Time =="t8"~ date.t8),date = zoo::as.Date(date),age =as.numeric((date - date.of.birth)/365.25),m_mirwald =ifelse(gender=="w",-9.376+ (.0001882* (stand - sit) * sit) + (.0022* (stand - sit) * age) + (.005841* age * sit) + (-.002658* age * weight) + (.07693* weight / stand *100),-9.236+ (.0002708* (stand - sit) * sit) + (-.001663* (stand - sit) * age) + (.007216* age * sit) + (.02292* weight / stand *100)),m_moore =ifelse(gender =="w",-7.709133+ (.0042232* (age * stand)),-8.128741+ (.0070346* (age * sit))),bmi=weight/((stand/100)^2)) |>select(Child, Time, age, m_mirwald, m_moore)save(ages, file="data/ages.rda")
Scores for the 20-m sprint and the star run where transformed from time to completion (s) into average speed (m/s) (Fühner et al., 2021, 2022). Z-scores were based norm values for key age children published in Fühner et al. 2021 (Fühner et al., 2021) for 6 min run, star run, 20 m sprint, standing long jump, and ball push test. As indicated by preliminary EMOTIKON analyses, one leg balance test were log-transformed and then z-transformed across the SMaRTER sample.
Code
data.frame(Test=c("Run (m)","Star_r (m/s)", "S20_r (m/s)", "SLJ (cm)", "BPT (m)", "OLB (s)"),mean=c("1004", "2.05", "4.52", "126", "3.74", "2.08"),sd=c("148", "0.288", "0.413", "19.3", "714", "0.768")) |>flextable() |>autofit() |>align(j=2:3, align ="right") |>add_footer_row(values =c("Run = 6 min run, Star_r = star run, S20_r = 20 m sprint, SLJ = standing long jump, BPT = ball push test, OLB = one leg balance"), colwidths =3)
Table 8.1: EMOTIKON values according to Fühner et al. 2021
Code
emo <-as_tibble(tx) |>select(Child ="id",starts_with(c("t0","t1","t2","t3","t6","t8")) &contains("motor_emo")) |>pivot_longer(2:37, names_to =c("Time","type","domain", "Test"),names_sep ="_", values_to ="Score") |>select(-domain, -type) |>mutate(across(where(is.character), as.factor),Test =fct_recode(Test, Run ="endurance", Star_r ="star", S20_r ="sprint",SLJ ="jump", BPT ="toss", OLB_l ="oneleg"),Test =fct_relevel(Test, "Run", "Star_r", "S20_r", "SLJ", "BPT", "OLB_l"),Score =case_when(Test =="Star_r"~50.912/Score, Test =="S20_r"~20./Score, Test =="OLB_l"~log(Score),TRUE~ Score),zScore =case_when(Test =="Run"~ (Score -1004)/148, Test =="Star_r"~ (Score -2.05)/.288, Test =="S20_r"~ (Score -4.52)/.413, Test =="SLJ"~ (Score -126)/19.3, Test =="BPT"~ (Score -3.74)/.714, Test =="OLB_l"~ (Score -2.08)/.768))save(emo, file="data/emo.rda")
8.1.5 “cog”
A Box-Cox distribution analysis (Box & Cox, 1964) suggested logarithmic transformations for all executive function tests to obtain normally distributed model residuals (see Figure 8.1). Accordingly, lag transformed means and standard deviations were used for z-transformation (see Table 8.2). Further, the z-transformed scores for the trail making test and Simon task were reversed, so positive improvements of z-values indicate and improvement in time to completion or reaction time.
Code
data.frame(Test=c("TMTa (s)","TMTb (s)","DSST (n)","SC (ms)","SI (ms)"),mean=c("3.12","3.83","3.47","6.97","7.03"),sd=c("0.328","0.370","0.244","0.228","0.223")) |>flextable() |>autofit() |>align(j=2:3, align ="right") |>add_footer_row(values =c("TMTa = trail making test verion A, TMTb = trail making test version B, DSST = digit symbol substitution test, SC = Simon task congruent condition, SI = Simon task incongruent condition"), colwidths =3)
Table 8.2: Mean and standard deviation of executive function log-scores
Code
cog <-as_tibble(tx) |>select(Child ="id",contains("dsst"),contains("tmt") &ends_with("Time"),contains("simon_m.rt")) |>mutate(t0_cog_dsst_dsst.score=t0_cog_dsst_num-t0_cog_dsst_err,t1_cog_dsst_dsst.score=t1_cog_dsst_num-t1_cog_dsst_err,t2_cog_dsst_dsst.score=t2_cog_dsst_num-t2_cog_dsst_err,t3_cog_dsst_dsst.score=t3_cog_dsst_num-t3_cog_dsst_err,t6_cog_dsst_dsst.score=t6_cog_dsst_num-t6_cog_dsst_err,t8_cog_dsst_dsst.score=t8_cog_dsst_num-t8_cog_dsst_err) |>select(-contains("num")&-contains("err")) |>pivot_longer(2:31, names_to =c("Time","type","domain", "Test"),names_sep ="_", values_to ="Score") |>select(-domain, -type) |>mutate(across(where(is.character), as.factor),Test =fct_recode(Test, TMTa ="a.time", TMTb ="b.time", DSST ="dsst.score",SC ="m.rt.con", SI ="m.rt.incon"),Test =fct_relevel(Test, "TMTa", "TMTb", "DSST", "SC", "SI"),zScore =case_when(Test =="TMTa"~-(log(Score) -3.12)/.328, Test =="TMTb"~-(log(Score) -3.83)/.370, Test =="DSST"~ (log(Score) -3.47)/.244, Test =="SC"~-(log(Score) -6.97)/.228, Test =="SI"~-(log(Score) -7.03)/.223))save(cog, file="data/cog.rda")par(mfrow=c(5,2))car::boxCox(lm(Score ~1, data = cog[which(cog$Test=="TMTa"),]), main ="BoxCox-plot of trail making test version A") hist(log(cog[which(cog$Test=="TMTa"),]$Score), main ="Histogram of logarthmic trail making test version A", xlab ="log(score)")car::boxCox(lm(Score ~1, data = cog[which(cog$Test=="TMTb"),]), main ="BoxCox-plot of trail making test version B") hist(log(cog[which(cog$Test=="TMTb"),]$Score), main ="Histogram of logarthmic trail making test version B", xlab ="log(score)")car::boxCox(lm(Score ~1, data = cog[which(cog$Test=="DSST"),]), main ="BoxCox-plot of digit symbol substitution test") hist(log(cog[which(cog$Test=="DSST"),]$Score), main ="Histogram of logarthmic digit symbol substitution test", xlab ="log(score)")car::boxCox(lm(Score ~1, data = cog[which(cog$Test=="SC"),]), main ="BoxCox-plot of Simon task congruent condition") hist(log(cog[which(cog$Test=="SC"),]$Score), main ="Histogram of logarthmic Simon task congruent condition", xlab ="log(score)")car::boxCox(lm(Score ~1, data = cog[which(cog$Test=="SI"),]), main ="BoxCox-plot of Simon task incongruent condition") hist(log(cog[which(cog$Test=="SI"),]$Score), main ="Histogram of logarthmic Simon task incongruent condition", xlab ="log(score)")
Figure 8.1: Box-Cox distribution and histograms of executive function tests
8.2 Supplementary Material Chapter 2
8.2.1 Body mass index analysis for t1 and t3 populations
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `across(where(is.numeric), round, 3)`.
Caused by warning:
! The `...` argument of `across()` is deprecated as of dplyr 1.1.0.
Supply arguments directly to `.fns` through an anonymous function instead.
# Previously
across(a:b, mean, na.rm = TRUE)
# Now
across(a:b, \(x) mean(x, na.rm = TRUE))
LRT indicated that body mass index (BMI) improves the model’s fit, while age, gender, and Berlin proximity can be dropped.
m1.5_emo_bmi <-update(m1.1_emo, . ~ . - Test + Test/(Group * Time) + bmi_c)m1.6_emo_bmi <-update(m1.1_emo, . ~ . - Test + Test/(Group * Time + bmi_c))m1.7_emo_bmi <-update(m1.1_emo, . ~ . - Test + Test/((Group + Time + bmi_c)^2))
LRT further showed that including BMI nested within Test without interactions improves the models fit. Accordingly, m1.6_emo_bmi was reported in Section 3.3.1.1.
8.3.1.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time'. You can override using the
`.groups` argument.
LRT indicated that gender improves the model’s fit, while age, BMI, and Berlin proximity can be dropped.
m1.5_cog_gender <-update(m1.1_cog, . ~ . - Test + Test/(Group * Time) + gender)m1.6_cog_gender <-update(m1.1_cog, . ~ . - Test + Test/(Group * Time + gender))m1.7_cog_gender <-update(m1.1_cog, . ~ . - Test + Test/((Group + Time + gender)^2))
LRT further showed that gender added as a fixed factor not nested within Test improves the models fit. Accordingly, m1.5_cog_bmi was reported in Section 3.3.2.1.
8.3.2.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time'. You can override using the
`.groups` argument.
8.3.3 INT M2: physical fitness
8.3.3.1 Model fitting
Code
data_m2 <-left_join(info, anthro) |>left_join(ages) |>select(Child, bp, Group, gender, Time, bmi, age) |>filter(!(Child %in%c("SMART01", "SMART06", "SMART12", "SMART19", "SMART23", "SMART39", "SMART58", "SMART63", "SMART68", "SMART75" )), Time %in%c("t0","t1","t2","t3"))|>mutate(Group_pooled =case_when(Group=="INT-CON"& Time %in%c("t0", "t1") ~"INT", Group=="INT-CON"& Time %in%c("t2", "t3") ~"CON", Group=="CON-INT"& Time %in%c("t0", "t1") ~"CON", Group=="CON-INT"& Time %in%c("t2", "t3") ~"INT"),Time_pooled =case_when(Time %in%c("t0", "t2") ~"pre", Time %in%c("t1", "t3") ~"post"),Time_pooled=factor(Time_pooled, levels =c("pre","post")),across(where(is.character), as.factor)) |>arrange(Child, Time) |>fill(bmi)
Joining with `by = join_by(Child, Time)`
Joining with `by = join_by(Child, Time)`
LRT further showed that BMI added as a fixed factor nested within Test without interactions improves the models fit. Accordingly, m2.6_emo_bmi was reported in Section 3.4.1.1.
8.3.3.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time_pooled'. You can override using the
`.groups` argument.
LRT further showed that age added as a fixed factor not nested within Test improves the models fit. Accordingly, m2.5_cog_bmi was reported in Section 3.4.2.1.
8.3.4.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time_pooled'. You can override using the
`.groups` argument.
LRT indicated that BMI and Berlin proximity improves the model’s fit, while age and gender can be dropped.
m3.5_emo_bmi <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time) + bmi_c)m3.6_emo_bmi <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time + bmi_c))m3.7_emo_bmi <-update(m3.1_emo, . ~ . - Test + Test/((Group + Time + bmi_c)^2))m3.5_emo_bp <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time) + bp)m3.6_emo_bp <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time + bp))m3.7_emo_bp <-update(m3.1_emo, . ~ . - Test + Test/((Group + Time + bp)^2))
fixed-effect model matrix is rank deficient so dropping 4 columns / coefficients
LRT indicated that BMI and Berlin proximity added in the fixed structure nested within Test improves the model’s fit.
Code
m3.6_emo_bmibp <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time + bmi_c + bp))m3.6_emo_bmibp2 <-update(m3.1_emo, . ~ . - Test + Test/(Group * Time + bmi_c * bp))
LRT further indicated that BMI and Berlin proximity both added to the fixed structure nested within Test without interactions improves the model’s fit. Accordingly, m3.6_emo_bmibp was reported in Section 3.5.1.1.
8.3.5.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time'. You can override using the
`.groups` argument.
LRT indicated that including BMI, Berlin proximity, age, and gender in the fixed factors do not improve the model’s fit. Accordingly, all covariates were dropped and m3.2_cog was reported in Section 3.5.2.1.
8.3.6.2 Means and standard deviations of model variables
`summarise()` has grouped output by 'Time'. You can override using the
`.groups` argument.
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Correlations for anthropometric parameters assessed using the InBody; height = body height [cm], mass = body mass [kg], fat = body fat mass [kg], fat_p = body fat percent [%], muscle = body muscle mass [kg], muscle_p = body muscle mass percent [%], w_mf = sum of muscle mass and fat mass [kg], lean = body lean mass
LRT revealed only significant quadratic effects for body mass improves models fit.
m3_hm1 <-update(m1, . ~+ Test/(h * m + m2) + .)m3_hm2 <-update(m1, . ~+ Test/(h * m + h * m2) + .)
Warning: Some predictor variables are on very different scales: consider
rescaling
Second-order interactions showed significant improvements in models fitted for interactions of body size with linear but not quadratic trends in body mass. Accordingly, m3_hm1 was reported in Section 4.2.
8.4.3 Means and standard deviations of model variables
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Warning in par(usr): argument 1 does not name a graphical parameter
Correlations for age-related parameters; a1 = age centered at 0 [years], m1 = maturity offset centered at 0 (Mirwald) [years], m2 = maturity offset centered at 0 (Moore) [years], m1pc1 = first principal component of age and maturity (Mirwald) [z-score], m1pc2 = second principal component of age and maturity (Mirwald) [z-score], m2pc1 = first principal component of age and maturity (Moore) [z-score], m2pc2 = second principal component of age and maturity (Moore) [z-score]
8.5.2 Model 1: Effect of maturity offset according to Mirwald, age, and gender on physical fitness
Both principal components entered into the random effect structure of Child did significantly improve the fit of the model. Accordingly, m3 will be reported in Section 5.3.
8.5.3 Model 2: Effect of maturity offset according to Moore, age, and gender on physical fitness
Both principal components entered into the random effect structure of Child did significantly improve the fit of the model. Accordingly, m6 will be reported in Section 5.4.
8.5.4 Means and standard deviations of model variables
Joining with `by = join_by(Child, Time)`
Joining with `by = join_by(Child, Time)`
Fühner, T., Granacher, U., Golle, K., & Kliegl, R. (2021). Age and sex effects in physical fitness components of 108,295 third graders including 515 primary schools and 9 cohorts. Scientific Reports, 11. https://doi.org/10.1038/s41598-021-97000-4
Fühner, T., Granacher, U., Golle, K., & Kliegl, R. (2022). Effect of timing of school enrollment on physical fitness in third graders. Nature - Scientific Reports, 12.
Mirwald, R. L., Baxter-Jones, A. D. G., Bailey, D. A., & Beunen, G. P. (2002). An assessment of maturity from anthropometric measurements. Medicine and Science in Sports and Exercise, 34, 689–694. https://doi.org/10.1249/00005768-200204000-00020
Moore, S. A., McKay, H. A., Macdonald, H., Nettlefold, L., Baxter-Jones, A. D. G., Cameron, N., & Brasher, P. M. A. (2015). Enhancing a somatic maturity prediction model. Medicine and Science in Sports and Exercise, 47. https://doi.org/10.1249/MSS.0000000000000588