Model outputs

Author

Thomas E. Metherell

Dependencies

library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ggforce)
Warning: package 'ggforce' was built under R version 4.4.1
Loading required package: ggplot2
Warning: package 'ggplot2' was built under R version 4.4.1
library(ggplot2)
library(knitr)
Warning: package 'knitr' was built under R version 4.4.2
library(RColorBrewer)
library(svglite)
Warning: package 'svglite' was built under R version 4.4.3
library(targets)
Warning: package 'targets' was built under R version 4.4.2
library(tidyr)

datalist <- tribble(
  ~type, ~id, ~name, ~vars_of_interest,
  "Primary exposure", "sm1", "Social media use (period 1)", "ECQ09X00",
  "Primary exposure", "sm2", "Social media use (period 2)", "mcs6_sm_per_day",
  "Negative controls", "NCem1", "Number of employees at primary responding parent's place of work (period 1)", "EPEMPN00",
  "Negative controls", "NCem2", "Number of employees at primary responding parent's place of work (period 2)", "FPEMPN00",
  "Negative controls", "NCcd1", "Attitude towards copying/downloading music etc. (period 1)", c("ECQ52X002", "ECQ52X003"),
  "Negative controls", "NCcd2", "Attitude towards copying/downloading music etc. (period 2)", c("FCCOPY002", "FCCOPY003"),
  "Competing exposures", "CXsl1", "Sleep (period 1)", "EPBERE001",
  "Competing exposures", "CXsl2", "Sleep (period 2)", "mcs6_sleep",
  "Competing exposures", "CXex1", "Exercise (period 1)", "mcs5_exercise",
  "Competing exposures", "CXex2", "Exercise (period 2)", "FCPHEX00",
  "Competing exposures", "CXsi1", "In-person social interaction (period 1)", "mcs5_social_interaction",
  "Competing exposures", "CXsi2", "In-person social interaction (period 2)", "mcs6_social_interaction",
  "Positive control", "PCtd1", "SDQ Total Difficulties score (period 1)", "EEBDTO_T",
  "Positive control", "PCtd2", "SDQ Total Difficulties score (period 2)", "FEBDTOT"
)

adj_datalist <- tribble(
  ~period, ~id, ~name, ~vars_of_interest,
  1, "sm1_none", "Unadjusted", "ECQ09X00",
  1, "sm1_mh", "Adjusted for cohort member's mental health only", "ECQ09X00",
  1, "sm1_nonmh", "Adjusted for covariates except cohort member's mental health", "ECQ09X00",
  2, "sm2_none", "Unadjusted", "mcs6_sm_per_day",
  2, "sm2_mh", "Adjusted for cohort member's mental health only", "mcs6_sm_per_day",
  2, "sm2_nonmh", "Adjusted for covariates except cohort member's mental health", "mcs6_sm_per_day"
)

# Some coefficients intentionally suppressed to prevent disclosure
cat_adj_datalist <- tribble(
  ~period, ~id, ~name, ~vars_of_interest,
  1, "sm1_none", "Unadjusted", c("ECQ09X001", "ECQ09X003"),
  1, "sm1_mh", "Adjusted for cohort member's mental health only", c("ECQ09X001", "ECQ09X003"),
  1, "sm1_nonmh", "Adjusted for covariates except cohort member's mental health", c("ECQ09X001", "ECQ09X003"),
  2, "sm2_none", "Unadjusted", "mcs6_sm_per_day1",
  2, "sm2_mh", "Adjusted for cohort member's mental health only", "mcs6_sm_per_day1",
  2, "sm2_nonmh", "Adjusted for covariates except cohort member's mental health", "mcs6_sm_per_day1"
)

# Some coefficients intentionally suppressed to prevent disclosure
cat_datalist <- tribble(
  ~id, ~name, ~vars_of_interest,
  "sm1", "Period 1", c("ECQ09X001", "ECQ09X003"),
  "sm2", "Period 2", "mcs6_sm_per_day1",
)

interax_datalist <- tribble(
  ~period, ~id, ~name, ~vars_of_interest,
  1, "sm1_sex", "Sex", c("ECQ09X00", "AHCSEX00Female", "ECQ09X00:AHCSEX00Female"),
  1, "sm1_eth", "Ethnicity", c("ECQ09X00", "DDC06E00Ethnic minority", "ECQ09X00:DDC06E00Ethnic minority"),
  1, "sm1_inc", "Income", c("ECQ09X00", "DDOEDE00", "ECQ09X00:DDOEDE00"),
  1, "sm1_mh", "Prior mental health", c("ECQ09X00", "DDDEBDTOT", "ECQ09X00:DDDEBDTOT"),
  2, "sm2_sex", "Sex", c("mcs6_sm_per_day", "AHCSEX00Female", "mcs6_sm_per_day:AHCSEX00Female"),
  2, "sm2_eth", "Ethnicity", c("mcs6_sm_per_day", "DDC06E00Ethnic minority", "mcs6_sm_per_day:DDC06E00Ethnic minority"),
  2, "sm2_inc", "Income", c("mcs6_sm_per_day", "EOEDE000", "mcs6_sm_per_day:EOEDE000"),
  2, "sm2_wlt", "Wealth", c("mcs6_sm_per_day", "mcs5_wealth", "mcs6_sm_per_day:mcs5_wealth"),
  2, "sm2_mh", "Prior mental health", c("mcs6_sm_per_day", "EEBDTO_T", "mcs6_sm_per_day:EEBDTO_T")
)

# Some coefficients intentionally suppressed to prevent disclosure
cat_interax_datalist <- tribble(
  ~period, ~id, ~name, ~vars_of_interest,
  1, "sm1_sex", "Sex", c("ECQ09X001", "ECQ09X003", "AHCSEX00Female"),
  1, "sm1_inc", "Income", c("ECQ09X001", "ECQ09X003", "DDOEDE00", "ECQ09X001:DDOEDE00", "ECQ09X003:DDOEDE00"),
  1, "sm1_mh", "Prior mental health", c("ECQ09X001", "ECQ09X003", "DDDEBDTOT", "ECQ09X001:DDDEBDTOT", "ECQ09X003:DDDEBDTOT"),
  2, "sm2_sex", "Sex", c("mcs6_sm_per_day1", "AHCSEX00Female"),
  2, "sm2_inc", "Income", c("mcs6_sm_per_day1", "EOEDE000", "mcs6_sm_per_day1:EOEDE000"),
  2, "sm2_wlt", "Wealth", c("mcs6_sm_per_day1", "mcs5_wealth", "mcs6_sm_per_day1:mcs5_wealth"),
  2, "sm2_mh", "Prior mental health", c("mcs6_sm_per_day1", "EEBDTO_T", "mcs6_sm_per_day1:EEBDTO_T")
)

format_table <- function(results, vars_of_interest){
  f <- file()
  sink(file = f)
  results_table <- summary(results)
  sink()
  close(f)
  results_table$`p-value` <- 2*pt(-abs(results_table$results / results_table$se), results$df)
  suppressWarnings({
    results_table <- results_table %>%
     mutate(
        `E-value` = case_when(
          `(lower` <= 0 & `upper)` >= 0 ~ 1,
          `(lower` > 0 ~ exp(`(lower`) + sqrt(exp(`(lower`) * (exp(`(lower`) - 1)),
          `upper)` < 0 ~ 1/exp(`upper)`) + sqrt(1/exp(`upper)`) * (1/exp(`upper)`) - 1))
        ),
        results = exp(results),
        `(lower` = exp(`(lower`),
        `upper)` = exp(`upper)`),
        `p-value` = `p-value`
      ) %>%
      select(-se, -missInfo) %>%
      rename(
        HR = results,
        lower = `(lower`,
        upper = `upper)`
      )
  })
  
  return(results_table[vars_of_interest[[1]], ])
}

Results

Below the outputs from the main analysis models, unweighted and weighted, are shown.

Primary exposure

Social media use (period 1)

Unweighted
HR lower upper p-value E-value
ECQ09X00 1.203 0.937 1.544 0.147 1
Weighted
HR lower upper p-value E-value
ECQ09X00 1.12 0.796 1.577 0.515 1

Social media use (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_sm_per_day 0.874 0.622 1.228 0.433 1
Weighted
HR lower upper p-value E-value
mcs6_sm_per_day 0.899 0.607 1.331 0.591 1

Negative controls

Number of employees at primary responding parent’s place of work (period 1)

Unweighted
HR lower upper p-value E-value
EPEMPN00 0.778 0.478 1.267 0.309 1
Weighted
HR lower upper p-value E-value
EPEMPN00 0.779 0.462 1.313 0.345 1

Number of employees at primary responding parent’s place of work (period 2)

Unweighted
HR lower upper p-value E-value
FPEMPN00 0.988 0.712 1.371 0.94 1
Weighted
HR lower upper p-value E-value
FPEMPN00 1.026 0.699 1.506 0.895 1

Attitude towards copying/downloading music etc. (period 1)

Unweighted
HR lower upper p-value E-value
ECQ52X002 1.427 0.759 2.682 0.270 1
ECQ52X003 1.948 0.561 6.767 0.294 1
Weighted
HR lower upper p-value E-value
ECQ52X002 1.367 0.526 3.554 0.519 1
ECQ52X003 2.700 0.503 14.484 0.246 1

Attitude towards copying/downloading music etc. (period 2)

Unweighted
HR lower upper p-value E-value
FCCOPY002 0.971 0.651 1.45 0.887 1
FCCOPY003 1.128 0.673 1.89 0.647 1
Weighted
HR lower upper p-value E-value
FCCOPY002 0.867 0.492 1.530 0.622 1
FCCOPY003 1.183 0.584 2.397 0.640 1

Competing exposures

Sleep (period 1)

Unweighted
HR lower upper p-value E-value
EPBERE001 0.716 0.425 1.208 0.211 1
Weighted
HR lower upper p-value E-value
EPBERE001 0.785 0.394 1.564 0.49 1

Sleep (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_sleep 0.73 0.623 0.855 0 1.615
Weighted
HR lower upper p-value E-value
mcs6_sleep 0.716 0.585 0.876 0.001 1.544

Exercise (period 1)

Unweighted
HR lower upper p-value E-value
mcs5_exercise 1.124 0.857 1.474 0.399 1
Weighted
HR lower upper p-value E-value
mcs5_exercise 1.195 0.886 1.612 0.241 1

Exercise (period 2)

Unweighted
HR lower upper p-value E-value
FCPHEX00 0.864 0.724 1.032 0.107 1
Weighted
HR lower upper p-value E-value
FCPHEX00 0.88 0.691 1.12 0.299 1

In-person social interaction (period 1)

Unweighted
HR lower upper p-value E-value
mcs5_social_interaction 1 0.758 1.318 0.999 1
Weighted
HR lower upper p-value E-value
mcs5_social_interaction 1.059 0.727 1.542 0.765 1

In-person social interaction (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_social_interaction 1.058 0.873 1.281 0.567 1
Weighted
HR lower upper p-value E-value
mcs6_social_interaction 0.943 0.715 1.245 0.68 1

Positive control

SDQ Total Difficulties score (period 1)

Unweighted
HR lower upper p-value E-value
EEBDTO_T 1.564 1.222 2 0 1.744
Weighted
HR lower upper p-value E-value
EEBDTO_T 1.587 1.123 2.242 0.009 1.495

SDQ Total Difficulties score (period 2)

Unweighted
HR lower upper p-value E-value
FEBDTOT 1.607 1.35 1.914 0 2.038
Weighted
HR lower upper p-value E-value
FEBDTOT 1.721 1.345 2.202 0 2.027

Plots

Period 1

Period 2

Sensitivity analyses

Below the outputs from the sensitivity analysis models, unweighted and weighted, are shown.

Primary exposure

Social media use (period 1)

Unweighted
HR lower upper p-value E-value
ECQ09X00 1.205 0.94 1.545 0.141 1
Weighted
HR lower upper p-value E-value
ECQ09X00 1.129 0.799 1.594 0.492 1

Social media use (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_sm_per_day 0.868 0.625 1.206 0.394 1
Weighted
HR lower upper p-value E-value
mcs6_sm_per_day 0.902 0.619 1.313 0.586 1

Negative controls

Number of employees at primary responding parent’s place of work (period 1)

Unweighted
HR lower upper p-value E-value
EPEMPN00 0.827 0.498 1.373 0.459 1
Weighted
HR lower upper p-value E-value
EPEMPN00 0.816 0.444 1.499 0.507 1

Number of employees at primary responding parent’s place of work (period 2)

Unweighted
HR lower upper p-value E-value
FPEMPN00 0.963 0.721 1.287 0.798 1
Weighted
HR lower upper p-value E-value
FPEMPN00 1 0.708 1.413 0.999 1

Attitude towards copying/downloading music etc. (period 1)

Unweighted
HR lower upper p-value E-value
ECQ52X002 1.421 0.761 2.655 0.27 1
ECQ52X003 1.951 0.566 6.724 0.29 1
Weighted
HR lower upper p-value E-value
ECQ52X002 1.329 0.546 3.234 0.530 1
ECQ52X003 2.560 0.492 13.317 0.264 1

Attitude towards copying/downloading music etc. (period 2)

Unweighted
HR lower upper p-value E-value
FCCOPY002 0.993 0.662 1.489 0.974 1
FCCOPY003 1.137 0.664 1.948 0.640 1
Weighted
HR lower upper p-value E-value
FCCOPY002 0.895 0.532 1.506 0.675 1
FCCOPY003 1.252 0.600 2.614 0.548 1

Competing exposures

Sleep (period 1)

Unweighted
HR lower upper p-value E-value
EPBERE001 0.705 0.419 1.186 0.188 1
Weighted
HR lower upper p-value E-value
EPBERE001 0.787 0.398 1.555 0.49 1

Sleep (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_sleep 0.742 0.629 0.875 0 1.548
Weighted
HR lower upper p-value E-value
mcs6_sleep 0.737 0.598 0.908 0.004 1.436

Exercise (period 1)

Unweighted
HR lower upper p-value E-value
mcs5_exercise 1.116 0.851 1.464 0.426 1
Weighted
HR lower upper p-value E-value
mcs5_exercise 1.166 0.86 1.58 0.321 1

Exercise (period 2)

Unweighted
HR lower upper p-value E-value
FCPHEX00 0.87 0.725 1.044 0.135 1
Weighted
HR lower upper p-value E-value
FCPHEX00 0.894 0.692 1.154 0.388 1

In-person social interaction (period 1)

Unweighted
HR lower upper p-value E-value
mcs5_social_interaction 0.99 0.754 1.3 0.944 1
Weighted
HR lower upper p-value E-value
mcs5_social_interaction 1.016 0.694 1.488 0.934 1

In-person social interaction (period 2)

Unweighted
HR lower upper p-value E-value
mcs6_social_interaction 1.035 0.855 1.252 0.726 1
Weighted
HR lower upper p-value E-value
mcs6_social_interaction 0.923 0.714 1.194 0.542 1

Positive control

SDQ Total Difficulties score (period 1)

Unweighted
HR lower upper p-value E-value
EEBDTO_T 1.56 1.233 1.973 0 1.769
Weighted
HR lower upper p-value E-value
EEBDTO_T 1.567 1.118 2.196 0.009 1.482

SDQ Total Difficulties score (period 2)

Unweighted
HR lower upper p-value E-value
FEBDTOT 1.588 1.333 1.891 0 2
Weighted
HR lower upper p-value E-value
FEBDTOT 1.712 1.346 2.178 0 2.028

Differential adjustment

Below the outputs from the unadjusted and partially adjusted models (weighted only) are shown.

Period 1

Unadjusted

HR lower upper p-value E-value
ECQ09X00 1.233 0.85 1.789 0.269 1

Adjusted for cohort member’s mental health only

HR lower upper p-value E-value
ECQ09X00 1.174 0.81 1.702 0.397 1

Adjusted for covariates except cohort member’s mental health

HR lower upper p-value E-value
ECQ09X00 1.123 0.797 1.582 0.507 1

Period 2

Unadjusted

HR lower upper p-value E-value
mcs6_sm_per_day 0.969 0.699 1.343 0.851 1

Adjusted for cohort member’s mental health only

HR lower upper p-value E-value
mcs6_sm_per_day 0.998 0.726 1.373 0.99 1

Adjusted for covariates except cohort member’s mental health

HR lower upper p-value E-value
mcs6_sm_per_day 0.89 0.599 1.323 0.562 1

Categorised social media use

Below the outputs from the models with social media use variables categorised (weighted only) are shown. For period 2, a threshold for “high” social media use of 2 hours is used. Results using other thresholds, as well as the estimates for the high social media use group, are suppressed to prevent disclosure.

Period 1

HR lower upper p-value E-value
ECQ09X001 0.749 0.327 1.714 0.492 1
ECQ09X003 0.885 0.319 2.454 0.814 1

Period 2

HR lower upper p-value E-value
mcs6_sm_per_day1 3.462 1.518 7.897 0.004 2.404

1-hour threshold

Suppressed to prevent disclosure.

3-hour threshold

Suppressed to prevent disclosure.

4-hour threshold

Suppressed to prevent disclosure.

Plot

Differential adjustment (categorised social media use)

Below the outputs from the unadjusted and partially adjusted models using categorised social media use variables (weighted only, 2-hour threshold only) are shown.

Period 1

Unadjusted

HR lower upper p-value E-value
ECQ09X001 0.787 0.304 2.034 0.620 1
ECQ09X003 1.273 0.397 4.083 0.684 1

Adjusted for cohort member’s mental health only

HR lower upper p-value E-value
ECQ09X001 0.821 0.316 2.131 0.685 1
ECQ09X003 1.145 0.354 3.702 0.821 1

Adjusted for covariates except cohort member’s mental health

HR lower upper p-value E-value
ECQ09X001 0.754 0.330 1.723 0.503 1
ECQ09X003 0.897 0.323 2.494 0.835 1

Period 2

Unadjusted

HR lower upper p-value E-value
mcs6_sm_per_day1 2.778 1.319 5.85 0.008 1.968

Adjusted for cohort member’s mental health only

HR lower upper p-value E-value
mcs6_sm_per_day1 2.469 1.157 5.265 0.02 1.584

Adjusted for covariates except cohort member’s mental health

HR lower upper p-value E-value
mcs6_sm_per_day1 3.484 1.54 7.879 0.003 2.452

Interaction models

Below the outputs from the models including interaction terms (weighted only) are shown.

Period 1

Sex

HR lower upper p-value E-value
ECQ09X00 1.063 0.643 1.757 0.812 1
AHCSEX00Female 1.009 0.523 1.946 0.980 1
ECQ09X00:AHCSEX00Female 1.131 0.600 2.134 0.703 1

Ethnicity

HR lower upper p-value E-value
ECQ09X00 1.214 0.842 1.751 0.297 1.000
DDC06E00Ethnic minority 0.349 0.125 0.975 0.045 1.188
ECQ09X00:DDC06E00Ethnic minority 0.682 0.338 1.377 0.286 1.000

Income

HR lower upper p-value E-value
ECQ09X00 1.161 0.820 1.643 0.401 1
DDOEDE00 1.078 0.725 1.602 0.712 1
ECQ09X00:DDOEDE00 1.056 0.835 1.336 0.647 1

Prior mental health

HR lower upper p-value E-value
ECQ09X00 1.100 0.769 1.574 0.602 1
DDDEBDTOT 1.140 0.812 1.599 0.450 1
ECQ09X00:DDDEBDTOT 1.085 0.910 1.294 0.360 1

Period 2

Sex

HR lower upper p-value E-value
mcs6_sm_per_day 0.693 0.308 1.558 0.372 1.000
AHCSEX00Female 2.991 1.568 5.705 0.001 2.512
mcs6_sm_per_day:AHCSEX00Female 1.408 0.582 3.409 0.445 1.000

Ethnicity

HR lower upper p-value E-value
mcs6_sm_per_day 0.896 0.578 1.389 0.621 1
DDC06E00Ethnic minority 0.435 0.141 1.342 0.147 1
mcs6_sm_per_day:DDC06E00Ethnic minority 0.730 0.159 3.350 0.682 1

Income

HR lower upper p-value E-value
mcs6_sm_per_day 0.826 0.520 1.311 0.412 1
EOEDE000 0.754 0.518 1.099 0.142 1
mcs6_sm_per_day:EOEDE000 0.885 0.561 1.396 0.596 1

Wealth

HR lower upper p-value E-value
mcs6_sm_per_day 0.754 0.398 1.428 0.381 1.000
mcs5_wealth 0.413 0.192 0.891 0.025 1.493
mcs6_sm_per_day:mcs5_wealth 0.983 0.349 2.765 0.973 1.000

Prior mental health

HR lower upper p-value E-value
mcs6_sm_per_day 0.793 0.508 1.236 0.302 1
EEBDTO_T 1.228 0.878 1.718 0.229 1
mcs6_sm_per_day:EEBDTO_T 0.701 0.444 1.106 0.124 1

Interaction models (categorised social media use)

Below the outputs from the models including interaction terms and with categorised social media use (2-hour threshold only for period 2) are shown (weighted only). Some coefficients are suppressed to prevent disclosure.

Period 1

Sex

HR lower upper p-value E-value
ECQ09X001 0.626 0.210 1.867 0.399 1
ECQ09X003 0.536 0.116 2.486 0.424 1
AHCSEX00Female 0.679 0.171 2.690 0.581 1

Income

HR lower upper p-value E-value
ECQ09X001 0.686 0.327 1.440 0.319 1
ECQ09X003 0.902 0.329 2.475 0.841 1
DDOEDE00 1.084 0.605 1.944 0.785 1
ECQ09X001:DDOEDE00 0.952 0.578 1.566 0.846 1
ECQ09X003:DDOEDE00 1.182 0.554 2.521 0.665 1

Prior mental health

HR lower upper p-value E-value
ECQ09X001 0.823 0.358 1.891 0.645 1
ECQ09X003 0.853 0.274 2.649 0.782 1
DDDEBDTOT 1.263 0.832 1.917 0.273 1
ECQ09X001:DDDEBDTOT 0.836 0.517 1.349 0.462 1
ECQ09X003:DDDEBDTOT 1.038 0.585 1.843 0.898 1

Period 2

Sex

HR lower upper p-value E-value
mcs6_sm_per_day1 9.044 0.671 121.962 0.096 1
AHCSEX00Female 10.371 0.844 127.367 0.067 1

Income

HR lower upper p-value E-value
mcs6_sm_per_day1 2.932 1.188 7.232 0.020 1.661
EOEDE000 0.710 0.304 1.657 0.424 1.000
mcs6_sm_per_day1:EOEDE000 1.122 0.392 3.209 0.828 1.000

Wealth

HR lower upper p-value E-value
mcs6_sm_per_day1 2.976 0.845 10.482 0.089 1
mcs5_wealth 0.513 0.112 2.342 0.382 1
mcs6_sm_per_day1:mcs5_wealth 0.757 0.085 6.735 0.799 1

Prior mental health

HR lower upper p-value E-value
mcs6_sm_per_day1 2.916 1.301 6.539 0.010 1.926
EEBDTO_T 1.348 0.617 2.943 0.448 1.000
mcs6_sm_per_day1:EEBDTO_T 1.078 0.395 2.941 0.881 1.000