Egocentric network analysis script

Set up

Install and load pacman package if not already installed

# Install and load pacman package if not already installed
if (!requireNamespace("pacman", quietly = TRUE)) {
  install.packages("pacman")
}

# Load required packages
pacman::p_load("xfun",
               "tidyverse", 
               "dplyr",
               "psych",
               "multcomp",
               "ggplot2",
               "ggcorrplot",
               "effectsize",
               "ggplot2",
               "lme4",
               "lmerTest",
               "interactions",
               "writexl",
               "broom",
               "broom.mixed",
               "patchwork",
               "gtsummary") #p_load function loads and installs any packages not currently installed

Load data

full_data <- read.csv("full_data.csv") %>% 
  dplyr::select(-X)

Standardise age

full_data <- full_data %>%
  mutate(t1_age = as.numeric(t1_age),
         t1_age_z = scale(t1_age, scale = TRUE))

Demographics

Manual version

country <- count(full_data, country)
gender <- count(full_data, gender)
ethnic <- count(full_data, ethnic)
education <- count(full_data, education)

demographicvars <- full_data %>% 
  dplyr::select(T1_ID, country, gender, ethnic, education)

demographics_table <- bind_rows(
  count(full_data, country) %>%
    mutate(Variable = "country", percent = round(100 * n / sum(n), 1)) %>%
    rename(Category = country),
  count(full_data, gender) %>%
    mutate(Variable = "gender", percent = round(100 * n / sum(n), 1)) %>%
    rename(Category = gender),
  count(full_data, ethnic) %>%
    mutate(Variable = "ethnic", percent = round(100 * n / sum(n), 1)) %>%
    rename(Category = ethnic),
  count(full_data, education) %>%
    mutate(Variable = "education", percent = round(100 * n / sum(n), 1)) %>%
    rename(Category = education)) %>% 
  dplyr::select(Variable, Category, n, percent)

print(demographics_table)
##     Variable                             Category    n percent
## 1    country                                  aus  346    27.1
## 2    country                                   uk  551    43.1
## 3    country                                  usa  381    29.8
## 4     gender                               Female 1131    88.5
## 5     gender                                 Male  129    10.1
## 6     gender                                Other   15     1.2
## 7     gender                    Prefer not to say    3     0.2
## 8     ethnic Aboriginal or Torres Strait Islander    6     0.5
## 9     ethnic                              African   13     1.0
## 10    ethnic                                Asian   65     5.1
## 11    ethnic                            Caucasian 1059    82.9
## 12    ethnic                             Hispanic   26     2.0
## 13    ethnic                                Mixed   40     3.1
## 14    ethnic                                Other   51     4.0
## 15    ethnic                    Prefer not to say   17     1.3
## 16    ethnic                                 <NA>    1     0.1
## 17 education                          High School  261    20.4
## 18 education                       Primary School   16     1.3
## 19 education    Professional/ Vocational training  182    14.2
## 20 education                           University  819    64.1

gtsummary version

table1 <- full_data %>%
  tbl_summary(include = c(t1_age, country, gender, ethnic, education),
              statistic = list(t1_age ~ "{mean} ({sd})"),
              label = list(
                t1_age ~ "Age M(SD)",
                country ~ "Country of Residence",
                gender ~ "Gender",
                ethnic ~ "Ethnicity",
                education ~ "Highest Education Level")) %>% 
  bold_labels()
table1
Characteristic N = 1,2781
Age M(SD) 37 (16)
Country of Residence
    aus 346 (27%)
    uk 551 (43%)
    usa 381 (30%)
Gender
    Female 1,131 (88%)
    Male 129 (10%)
    Other 15 (1.2%)
    Prefer not to say 3 (0.2%)
Ethnicity
    Aboriginal or Torres Strait Islander 6 (0.5%)
    African 13 (1.0%)
    Asian 65 (5.1%)
    Caucasian 1,059 (83%)
    Hispanic 26 (2.0%)
    Mixed 40 (3.1%)
    Other 51 (4.0%)
    Prefer not to say 17 (1.3%)
    Unknown 1
Highest Education Level
    High School 261 (20%)
    Primary School 16 (1.3%)
    Professional/ Vocational training 182 (14%)
    University 819 (64%)
1 Mean (SD); n (%)
# save demographics table
# tbl |> 
#   as_gt() |> 
#   gt::gtsave(filename = ".") # use extensions .png, .html, .docx, .rtf, .tex, .ltx

Descriptive statistics

variables <- c("phq_total", "ucla_loneliness_total", "degree", 
               "transitivity", "closeness", "emotional_support", "density",
               "f2f_freq_current", "phone_freq_current" ,"elec_freq_current",
               "f2f_freq_precovid", "phone_freq_precovid", "elec_freq_precovid")

descriptives <- data.frame(Variable = variables)

for (timepoint in c("t1", "t2", "t3")) {
  means <- sapply(variables, function(v) {
    varname <- paste0(timepoint, "_", v)
    mean(full_data[[varname]], na.rm = TRUE)
  })
  sds <- sapply(variables, function(v) {
    varname <- paste0(timepoint, "_", v)
    sd(full_data[[varname]], na.rm = TRUE)
  })
  
  descriptives[[paste0(timepoint, "_M")]] <- round(means, 2)
  descriptives[[paste0(timepoint, "_SD")]] <- round(sds, 2)
}

print(descriptives)
##                 Variable  t1_M t1_SD  t2_M t2_SD  t3_M t3_SD
## 1              phq_total  9.25  6.28  8.02  6.05  8.12  6.13
## 2  ucla_loneliness_total 25.48 15.70 25.13 16.04 26.88 16.10
## 3                 degree  5.32  1.13  4.78  1.44  4.80  1.43
## 4           transitivity  0.44  0.21  0.46  0.25  0.49  0.25
## 5              closeness  0.75  0.14  0.77  0.14  0.77  0.13
## 6      emotional_support  3.25  1.66  2.91  1.56  2.83  1.47
## 7                density  0.76  0.19  0.78  0.20  0.80  0.20
## 8       f2f_freq_current  1.94  1.07  2.81  0.92  2.89  0.89
## 9     phone_freq_current  2.50  0.98  2.42  1.03  2.31  1.03
## 10     elec_freq_current  2.33  1.05  2.22  1.13  2.17  1.05
## 11     f2f_freq_precovid  2.93  0.69    NA    NA    NA    NA
## 12   phone_freq_precovid  2.68  0.91    NA    NA    NA    NA
## 13    elec_freq_precovid  2.39  1.03    NA    NA    NA    NA

Distribution plots

# Create distribution plots for each variable at each timepoint
variables <- c("phq_total", "ucla_loneliness_total", 
               "density", "degree", "closeness", "emotional_support",
               "f2f_freq_current", "phone_freq_current", "elec_freq_current")

plot_list <- list() %>% 
  lapply(function(x) ggplot() + theme_void())

for (var in variables) {
  for (timepoint in c("t1", "t2", "t3")) {
    varname <- paste0(timepoint, "_", var)
    plot_list[[paste0(var, "_", timepoint)]] <- ggplot(full_data, aes_string(x = varname)) +
      geom_histogram(bins = 30, fill = "blue", alpha = 0.7) +
      labs(title = paste("Distribution of", varname),
           x = varname,
           y = "Frequency") +
      theme_minimal()
  }
}

print(plot_list)
## $phq_total_t1

## 
## $phq_total_t2

## 
## $phq_total_t3

## 
## $ucla_loneliness_total_t1

## 
## $ucla_loneliness_total_t2

## 
## $ucla_loneliness_total_t3

## 
## $density_t1

## 
## $density_t2

## 
## $density_t3

## 
## $degree_t1

## 
## $degree_t2

## 
## $degree_t3

## 
## $closeness_t1

## 
## $closeness_t2

## 
## $closeness_t3

## 
## $emotional_support_t1

## 
## $emotional_support_t2

## 
## $emotional_support_t3

## 
## $f2f_freq_current_t1

## 
## $f2f_freq_current_t2

## 
## $f2f_freq_current_t3

## 
## $phone_freq_current_t1

## 
## $phone_freq_current_t2

## 
## $phone_freq_current_t3

## 
## $elec_freq_current_t1

## 
## $elec_freq_current_t2

## 
## $elec_freq_current_t3

Analysis

H1: Network indices associations

Network measures would be related to each other –> closeness and density would decrease when degree increases ### Correlations

correlation_results <- full_data %>%
  dplyr::select(t1_degree, t1_closeness, t1_emotional_support, t1_density, t1_f2f_freq_current, t1_phone_freq_current, t1_elec_freq_current,
                t2_degree, t2_closeness, t2_emotional_support, t2_density, t2_f2f_freq_current, t2_phone_freq_current, t2_elec_freq_current,
                t3_degree, t3_closeness, t3_emotional_support, t3_density, t3_f2f_freq_current, t3_phone_freq_current, t3_elec_freq_current) %>%
  corr.test(use = "pairwise.complete.obs")
# This code is to create dataframe to produce a correlation plot 

# Extract matrices
r_mat <- correlation_results$r
p_mat <- correlation_results$p
n_mat <- correlation_results$n
ci_low <- correlation_results$ci$lower
ci_up  <- correlation_results$ci$upper

# Convert to long format and merge to create a correlation table
cor_table <- as.data.frame(as.table(r_mat)) %>%
  rename(var1 = Var1, var2 = Var2, r = Freq) %>%
  left_join(as.data.frame(as.table(p_mat)) %>%
              rename(var1 = Var1, var2 = Var2, p = Freq),
            by = c("var1", "var2")) %>%
  left_join(as.data.frame(as.table(n_mat)) %>%
              rename(var1 = Var1, var2 = Var2, n = Freq),
            by = c("var1", "var2")) %>%
  filter(as.character(var1) < as.character(var2))  # Remove duplicates and diagonals

# Create a heatmap of the correlation matrix
# Prepare renamed variable labels
label_map <- c(
  # T1
  t1_degree = "Degree (T1)",
  t1_density = "Density (T1)",
  t1_f2f_freq_current = "Frequency of Contact (Offline; T1)",
  t1_phone_freq_current = "Frequency of Contact (Phone; T1)",
  t1_elec_freq_current = "Frequency of Contact (Online; T1)",
  t1_closeness = "Closeness (T1)",
  t1_emotional_support = "Emotional Support (T1)",
  
  # T2
  t2_degree = "Degree (T2)",
  t2_density = "Density (T2)",
  t2_f2f_freq_current = "Frequency of Contact (Offline; T2)",
  t2_phone_freq_current = "Frequency of Contact (Phone; T2)",
  t2_elec_freq_current = "Frequency of Contact (Online; T2)",
  t2_closeness = "Closeness (T2)",
  t2_emotional_support = "Emotional Support (T2)",
  
  # T3
  t3_degree = "Degree (T3)",
  t3_density = "Density (T3)",
  t3_f2f_freq_current = "Frequency of Contact (Offline; T3)",
  t3_phone_freq_current = "Frequency of Contact (Phone; T3)",
  t3_elec_freq_current = "Frequency of Contact (Online; T3)",
  t3_closeness = "Closeness (T3)",
  t3_emotional_support = "Emotional Support (T3)"
)

# Step 1: Desired order (original variable names)
desired_order <- names(label_map)

# Step 2: Reorder original matrix before renaming
cor_r_ordered <- correlation_results$r[desired_order, desired_order]
cor_p_ordered <- correlation_results$p[desired_order, desired_order]

# Step 3: Rename using label_map
rename_vars <- function(mat, map) {
  rownames(mat) <- map[rownames(mat)]
  colnames(mat) <- map[colnames(mat)]
  mat
}
cor_r_named <- rename_vars(cor_r_ordered, label_map)
cor_p_named <- rename_vars(cor_p_ordered, label_map)
# Plot the correlation matrix
corr_plot <- ggcorrplot(cor_r_named,
           p.mat = cor_p_named,
           sig.level = 0.05,
           insig = "blank",
           method = "circle",
           type = "upper",       # Ensures only upper triangle shown
           lab = TRUE,
           lab_size = 2,
           colors = c("#6D9EC1", "white", "#E46726"),
           tl.col = "black",
           tl.srt = 45,
           outline.col = "gray80",
           ggtheme = ggplot2::theme_minimal(base_size = 12))     # Prevent reordering by clustering

corr_plot

# download plot
ggsave("correlation_plot.png", plot = corr_plot, width = 10, height = 8, dpi = 300)

H2: Network indices across age at baseline

Hypothesis: Network measures would vary as a function of age (T1) Network measures ~ age_continuous

Main model

h2_degree_age <- lm(t1_degree_z ~ t1_age_z, data = full_data)
h2_closeness_age <- lm(t1_closeness_z ~ t1_age_z, data = full_data)
h2_emotional_support_age <- lm(t1_emotional_support_z ~ t1_age_z, data = full_data)
h2_density_age <- lm(t1_density_z ~ t1_age_z, data = full_data)
h2_f2f_freq_current_age <- lm(t1_f2f_freq_current_z ~ t1_age_z, data = full_data)
h2_phone_freq_current_age <- lm(t1_phone_freq_current_z ~ t1_age_z, data = full_data)
h2_elec_freq_current_age <- lm(t1_elec_freq_current_z ~ t1_age_z, data = full_data)

# Summary of models
h2_models <- list(
  degree = h2_degree_age,
  closeness = h2_closeness_age,
  emotional_support = h2_emotional_support_age,
  density = h2_density_age,
  f2f_freq_current = h2_f2f_freq_current_age,
  phone_freq_current = h2_phone_freq_current_age,
  elec_freq_current = h2_elec_freq_current_age
)

# Extracting coefficients and p-values

h2_model_coefs <- lapply(names(h2_models), function(model_name) {
  model <- h2_models[[model_name]]
  
  tidy(model, conf.int = TRUE, conf.level = 0.95) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>% 
    mutate(model = model_name)
})

h2_model_coefs <- bind_rows(h2_model_coefs) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", "")) 

Examine model coefficients

print(h2_model_coefs)
## # A tibble: 7 × 9
##   Variable       B     SE      t         p CI_Lower  CI_Upper model             
##   <chr>      <dbl>  <dbl>  <dbl>     <dbl>    <dbl>     <dbl> <chr>             
## 1 t1_age_z  0.0754 0.0279  2.70  0.00699     0.0207  0.130    degree            
## 2 t1_age_z -0.0194 0.0280 -0.692 0.489      -0.0743  0.0356   closeness         
## 3 t1_age_z  0.113  0.0278  4.07  0.0000509   0.0585  0.168    emotional_support 
## 4 t1_age_z -0.0553 0.0280 -1.98  0.0480     -0.110  -0.000479 density           
## 5 t1_age_z  0.116  0.0278  4.16  0.0000343   0.0611  0.170    f2f_freq_current  
## 6 t1_age_z -0.114  0.0278 -4.09  0.0000453  -0.168  -0.0593   phone_freq_current
## 7 t1_age_z -0.112  0.0278 -4.02  0.0000618  -0.166  -0.0572   elec_freq_current 
##   p.sig
##   <chr>
## 1 "*"  
## 2 ""   
## 3 "*"  
## 4 "*"  
## 5 "*"  
## 6 "*"  
## 7 "*"

Sensitivity analyses

h2_degree_age <- lm(t1_degree_z ~ t1_age_z + country, data = full_data)
h2_closeness_age <- lm(t1_closeness_z ~ t1_age_z + country, data = full_data)
h2_emotional_support_age <- lm(t1_emotional_support_z ~ t1_age_z + country, data = full_data)
h2_density_age <- lm(t1_density_z ~ t1_age_z + country, data = full_data)
h2_f2f_freq_current_age <- lm(t1_f2f_freq_current_z ~ t1_age_z + country, data = full_data)
h2_phone_freq_current_age <- lm(t1_phone_freq_current_z ~ t1_age_z + country, data = full_data)
h2_elec_freq_current_age <- lm(t1_elec_freq_current_z ~ t1_age_z + country, data = full_data)

# Summary of models
h2_senmodels <- list(
  degree = h2_degree_age,
  closeness = h2_closeness_age,
  emotional_support = h2_emotional_support_age,
  density = h2_density_age,
  f2f_freq_current = h2_f2f_freq_current_age,
  phone_freq_current = h2_phone_freq_current_age,
  elec_freq_current = h2_elec_freq_current_age
)

# Extracting coefficients and p-values

h2_senmodel_coefs <- lapply(names(h2_senmodels), function(model_name) {
  model <- h2_senmodels[[model_name]]
  
  tidy(model, conf.int = TRUE, conf.level = 0.95) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>% 
    mutate(model = model_name)
})

h2_senmodel_coefs <- bind_rows(h2_senmodel_coefs) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", "")) 

Examine model coefficients

print(h2_senmodel_coefs)
## # A tibble: 21 × 9
##    Variable          B     SE       t          p CI_Lower  CI_Upper
##    <chr>         <dbl>  <dbl>   <dbl>      <dbl>    <dbl>     <dbl>
##  1 t1_age_z    0.0744  0.0279  2.67   0.00768      0.0197  0.129   
##  2 countryuk   0.0796  0.0683  1.17   0.244       -0.0543  0.214   
##  3 countryusa -0.116   0.0739 -1.57   0.116       -0.261   0.0286  
##  4 t1_age_z   -0.0181  0.0280 -0.646  0.518       -0.0730  0.0368  
##  5 countryuk   0.119   0.0686  1.73   0.0839      -0.0159  0.253   
##  6 countryusa  0.0697  0.0743  0.938  0.349       -0.0761  0.215   
##  7 t1_age_z    0.111   0.0278  4.01   0.0000642    0.0569  0.166   
##  8 countryuk   0.0307  0.0680  0.452  0.651       -0.103   0.164   
##  9 countryusa -0.163   0.0737 -2.21   0.0272      -0.307  -0.0183  
## 10 t1_age_z   -0.0554  0.0279 -1.98   0.0474      -0.110  -0.000634
## 11 countryuk  -0.140   0.0684 -2.04   0.0413      -0.274  -0.00549 
## 12 countryusa  0.0429  0.0740  0.580  0.562       -0.102   0.188   
## 13 t1_age_z    0.114   0.0275  4.16   0.0000336    0.0605  0.168   
## 14 countryuk  -0.315   0.0674 -4.68   0.00000321  -0.447  -0.183   
## 15 countryusa  0.00667 0.0730  0.0915 0.927       -0.136   0.150   
## 16 t1_age_z   -0.114   0.0278 -4.08   0.0000471   -0.168  -0.0591  
## 17 countryuk   0.0344  0.0682  0.504  0.614       -0.0995  0.168   
## 18 countryusa -0.00271 0.0739 -0.0367 0.971       -0.148   0.142   
## 19 t1_age_z   -0.113   0.0278 -4.07   0.0000489   -0.168  -0.0587  
## 20 countryuk   0.0339  0.0681  0.498  0.619       -0.0997  0.167   
## 21 countryusa -0.133   0.0737 -1.81   0.0713      -0.278   0.0116  
##    model              p.sig
##    <chr>              <chr>
##  1 degree             "*"  
##  2 degree             ""   
##  3 degree             ""   
##  4 closeness          ""   
##  5 closeness          ""   
##  6 closeness          ""   
##  7 emotional_support  "*"  
##  8 emotional_support  ""   
##  9 emotional_support  "*"  
## 10 density            "*"  
## 11 density            "*"  
## 12 density            ""   
## 13 f2f_freq_current   "*"  
## 14 f2f_freq_current   "*"  
## 15 f2f_freq_current   ""   
## 16 phone_freq_current "*"  
## 17 phone_freq_current ""   
## 18 phone_freq_current ""   
## 19 elec_freq_current  "*"  
## 20 elec_freq_current  ""   
## 21 elec_freq_current  ""

H3: Association between network indices and wellbeing

Hypothesis: Relationships between the network measures and wellbeing + greater association between functional indices and wellbeing compared to structural indices Wellbeing ~ network measures + age_continuous Cross-sectionally: T1, T2, T3 separately

Structural & Functional

# Defining network indices and timepoints
network_indices <- c("density_z", "closeness_z")

timepoints <- c("t1", "t2", "t3")

Main model

Depression
# Prepare results list
phq_results <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    phq_results[[i]] <- tidy_model
    i <- i + 1
  }

phq_results_df <- bind_rows(phq_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

phq_fdr_results_df <- phq_results_df %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )
print(phq_fdr_results_df)
## # A tibble: 9 × 13
##   Variable                          B    SE      t         p CI_Lower CI_Upper
##   <chr>                         <dbl> <dbl>  <dbl>     <dbl>    <dbl>    <dbl>
## 1 t1_density_z                -0.209  0.188 -1.11  0.268       -0.578   0.161 
## 2 t1_closeness_z              -0.793  0.192 -4.14  0.0000370   -1.17   -0.417 
## 3 t1_density_z:t1_closeness_z -0.212  0.151 -1.41  0.159       -0.508   0.0834
## 4 t2_density_z                -0.123  0.345 -0.356 0.722       -0.801   0.555 
## 5 t2_closeness_z              -0.932  0.352 -2.65  0.00839     -1.62   -0.241 
## 6 t2_density_z:t2_closeness_z -0.211  0.271 -0.777 0.438       -0.745   0.323 
## 7 t3_density_z                -0.120  0.396 -0.304 0.761       -0.899   0.658 
## 8 t3_closeness_z              -0.686  0.399 -1.72  0.0868      -1.47    0.0997
## 9 t3_density_z:t3_closeness_z  0.0543 0.329  0.165 0.869       -0.594   0.703 
##   outcome      predictor                     timepoint p.sig     FDRp FDRp.sig
##   <chr>        <chr>                         <chr>     <chr>    <dbl> <chr>   
## 1 t1_phq_total t1_density_z * t1_closeness_z t1        ""    0.482    ""      
## 2 t1_phq_total t1_density_z * t1_closeness_z t1        "*"   0.000333 "*"     
## 3 t1_phq_total t1_density_z * t1_closeness_z t1        ""    0.358    ""      
## 4 t2_phq_total t2_density_z * t2_closeness_z t2        ""    0.856    ""      
## 5 t2_phq_total t2_density_z * t2_closeness_z t2        "*"   0.0377   "*"     
## 6 t2_phq_total t2_density_z * t2_closeness_z t2        ""    0.656    ""      
## 7 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.856    ""      
## 8 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.260    ""      
## 9 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.869    ""
Loneliness
# Prepare results list
ucla_results <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    ucla_results[[i]] <- tidy_model
    i <- i + 1
  }

ucla_results_df <- bind_rows(ucla_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

ucla_fdr_results_df <- ucla_results_df %>%
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(ucla_fdr_results_df)
## # A tibble: 9 × 13
##   Variable                         B    SE      t           p CI_Lower CI_Upper
##   <chr>                        <dbl> <dbl>  <dbl>       <dbl>    <dbl>    <dbl>
## 1 t1_density_z                -1.03  0.466 -2.21  0.0273        -1.95    -0.116
## 2 t1_closeness_z              -2.46  0.475 -5.19  0.000000247   -3.39    -1.53 
## 3 t1_density_z:t1_closeness_z -0.842 0.374 -2.25  0.0243        -1.58    -0.109
## 4 t2_density_z                -0.432 0.897 -0.482 0.630         -2.20     1.33 
## 5 t2_closeness_z              -3.89  0.915 -4.25  0.0000272     -5.69    -2.09 
## 6 t2_density_z:t2_closeness_z -1.02  0.706 -1.44  0.150         -2.41     0.371
## 7 t3_density_z                 1.91  1.03   1.85  0.0653        -0.121    3.93 
## 8 t3_closeness_z              -3.05  1.04  -2.93  0.00362       -5.10    -1.00 
## 9 t3_density_z:t3_closeness_z  0.860 0.858  1.00  0.317         -0.828    2.55 
##   outcome                  predictor                     timepoint p.sig
##   <chr>                    <chr>                         <chr>     <chr>
## 1 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
## 2 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
## 3 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
## 4 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        ""   
## 5 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        "*"  
## 6 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        ""   
## 7 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        ""   
## 8 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 9 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        ""   
##          FDRp FDRp.sig
##         <dbl> <chr>   
## 1 0.0273      "*"     
## 2 0.000000740 "*"     
## 3 0.0273      "*"     
## 4 0.630       ""      
## 5 0.0000817   "*"     
## 6 0.225       ""      
## 7 0.0979      ""      
## 8 0.0109      "*"     
## 9 0.317       ""

Sensitivity analyses

Depression
# Prepare results list
phq_senresults <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z + country + ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    phq_senresults[[i]] <- tidy_model
    i <- i + 1
  }

phq_senresults_df <- bind_rows(phq_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

phq_fdr_senresults_df <- phq_senresults_df %>%
  #filter(str_detect(Variable, paste(network_indices, collapse = "|"))) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )
print(phq_fdr_senresults_df)
## # A tibble: 18 × 13
##    Variable                          B    SE       t        p CI_Lower CI_Upper
##    <chr>                         <dbl> <dbl>   <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_age_z                    -1.84   0.166 -11.1   2.63e-27 -2.17      -1.52 
##  2 countryuk                    1.74   0.407   4.26  2.16e- 5  0.938      2.54 
##  3 countryusa                   1.04   0.440   2.35  1.87e- 2  0.172      1.90 
##  4 t1_density_z                -0.240  0.180  -1.34  1.82e- 1 -0.593      0.113
##  5 t1_closeness_z              -0.816  0.182  -4.48  8.26e- 6 -1.17      -0.458
##  6 t1_density_z:t1_closeness_z -0.0835 0.144  -0.581 5.61e- 1 -0.366      0.198
##  7 t1_age_z                    -2.16   0.275  -7.85  4.79e-14 -2.70      -1.62 
##  8 countryuk                    2.60   0.724   3.59  3.82e- 4  1.17       4.02 
##  9 countryusa                   1.14   0.721   1.58  1.16e- 1 -0.281      2.55 
## 10 t2_density_z                 0.0689 0.315   0.218 8.27e- 1 -0.551      0.689
## 11 t2_closeness_z              -1.05   0.321  -3.25  1.24e- 3 -1.68      -0.414
## 12 t2_density_z:t2_closeness_z  0.0413 0.249   0.166 8.69e- 1 -0.449      0.532
## 13 t1_age_z                    -2.05   0.311  -6.60  1.92e-10 -2.66      -1.44 
## 14 countryuk                    3.29   0.819   4.02  7.41e- 5  1.68       4.90 
## 15 countryusa                   1.65   0.836   1.98  4.90e- 2  0.00741    3.30 
## 16 t3_density_z                -0.0365 0.362  -0.101 9.20e- 1 -0.750      0.677
## 17 t3_closeness_z              -0.914  0.366  -2.49  1.32e- 2 -1.63      -0.193
## 18 t3_density_z:t3_closeness_z  0.0545 0.301   0.181 8.56e- 1 -0.537      0.646
##    outcome      predictor                     timepoint p.sig     FDRp FDRp.sig
##    <chr>        <chr>                         <chr>     <chr>    <dbl> <chr>   
##  1 t1_phq_total t1_density_z * t1_closeness_z t1        "*"   4.74e-26 "*"     
##  2 t1_phq_total t1_density_z * t1_closeness_z t1        "*"   7.77e- 5 "*"     
##  3 t1_phq_total t1_density_z * t1_closeness_z t1        "*"   3.37e- 2 "*"     
##  4 t1_phq_total t1_density_z * t1_closeness_z t1        ""    2.52e- 1 ""      
##  5 t1_phq_total t1_density_z * t1_closeness_z t1        "*"   3.72e- 5 "*"     
##  6 t1_phq_total t1_density_z * t1_closeness_z t1        ""    7.22e- 1 ""      
##  7 t2_phq_total t2_density_z * t2_closeness_z t2        "*"   4.31e-13 "*"     
##  8 t2_phq_total t2_density_z * t2_closeness_z t2        "*"   9.83e- 4 "*"     
##  9 t2_phq_total t2_density_z * t2_closeness_z t2        ""    1.74e- 1 ""      
## 10 t2_phq_total t2_density_z * t2_closeness_z t2        ""    9.20e- 1 ""      
## 11 t2_phq_total t2_density_z * t2_closeness_z t2        "*"   2.80e- 3 "*"     
## 12 t2_phq_total t2_density_z * t2_closeness_z t2        ""    9.20e- 1 ""      
## 13 t3_phq_total t3_density_z * t3_closeness_z t3        "*"   1.15e- 9 "*"     
## 14 t3_phq_total t3_density_z * t3_closeness_z t3        "*"   2.22e- 4 "*"     
## 15 t3_phq_total t3_density_z * t3_closeness_z t3        "*"   8.02e- 2 ""      
## 16 t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.20e- 1 ""      
## 17 t3_phq_total t3_density_z * t3_closeness_z t3        "*"   2.63e- 2 "*"     
## 18 t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.20e- 1 ""
Loneliness
# Prepare results list
ucla_senresults <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z + country + ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    ucla_senresults[[i]] <- tidy_model
    i <- i + 1
  }

ucla_senresults_df <- bind_rows(ucla_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

ucla_fdr_senresults_df <- ucla_senresults_df %>%
  #filter(str_detect(Variable, paste(network_indices, collapse = "|"))) %>%
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(ucla_fdr_senresults_df)
## # A tibble: 18 × 13
##    Variable                          B    SE       t        p CI_Lower CI_Upper
##    <chr>                         <dbl> <dbl>   <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_age_z                    -3.67   0.420 -8.73   7.93e-18   -4.49    -2.85 
##  2 countryuk                    3.03   1.03   2.94   3.31e- 3    1.01     5.05 
##  3 countryusa                   3.39   1.11   3.05   2.35e- 3    1.21     5.57 
##  4 t1_density_z                -1.16   0.454 -2.56   1.07e- 2   -2.05    -0.270
##  5 t1_closeness_z              -2.48   0.461 -5.38   8.66e- 8   -3.38    -1.58 
##  6 t1_density_z:t1_closeness_z -0.609  0.363 -1.68   9.40e- 2   -1.32     0.104
##  7 t1_age_z                    -4.52   0.739 -6.12   2.50e- 9   -5.97    -3.07 
##  8 countryuk                    5.21   1.94   2.68   7.68e- 3    1.39     9.04 
##  9 countryusa                   4.94   1.94   2.55   1.12e- 2    1.13     8.75 
## 10 t2_density_z                -0.0400 0.847 -0.0473 9.62e- 1   -1.71     1.63 
## 11 t2_closeness_z              -4.11   0.863 -4.76   2.80e- 6   -5.81    -2.41 
## 12 t2_density_z:t2_closeness_z -0.483  0.670 -0.722  4.71e- 1   -1.80     0.834
## 13 t1_age_z                    -4.45   0.827 -5.38   1.53e- 7   -6.08    -2.82 
## 14 countryuk                    8.59   2.18   3.94   1.01e- 4    4.30    12.9  
## 15 countryusa                   5.53   2.22   2.49   1.35e- 2    1.15     9.91 
## 16 t3_density_z                 2.07   0.965  2.15   3.23e- 2    0.176    3.97 
## 17 t3_closeness_z              -3.61   0.975 -3.71   2.51e- 4   -5.53    -1.69 
## 18 t3_density_z:t3_closeness_z  0.855  0.800  1.07   2.86e- 1   -0.719    2.43 
##    outcome                  predictor                     timepoint p.sig
##    <chr>                    <chr>                         <chr>     <chr>
##  1 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
##  2 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
##  3 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
##  4 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
##  5 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        "*"  
##  6 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1        ""   
##  7 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        "*"  
##  8 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        "*"  
##  9 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        "*"  
## 10 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        ""   
## 11 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        "*"  
## 12 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2        ""   
## 13 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 14 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 15 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 16 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 17 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        "*"  
## 18 t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3        ""   
##        FDRp FDRp.sig
##       <dbl> <chr>   
##  1 4.76e-17 "*"     
##  2 4.97e- 3 "*"     
##  3 4.70e- 3 "*"     
##  4 1.28e- 2 "*"     
##  5 2.60e- 7 "*"     
##  6 9.40e- 2 ""      
##  7 1.50e- 8 "*"     
##  8 1.54e- 2 "*"     
##  9 1.68e- 2 "*"     
## 10 9.62e- 1 ""      
## 11 8.40e- 6 "*"     
## 12 5.65e- 1 ""      
## 13 9.19e- 7 "*"     
## 14 3.03e- 4 "*"     
## 15 2.02e- 2 "*"     
## 16 3.88e- 2 "*"     
## 17 5.01e- 4 "*"     
## 18 2.86e- 1 ""

Contact Frequency

# Defining network indices and timepoints
freq_indices <- c("f2f_freq_current_z", "phone_freq_current_z", "elec_freq_current_z")

timepoints <- c("t1", "t2", "t3")

Main model

Depression
# Prepare results list
phq_results <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
  for (freq in freq_indices) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_var <- paste0(tp, "_", freq)
    
    formula <- as.formula(paste0(outcome_var, " ~ ", predictor_var))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_var,
             timepoint = tp)
    
    phq_results[[i]] <- tidy_model
    i <- i + 1
  }
}

phq_results_df <- bind_rows(phq_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

phq_fdr_results_df <- phq_results_df %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )
print(phq_fdr_results_df)
## # A tibble: 9 × 13
##   Variable                      B    SE       t        p CI_Lower CI_Upper
##   <chr>                     <dbl> <dbl>   <dbl>    <dbl>    <dbl>    <dbl>
## 1 t1_f2f_freq_current_z   -0.635  0.175 -3.63   0.000296  -0.978    -0.292
## 2 t1_phone_freq_current_z -0.0389 0.176 -0.221  0.825     -0.384     0.306
## 3 t1_elec_freq_current_z   0.369  0.176  2.10   0.0359     0.0244    0.713
## 4 t2_f2f_freq_current_z   -0.496  0.320 -1.55   0.122     -1.13      0.134
## 5 t2_phone_freq_current_z  0.306  0.315  0.972  0.332     -0.313     0.924
## 6 t2_elec_freq_current_z   0.700  0.316  2.21   0.0275     0.0780    1.32 
## 7 t3_f2f_freq_current_z   -0.0293 0.372 -0.0788 0.937     -0.762     0.703
## 8 t3_phone_freq_current_z  0.0751 0.348  0.216  0.829     -0.611     0.761
## 9 t3_elec_freq_current_z   0.117  0.362  0.323  0.747     -0.595     0.829
##   outcome      predictor               timepoint p.sig    FDRp FDRp.sig
##   <chr>        <chr>                   <chr>     <chr>   <dbl> <chr>   
## 1 t1_phq_total t1_f2f_freq_current_z   t1        "*"   0.00266 "*"     
## 2 t1_phq_total t1_phone_freq_current_z t1        ""    0.933   ""      
## 3 t1_phq_total t1_elec_freq_current_z  t1        "*"   0.108   ""      
## 4 t2_phq_total t2_f2f_freq_current_z   t2        ""    0.275   ""      
## 5 t2_phq_total t2_phone_freq_current_z t2        ""    0.597   ""      
## 6 t2_phq_total t2_elec_freq_current_z  t2        "*"   0.108   ""      
## 7 t3_phq_total t3_f2f_freq_current_z   t3        ""    0.937   ""      
## 8 t3_phq_total t3_phone_freq_current_z t3        ""    0.933   ""      
## 9 t3_phq_total t3_elec_freq_current_z  t3        ""    0.933   ""
Loneliness
# Prepare results list
ucla_results <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
  for (freq in freq_indices) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_var <- paste0(tp, "_", freq)
    
    formula <- as.formula(paste0(outcome_var, " ~ ", predictor_var))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_var,
             timepoint = tp)
    
    ucla_results[[i]] <- tidy_model
    i <- i + 1
  }
}

ucla_results_df <- bind_rows(ucla_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

ucla_fdr_results_df <- ucla_results_df %>%
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(ucla_fdr_results_df)
## # A tibble: 9 × 13
##   Variable                     B    SE      t          p CI_Lower CI_Upper
##   <chr>                    <dbl> <dbl>  <dbl>      <dbl>    <dbl>    <dbl>
## 1 t1_f2f_freq_current_z   -1.95  0.436 -4.46  0.00000888   -2.80   -1.09  
## 2 t1_phone_freq_current_z -0.609 0.439 -1.39  0.165        -1.47    0.252 
## 3 t1_elec_freq_current_z   0.348 0.439  0.792 0.428        -0.514   1.21  
## 4 t2_f2f_freq_current_z   -1.72  0.847 -2.03  0.0429       -3.39   -0.0554
## 5 t2_phone_freq_current_z -0.710 0.834 -0.850 0.396        -2.35    0.931 
## 6 t2_elec_freq_current_z   0.701 0.844  0.831 0.407        -0.958   2.36  
## 7 t3_f2f_freq_current_z    0.229 0.978  0.234 0.815        -1.70    2.15  
## 8 t3_phone_freq_current_z  0.613 0.915  0.670 0.504        -1.19    2.41  
## 9 t3_elec_freq_current_z   0.447 0.951  0.470 0.639        -1.42    2.32  
##   outcome                  predictor               timepoint p.sig      FDRp
##   <chr>                    <chr>                   <chr>     <chr>     <dbl>
## 1 t1_ucla_loneliness_total t1_f2f_freq_current_z   t1        "*"   0.0000266
## 2 t1_ucla_loneliness_total t1_phone_freq_current_z t1        ""    0.248    
## 3 t1_ucla_loneliness_total t1_elec_freq_current_z  t1        ""    0.428    
## 4 t2_ucla_loneliness_total t2_f2f_freq_current_z   t2        "*"   0.129    
## 5 t2_ucla_loneliness_total t2_phone_freq_current_z t2        ""    0.407    
## 6 t2_ucla_loneliness_total t2_elec_freq_current_z  t2        ""    0.407    
## 7 t3_ucla_loneliness_total t3_f2f_freq_current_z   t3        ""    0.815    
## 8 t3_ucla_loneliness_total t3_phone_freq_current_z t3        ""    0.815    
## 9 t3_ucla_loneliness_total t3_elec_freq_current_z  t3        ""    0.815    
##   FDRp.sig
##   <chr>   
## 1 "*"     
## 2 ""      
## 3 ""      
## 4 ""      
## 5 ""      
## 6 ""      
## 7 ""      
## 8 ""      
## 9 ""

Sensitivity analyses

Depression
# Prepare results list
phq_senresults <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
  for (freq in freq_indices) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_var <- paste0(tp, "_", freq)
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z + country + ", predictor_var))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_var,
             timepoint = tp)
    
    phq_senresults[[i]] <- tidy_model
    i <- i + 1
  }
}

phq_senresults_df <- bind_rows(phq_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

phq_fdr_senresults_df <- phq_senresults_df %>%
  #filter(str_detect(Variable, paste(network_indices, collapse = "|"))) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )
print(phq_fdr_senresults_df)
## # A tibble: 36 × 13
##    Variable                      B    SE        t        p CI_Lower CI_Upper
##    <chr>                     <dbl> <dbl>    <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_age_z                -1.79   0.168 -10.6    2.82e-25  -2.12    -1.46  
##  2 countryuk                1.56   0.413   3.79   1.60e- 4   0.753    2.37  
##  3 countryusa               0.961  0.443   2.17   3.04e- 2   0.0913   1.83  
##  4 t1_f2f_freq_current_z   -0.345  0.170  -2.02   4.32e- 2  -0.679   -0.0106
##  5 t1_age_z                -1.85   0.168 -11.0    4.84e-27  -2.18    -1.52  
##  6 countryuk                1.68   0.410   4.10   4.34e- 5   0.877    2.49  
##  7 countryusa               0.958  0.444   2.16   3.10e- 2   0.0877   1.83  
##  8 t1_phone_freq_current_z -0.262  0.168  -1.56   1.20e- 1  -0.592    0.0680
##  9 t1_age_z                -1.81   0.168 -10.7    8.61e-26  -2.14    -1.48  
## 10 countryuk                1.67   0.410   4.07   5.09e- 5   0.863    2.47  
## 11 countryusa               0.979  0.445   2.20   2.78e- 2   0.107    1.85  
## 12 t1_elec_freq_current_z   0.154  0.169   0.912  3.62e- 1  -0.177    0.485 
## 13 t1_age_z                -2.14   0.276  -7.75   9.83e-14  -2.68    -1.60  
## 14 countryuk                2.48   0.728   3.41   7.25e- 4   1.05     3.92  
## 15 countryusa               0.963  0.729   1.32   1.87e- 1  -0.471    2.40  
## 16 t2_f2f_freq_current_z   -0.518  0.295  -1.75   8.02e- 2  -1.10     0.0626
## 17 t1_age_z                -2.13   0.278  -7.69   1.44e-13  -2.68    -1.59  
## 18 countryuk                2.42   0.731   3.31   1.02e- 3   0.983    3.86  
## 19 countryusa               1.01   0.735   1.38   1.69e- 1  -0.432    2.46  
## 20 t2_phone_freq_current_z  0.143  0.291   0.491  6.23e- 1  -0.430    0.716 
## 21 t1_age_z                -2.10   0.282  -7.44   7.51e-13  -2.66    -1.55  
## 22 countryuk                2.41   0.731   3.29   1.09e- 3   0.970    3.84  
## 23 countryusa               1.05   0.730   1.44   1.52e- 1  -0.387    2.48  
## 24 t2_elec_freq_current_z   0.223  0.298   0.751  4.53e- 1  -0.362    0.809 
## 25 t1_age_z                -2.03   0.314  -6.47   3.98e-10  -2.65    -1.41  
## 26 countryuk                3.08   0.823   3.75   2.16e- 4   1.46     4.70  
## 27 countryusa               1.45   0.841   1.73   8.50e- 2  -0.202    3.11  
## 28 t3_f2f_freq_current_z   -0.0185 0.342  -0.0542 9.57e- 1  -0.692    0.655 
## 29 t1_age_z                -2.04   0.313  -6.50   3.34e-10  -2.65    -1.42  
## 30 countryuk                3.15   0.825   3.82   1.61e- 4   1.53     4.78  
## 31 countryusa               1.43   0.840   1.71   8.92e- 2  -0.221    3.09  
## 32 t3_phone_freq_current_z  0.270  0.323   0.836  4.04e- 1  -0.366    0.906 
## 33 t1_age_z                -2.03   0.314  -6.47   3.92e-10  -2.65    -1.41  
## 34 countryuk                3.08   0.823   3.74   2.17e- 4   1.46     4.70  
## 35 countryusa               1.46   0.841   1.74   8.38e- 2  -0.196    3.11  
## 36 t3_elec_freq_current_z   0.0807 0.332   0.243  8.08e- 1  -0.573    0.735 
##    outcome      predictor               timepoint p.sig     FDRp FDRp.sig
##    <chr>        <chr>                   <chr>     <chr>    <dbl> <chr>   
##  1 t1_phq_total t1_f2f_freq_current_z   t1        "*"   3.39e-24 "*"     
##  2 t1_phq_total t1_f2f_freq_current_z   t1        "*"   4.46e- 4 "*"     
##  3 t1_phq_total t1_f2f_freq_current_z   t1        "*"   5.31e- 2 ""      
##  4 t1_phq_total t1_f2f_freq_current_z   t1        "*"   7.07e- 2 ""      
##  5 t1_phq_total t1_phone_freq_current_z t1        "*"   1.74e-25 "*"     
##  6 t1_phq_total t1_phone_freq_current_z t1        "*"   1.56e- 4 "*"     
##  7 t1_phq_total t1_phone_freq_current_z t1        "*"   5.31e- 2 ""      
##  8 t1_phq_total t1_phone_freq_current_z t1        ""    1.59e- 1 ""      
##  9 t1_phq_total t1_elec_freq_current_z  t1        "*"   1.55e-24 "*"     
## 10 t1_phq_total t1_elec_freq_current_z  t1        "*"   1.66e- 4 "*"     
## 11 t1_phq_total t1_elec_freq_current_z  t1        "*"   5.26e- 2 ""      
## 12 t1_phq_total t1_elec_freq_current_z  t1        ""    4.20e- 1 ""      
## 13 t2_phq_total t2_f2f_freq_current_z   t2        "*"   8.85e-13 "*"     
## 14 t2_phq_total t2_f2f_freq_current_z   t2        "*"   1.63e- 3 "*"     
## 15 t2_phq_total t2_f2f_freq_current_z   t2        ""    2.25e- 1 ""      
## 16 t2_phq_total t2_f2f_freq_current_z   t2        ""    1.22e- 1 ""      
## 17 t2_phq_total t2_phone_freq_current_z t2        "*"   1.04e-12 "*"     
## 18 t2_phq_total t2_phone_freq_current_z t2        "*"   2.16e- 3 "*"     
## 19 t2_phq_total t2_phone_freq_current_z t2        ""    2.10e- 1 ""      
## 20 t2_phq_total t2_phone_freq_current_z t2        ""    6.60e- 1 ""      
## 21 t2_phq_total t2_elec_freq_current_z  t2        "*"   4.51e-12 "*"     
## 22 t2_phq_total t2_elec_freq_current_z  t2        "*"   2.18e- 3 "*"     
## 23 t2_phq_total t2_elec_freq_current_z  t2        ""    1.95e- 1 ""      
## 24 t2_phq_total t2_elec_freq_current_z  t2        ""    4.95e- 1 ""      
## 25 t3_phq_total t3_f2f_freq_current_z   t3        "*"   1.59e- 9 "*"     
## 26 t3_phq_total t3_f2f_freq_current_z   t3        "*"   5.20e- 4 "*"     
## 27 t3_phq_total t3_f2f_freq_current_z   t3        ""    1.22e- 1 ""      
## 28 t3_phq_total t3_f2f_freq_current_z   t3        ""    9.57e- 1 ""      
## 29 t3_phq_total t3_phone_freq_current_z t3        "*"   1.59e- 9 "*"     
## 30 t3_phq_total t3_phone_freq_current_z t3        "*"   4.46e- 4 "*"     
## 31 t3_phq_total t3_phone_freq_current_z t3        ""    1.24e- 1 ""      
## 32 t3_phq_total t3_phone_freq_current_z t3        ""    4.55e- 1 ""      
## 33 t3_phq_total t3_elec_freq_current_z  t3        "*"   1.59e- 9 "*"     
## 34 t3_phq_total t3_elec_freq_current_z  t3        "*"   5.20e- 4 "*"     
## 35 t3_phq_total t3_elec_freq_current_z  t3        ""    1.22e- 1 ""      
## 36 t3_phq_total t3_elec_freq_current_z  t3        ""    8.32e- 1 ""
Loneliness
# Prepare results list
ucla_senresults <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
  for (freq in freq_indices) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_var <- paste0(tp, "_", freq)
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z + country + ", predictor_var))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_var,
             timepoint = tp)
    
    ucla_senresults[[i]] <- tidy_model
    i <- i + 1
  }
}

ucla_senresults_df <- bind_rows(ucla_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

ucla_fdr_senresults_df <- ucla_senresults_df %>%
  #filter(str_detect(Variable, paste(network_indices, collapse = "|"))) %>%
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(ucla_fdr_senresults_df)
## # A tibble: 36 × 13
##    Variable                      B    SE       t        p CI_Lower CI_Upper
##    <chr>                     <dbl> <dbl>   <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_age_z                -3.46   0.427 -8.09   1.36e-15   -4.30   -2.62  
##  2 countryuk                2.42   1.05   2.30   2.14e- 2    0.359   4.47  
##  3 countryusa               3.11   1.13   2.76   5.86e- 3    0.899   5.32  
##  4 t1_f2f_freq_current_z   -1.48   0.432 -3.43   6.34e- 4   -2.33   -0.633 
##  5 t1_age_z                -3.75   0.428 -8.75   6.57e-18   -4.59   -2.91  
##  6 countryuk                2.92   1.04   2.80   5.16e- 3    0.875   4.97  
##  7 countryusa               3.10   1.13   2.74   6.18e- 3    0.881   5.31  
##  8 t1_phone_freq_current_z -1.05   0.428 -2.46   1.41e- 2   -1.89   -0.212 
##  9 t1_age_z                -3.63   0.429 -8.46   7.13e-17   -4.47   -2.79  
## 10 countryuk                2.89   1.04   2.76   5.84e- 3    0.835   4.94  
## 11 countryusa               3.09   1.13   2.73   6.40e- 3    0.871   5.32  
## 12 t1_elec_freq_current_z  -0.0370 0.430 -0.0861 9.31e- 1   -0.880   0.806 
## 13 t1_age_z                -4.52   0.755 -5.98   5.33e- 9   -6.00   -3.03  
## 14 countryuk                4.87   1.99   2.44   1.50e- 2    0.950   8.79  
## 15 countryusa               4.41   2.00   2.21   2.77e- 2    0.486   8.33  
## 16 t2_f2f_freq_current_z   -1.62   0.808 -2.00   4.61e- 2   -3.21   -0.0285
## 17 t1_age_z                -4.61   0.758 -6.08   3.13e- 9   -6.10   -3.12  
## 18 countryuk                4.76   2.00   2.38   1.76e- 2    0.833   8.68  
## 19 countryusa               5.05   2.01   2.52   1.22e- 2    1.11    9.00  
## 20 t2_phone_freq_current_z -1.25   0.796 -1.57   1.18e- 1   -2.81    0.318 
## 21 t1_age_z                -4.60   0.774 -5.94   6.83e- 9   -6.12   -3.07  
## 22 countryuk                4.73   2.00   2.36   1.88e- 2    0.787   8.66  
## 23 countryusa               4.70   2.00   2.35   1.93e- 2    0.769   8.64  
## 24 t2_elec_freq_current_z  -0.339  0.816 -0.416  6.78e- 1   -1.94    1.27  
## 25 t1_age_z                -4.38   0.845 -5.18   4.11e- 7   -6.04   -2.71  
## 26 countryuk                7.76   2.22   3.50   5.38e- 4    3.40   12.1   
## 27 countryusa               5.15   2.27   2.27   2.38e- 2    0.690   9.61  
## 28 t3_f2f_freq_current_z    0.285  0.921  0.309  7.57e- 1   -1.53    2.10  
## 29 t1_age_z                -4.41   0.843 -5.23   3.16e- 7   -6.07   -2.75  
## 30 countryuk                7.97   2.22   3.59   3.83e- 4    3.61   12.3   
## 31 countryusa               5.03   2.26   2.22   2.68e- 2    0.580   9.48  
## 32 t3_phone_freq_current_z  1.01   0.869  1.17   2.44e- 1   -0.696   2.72  
## 33 t1_age_z                -4.39   0.845 -5.19   3.85e- 7   -6.05   -2.72  
## 34 countryuk                7.69   2.21   3.47   5.91e- 4    3.33   12.0   
## 35 countryusa               5.13   2.26   2.27   2.42e- 2    0.673   9.58  
## 36 t3_elec_freq_current_z   0.379  0.895  0.423  6.73e- 1   -1.38    2.14  
##    outcome                  predictor               timepoint p.sig     FDRp
##    <chr>                    <chr>                   <chr>     <chr>    <dbl>
##  1 t1_ucla_loneliness_total t1_f2f_freq_current_z   t1        "*"   5.44e-15
##  2 t1_ucla_loneliness_total t1_f2f_freq_current_z   t1        "*"   2.33e- 2
##  3 t1_ucla_loneliness_total t1_f2f_freq_current_z   t1        "*"   8.54e- 3
##  4 t1_ucla_loneliness_total t1_f2f_freq_current_z   t1        "*"   1.90e- 3
##  5 t1_ucla_loneliness_total t1_phone_freq_current_z t1        "*"   7.89e-17
##  6 t1_ucla_loneliness_total t1_phone_freq_current_z t1        "*"   8.54e- 3
##  7 t1_ucla_loneliness_total t1_phone_freq_current_z t1        "*"   8.54e- 3
##  8 t1_ucla_loneliness_total t1_phone_freq_current_z t1        "*"   1.70e- 2
##  9 t1_ucla_loneliness_total t1_elec_freq_current_z  t1        "*"   4.28e-16
## 10 t1_ucla_loneliness_total t1_elec_freq_current_z  t1        "*"   8.54e- 3
## 11 t1_ucla_loneliness_total t1_elec_freq_current_z  t1        "*"   8.54e- 3
## 12 t1_ucla_loneliness_total t1_elec_freq_current_z  t1        ""    9.31e- 1
## 13 t2_ucla_loneliness_total t2_f2f_freq_current_z   t2        "*"   2.73e- 8
## 14 t2_ucla_loneliness_total t2_f2f_freq_current_z   t2        "*"   2.89e- 2
## 15 t2_ucla_loneliness_total t2_f2f_freq_current_z   t2        "*"   3.70e- 2
## 16 t2_ucla_loneliness_total t2_f2f_freq_current_z   t2        "*"   5.53e- 2
## 17 t2_ucla_loneliness_total t2_phone_freq_current_z t2        "*"   2.73e- 8
## 18 t2_ucla_loneliness_total t2_phone_freq_current_z t2        "*"   2.89e- 2
## 19 t2_ucla_loneliness_total t2_phone_freq_current_z t2        "*"   2.89e- 2
## 20 t2_ucla_loneliness_total t2_phone_freq_current_z t2        ""    1.29e- 1
## 21 t2_ucla_loneliness_total t2_elec_freq_current_z  t2        "*"   2.73e- 8
## 22 t2_ucla_loneliness_total t2_elec_freq_current_z  t2        "*"   2.89e- 2
## 23 t2_ucla_loneliness_total t2_elec_freq_current_z  t2        "*"   2.89e- 2
## 24 t2_ucla_loneliness_total t2_elec_freq_current_z  t2        ""    6.78e- 1
## 25 t3_ucla_loneliness_total t3_f2f_freq_current_z   t3        "*"   1.65e- 6
## 26 t3_ucla_loneliness_total t3_f2f_freq_current_z   t3        "*"   1.18e- 3
## 27 t3_ucla_loneliness_total t3_f2f_freq_current_z   t3        "*"   3.58e- 2
## 28 t3_ucla_loneliness_total t3_f2f_freq_current_z   t3        ""    7.57e- 1
## 29 t3_ucla_loneliness_total t3_phone_freq_current_z t3        "*"   1.65e- 6
## 30 t3_ucla_loneliness_total t3_phone_freq_current_z t3        "*"   1.15e- 3
## 31 t3_ucla_loneliness_total t3_phone_freq_current_z t3        "*"   3.58e- 2
## 32 t3_ucla_loneliness_total t3_phone_freq_current_z t3        ""    2.93e- 1
## 33 t3_ucla_loneliness_total t3_elec_freq_current_z  t3        "*"   1.65e- 6
## 34 t3_ucla_loneliness_total t3_elec_freq_current_z  t3        "*"   1.18e- 3
## 35 t3_ucla_loneliness_total t3_elec_freq_current_z  t3        "*"   3.58e- 2
## 36 t3_ucla_loneliness_total t3_elec_freq_current_z  t3        ""    7.34e- 1
##    FDRp.sig
##    <chr>   
##  1 "*"     
##  2 "*"     
##  3 "*"     
##  4 "*"     
##  5 "*"     
##  6 "*"     
##  7 "*"     
##  8 "*"     
##  9 "*"     
## 10 "*"     
## 11 "*"     
## 12 ""      
## 13 "*"     
## 14 "*"     
## 15 "*"     
## 16 ""      
## 17 "*"     
## 18 "*"     
## 19 "*"     
## 20 ""      
## 21 "*"     
## 22 "*"     
## 23 "*"     
## 24 ""      
## 25 "*"     
## 26 "*"     
## 27 "*"     
## 28 ""      
## 29 "*"     
## 30 "*"     
## 31 "*"     
## 32 ""      
## 33 "*"     
## 34 "*"     
## 35 "*"     
## 36 ""

H4: Age moderating the association between network indices and wellbeing

Hypothesis: Age would moderate the relationship between network measures and wellbeing Wellbeing ~ network measures * age_continuous Cross-sectionally: T1, T2, T3 separately

Main model

Depression

# Prepare results list
h4_phq_results <- list()
i <- 1

# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z *", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    h4_phq_results[[i]] <- tidy_model
    i <- i + 1
  }

h4_phq_results_df <- bind_rows(h4_phq_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h4_phq_int_results_df <- h4_phq_results_df %>% 
  filter(str_detect(Variable, "t1_age_z:")) %>% 
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
h4_phq_int_results_df # no significant interactions
## # A tibble: 9 × 13
##   Variable                                    B    SE        t     p CI_Lower
##   <chr>                                   <dbl> <dbl>    <dbl> <dbl>    <dbl>
## 1 t1_age_z:t1_density_z                 0.0410  0.177  0.231   0.817  -0.307 
## 2 t1_age_z:t1_closeness_z               0.174   0.181  0.962   0.336  -0.181 
## 3 t1_age_z:t1_density_z:t1_closeness_z  0.157   0.121  1.30    0.195  -0.0805
## 4 t1_age_z:t2_density_z                 0.00731 0.286  0.0256  0.980  -0.555 
## 5 t1_age_z:t2_closeness_z              -0.0842  0.300 -0.281   0.779  -0.673 
## 6 t1_age_z:t2_density_z:t2_closeness_z -0.168   0.239 -0.703   0.482  -0.638 
## 7 t1_age_z:t3_density_z                -0.0208  0.330 -0.0629  0.950  -0.671 
## 8 t1_age_z:t3_closeness_z              -0.00124 0.359 -0.00344 0.997  -0.708 
## 9 t1_age_z:t3_density_z:t3_closeness_z  0.311   0.289  1.08    0.282  -0.257 
##   CI_Upper outcome      predictor                     timepoint p.sig  FDRp
##      <dbl> <chr>        <chr>                         <chr>     <chr> <dbl>
## 1    0.389 t1_phq_total t1_density_z * t1_closeness_z t1        ""    0.817
## 2    0.528 t1_phq_total t1_density_z * t1_closeness_z t1        ""    0.504
## 3    0.395 t1_phq_total t1_density_z * t1_closeness_z t1        ""    0.504
## 4    0.569 t2_phq_total t2_density_z * t2_closeness_z t2        ""    0.980
## 5    0.505 t2_phq_total t2_density_z * t2_closeness_z t2        ""    0.980
## 6    0.302 t2_phq_total t2_density_z * t2_closeness_z t2        ""    0.980
## 7    0.630 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.997
## 8    0.706 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.997
## 9    0.880 t3_phq_total t3_density_z * t3_closeness_z t3        ""    0.847
##   FDRp.sig
##   <chr>   
## 1 ""      
## 2 ""      
## 3 ""      
## 4 ""      
## 5 ""      
## 6 ""      
## 7 ""      
## 8 ""      
## 9 ""

Loneliness

# Prepare results list
h4_ucla_results <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ t1_age_z * ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    h4_ucla_results[[i]] <- tidy_model
    i <- i + 1
  }

h4_ucla_results_df <- bind_rows(h4_ucla_results) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h4_ucla_fdr_results_df <- h4_ucla_results_df %>%
  filter(str_detect(Variable, "t1_age_z:")) %>%
  group_by(timepoint) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()
h4_ucla_fdr_results_df # No significant interactions after correction
## # A tibble: 9 × 13
##   Variable                                   B    SE      t      p CI_Lower
##   <chr>                                  <dbl> <dbl>  <dbl>  <dbl>    <dbl>
## 1 t1_age_z:t1_density_z                -0.667  0.446 -1.50  0.135    -1.54 
## 2 t1_age_z:t1_closeness_z               0.127  0.454  0.279 0.780    -0.765
## 3 t1_age_z:t1_density_z:t1_closeness_z  0.470  0.305  1.54  0.123    -0.128
## 4 t1_age_z:t2_density_z                 1.20   0.759  1.57  0.116    -0.298
## 5 t1_age_z:t2_closeness_z              -0.0866 0.796 -0.109 0.913    -1.65 
## 6 t1_age_z:t2_density_z:t2_closeness_z  1.06   0.635  1.67  0.0954   -0.187
## 7 t1_age_z:t3_density_z                -0.638  0.878 -0.726 0.468    -2.36 
## 8 t1_age_z:t3_closeness_z              -0.353  0.954 -0.370 0.712    -2.23 
## 9 t1_age_z:t3_density_z:t3_closeness_z  0.454  0.767  0.592 0.555    -1.06 
##   CI_Upper outcome                  predictor                     timepoint
##      <dbl> <chr>                    <chr>                         <chr>    
## 1    0.207 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
## 2    1.02  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
## 3    1.07  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
## 4    2.69  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 5    1.48  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 6    2.31  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 7    1.09  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 8    1.53  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 9    1.96  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
##   p.sig  FDRp FDRp.sig
##   <chr> <dbl> <chr>   
## 1 ""    0.202 ""      
## 2 ""    0.780 ""      
## 3 ""    0.202 ""      
## 4 ""    0.174 ""      
## 5 ""    0.913 ""      
## 6 ""    0.174 ""      
## 7 ""    0.712 ""      
## 8 ""    0.712 ""      
## 9 ""    0.712 ""

Sensitivity analyses

Depression

# Prepare results list
h4_phq_senresults <- list()
i <- 1

# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_phq_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ country + t1_age_z *", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    h4_phq_senresults[[i]] <- tidy_model
    i <- i + 1
  }

h4_phq_senresults_df <- bind_rows(h4_phq_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h4_phq_int_senresults_df <- h4_phq_senresults_df %>% 
  #filter(str_detect(Variable, "t1_age_z:")) %>% 
  group_by(timepoint) %>% 
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
h4_phq_int_senresults_df
## # A tibble: 27 × 13
##    Variable                                   B    SE        t        p CI_Lower
##    <chr>                                  <dbl> <dbl>    <dbl>    <dbl>    <dbl>
##  1 countryuk                             1.76   0.408   4.31   1.73e- 5   0.959 
##  2 countryusa                            1.09   0.442   2.47   1.36e- 2   0.226 
##  3 t1_age_z                             -1.90   0.175 -10.8    2.76e-26  -2.24  
##  4 t1_density_z                         -0.254  0.180  -1.41   1.59e- 1  -0.608 
##  5 t1_closeness_z                       -0.803  0.184  -4.37   1.33e- 5  -1.16  
##  6 t1_age_z:t1_density_z                 0.0530 0.176   0.301  7.63e- 1  -0.292 
##  7 t1_age_z:t1_closeness_z               0.178  0.179   0.993  3.21e- 1  -0.174 
##  8 t1_density_z:t1_closeness_z          -0.127  0.152  -0.832  4.06e- 1  -0.425 
##  9 t1_age_z:t1_density_z:t1_closeness_z  0.177  0.121   1.46   1.44e- 1  -0.0605
## 10 countryuk                             2.63   0.728   3.62   3.38e- 4   1.20  
## 11 countryusa                            1.10   0.729   1.51   1.33e- 1  -0.336 
## 12 t1_age_z                             -2.09   0.289  -7.22   3.23e-12  -2.65  
## 13 t2_density_z                          0.0467 0.317   0.147  8.83e- 1  -0.577 
## 14 t2_closeness_z                       -1.07   0.328  -3.28   1.16e- 3  -1.72  
## 15 t1_age_z:t2_density_z                 0.0963 0.286   0.337  7.36e- 1  -0.466 
## 16 t1_age_z:t2_closeness_z              -0.107  0.295  -0.364  7.16e- 1  -0.688 
## 17 t2_density_z:t2_closeness_z           0.109  0.265   0.411  6.82e- 1  -0.413 
## 18 t1_age_z:t2_density_z:t2_closeness_z -0.190  0.235  -0.806  4.21e- 1  -0.653 
## 19 countryuk                             3.35   0.823   4.07   6.11e- 5   1.73  
## 20 countryusa                            1.74   0.840   2.07   3.95e- 2   0.0842
## 21 t1_age_z                             -2.18   0.329  -6.62   1.72e-10  -2.83  
## 22 t3_density_z                         -0.0119 0.372  -0.0320 9.75e- 1  -0.745 
## 23 t3_closeness_z                       -0.940  0.372  -2.53   1.21e- 2  -1.67  
## 24 t1_age_z:t3_density_z                 0.0126 0.323   0.0390 9.69e- 1  -0.623 
## 25 t1_age_z:t3_closeness_z               0.0861 0.352   0.245  8.07e- 1  -0.606 
## 26 t3_density_z:t3_closeness_z          -0.0355 0.309  -0.115  9.08e- 1  -0.643 
## 27 t1_age_z:t3_density_z:t3_closeness_z  0.371  0.283   1.31   1.91e- 1  -0.186 
##    CI_Upper outcome      predictor                     timepoint p.sig     FDRp
##       <dbl> <chr>        <chr>                         <chr>     <chr>    <dbl>
##  1   2.56   t1_phq_total t1_density_z * t1_closeness_z t1        "*"   5.20e- 5
##  2   1.96   t1_phq_total t1_density_z * t1_closeness_z t1        "*"   3.05e- 2
##  3  -1.56   t1_phq_total t1_density_z * t1_closeness_z t1        "*"   2.48e-25
##  4   0.0997 t1_phq_total t1_density_z * t1_closeness_z t1        ""    2.38e- 1
##  5  -0.443  t1_phq_total t1_density_z * t1_closeness_z t1        "*"   5.20e- 5
##  6   0.398  t1_phq_total t1_density_z * t1_closeness_z t1        ""    7.63e- 1
##  7   0.530  t1_phq_total t1_density_z * t1_closeness_z t1        ""    4.13e- 1
##  8   0.172  t1_phq_total t1_density_z * t1_closeness_z t1        ""    4.56e- 1
##  9   0.414  t1_phq_total t1_density_z * t1_closeness_z t1        ""    2.38e- 1
## 10   4.07   t2_phq_total t2_density_z * t2_closeness_z t2        "*"   1.52e- 3
## 11   2.53   t2_phq_total t2_density_z * t2_closeness_z t2        ""    2.99e- 1
## 12  -1.52   t2_phq_total t2_density_z * t2_closeness_z t2        "*"   2.91e-11
## 13   0.671  t2_phq_total t2_density_z * t2_closeness_z t2        ""    8.83e- 1
## 14  -0.429  t2_phq_total t2_density_z * t2_closeness_z t2        "*"   3.48e- 3
## 15   0.659  t2_phq_total t2_density_z * t2_closeness_z t2        ""    8.28e- 1
## 16   0.473  t2_phq_total t2_density_z * t2_closeness_z t2        ""    8.28e- 1
## 17   0.631  t2_phq_total t2_density_z * t2_closeness_z t2        ""    8.28e- 1
## 18   0.273  t2_phq_total t2_density_z * t2_closeness_z t2        ""    7.57e- 1
## 19   4.97   t3_phq_total t3_density_z * t3_closeness_z t3        "*"   2.75e- 4
## 20   3.39   t3_phq_total t3_density_z * t3_closeness_z t3        "*"   8.88e- 2
## 21  -1.53   t3_phq_total t3_density_z * t3_closeness_z t3        "*"   1.55e- 9
## 22   0.721  t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.75e- 1
## 23  -0.207  t3_phq_total t3_density_z * t3_closeness_z t3        "*"   3.63e- 2
## 24   0.648  t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.75e- 1
## 25   0.778  t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.75e- 1
## 26   0.572  t3_phq_total t3_density_z * t3_closeness_z t3        ""    9.75e- 1
## 27   0.927  t3_phq_total t3_density_z * t3_closeness_z t3        ""    3.43e- 1
##    FDRp.sig
##    <chr>   
##  1 "*"     
##  2 "*"     
##  3 "*"     
##  4 ""      
##  5 "*"     
##  6 ""      
##  7 ""      
##  8 ""      
##  9 ""      
## 10 "*"     
## 11 ""      
## 12 "*"     
## 13 ""      
## 14 "*"     
## 15 ""      
## 16 ""      
## 17 ""      
## 18 ""      
## 19 "*"     
## 20 ""      
## 21 "*"     
## 22 ""      
## 23 "*"     
## 24 ""      
## 25 ""      
## 26 ""      
## 27 ""

Loneliness

# Prepare results list
h4_ucla_senresults <- list()
i <- 1
# Loop through timepoints and network indices
for (tp in timepoints) {
    outcome_var <- paste0(tp, "_ucla_loneliness_total")
    predictor_vars <- paste0(tp, "_", network_indices) %>% paste(collapse = " * ")
    
    formula <- as.formula(paste0(outcome_var, " ~ country + t1_age_z * ", predictor_vars))
    model <- lm(formula, data = full_data)
    
    tidy_model <- tidy(model, conf.int = TRUE) %>%
      filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
      rename(
        Variable = term,
        B = estimate,
        SE = std.error,
        t = statistic,
        p = p.value,
        CI_Lower = conf.low,
        CI_Upper = conf.high
      ) %>%
      dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
      mutate(outcome = outcome_var,
             predictor = predictor_vars,
             timepoint = tp)
    
    h4_ucla_senresults[[i]] <- tidy_model
    i <- i + 1
  }

h4_ucla_senresults_df <- bind_rows(h4_ucla_senresults) %>% 
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h4_ucla_fdr_senresults_df <- h4_ucla_senresults_df %>%
 # filter(str_detect(Variable, "t1_age_z:")) %>%
  group_by(timepoint) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()
h4_ucla_fdr_senresults_df # No significant interactions (after correction)
## # A tibble: 27 × 13
##    Variable                                   B    SE       t        p CI_Lower
##    <chr>                                  <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 countryuk                             3.08   1.03   3.00   2.77e- 3   1.07  
##  2 countryusa                            3.62   1.11   3.25   1.18e- 3   1.44  
##  3 t1_age_z                             -4.02   0.441 -9.12   2.98e-19  -4.89  
##  4 t1_density_z                         -1.12   0.455 -2.47   1.36e- 2  -2.02  
##  5 t1_closeness_z                       -2.35   0.463 -5.07   4.52e- 7  -3.26  
##  6 t1_age_z:t1_density_z                -0.656  0.444 -1.48   1.40e- 1  -1.53  
##  7 t1_age_z:t1_closeness_z               0.158  0.453  0.350  7.27e- 1  -0.730 
##  8 t1_density_z:t1_closeness_z          -0.873  0.384 -2.27   2.31e- 2  -1.63  
##  9 t1_age_z:t1_density_z:t1_closeness_z  0.558  0.305  1.83   6.80e- 2  -0.0412
## 10 countryuk                             5.30   1.95   2.72   6.80e- 3   1.47  
## 11 countryusa                            4.69   1.95   2.40   1.68e- 2   0.850 
## 12 t1_age_z                             -4.79   0.773 -6.21   1.53e- 9  -6.31  
## 13 t2_density_z                         -0.0148 0.848 -0.0175 9.86e- 1  -1.68  
## 14 t2_closeness_z                       -3.96   0.878 -4.52   8.60e- 6  -5.69  
## 15 t1_age_z:t2_density_z                 1.18   0.765  1.54   1.24e- 1  -0.326 
## 16 t1_age_z:t2_closeness_z              -0.156  0.789 -0.198  8.43e- 1  -1.71  
## 17 t2_density_z:t2_closeness_z          -0.712  0.710 -1.00   3.16e- 1  -2.11  
## 18 t1_age_z:t2_density_z:t2_closeness_z  1.03   0.630  1.63   1.03e- 1  -0.210 
## 19 countryuk                             8.59   2.19   3.92   1.10e- 4   4.28  
## 20 countryusa                            5.75   2.24   2.57   1.06e- 2   1.35  
## 21 t1_age_z                             -4.81   0.876 -5.49   8.89e- 8  -6.53  
## 22 t3_density_z                          2.25   0.991  2.27   2.39e- 2   0.300 
## 23 t3_closeness_z                       -3.66   0.991 -3.70   2.59e- 4  -5.61  
## 24 t1_age_z:t3_density_z                -0.569  0.859 -0.662  5.08e- 1  -2.26  
## 25 t1_age_z:t3_closeness_z              -0.161  0.936 -0.172  8.64e- 1  -2.00  
## 26 t3_density_z:t3_closeness_z           0.664  0.821  0.809  4.19e- 1  -0.952 
## 27 t1_age_z:t3_density_z:t3_closeness_z  0.633  0.753  0.842  4.01e- 1  -0.848 
##    CI_Upper outcome                  predictor                     timepoint
##       <dbl> <chr>                    <chr>                         <chr>    
##  1    5.10  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  2    5.81  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  3   -3.16  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  4   -0.232 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  5   -1.44  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  6    0.215 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  7    1.05  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  8   -0.120 t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
##  9    1.16  t1_ucla_loneliness_total t1_density_z * t1_closeness_z t1       
## 10    9.13  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 11    8.52  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 12   -3.27  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 13    1.65  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 14   -2.24  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 15    2.68  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 16    1.40  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 17    0.683 t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 18    2.27  t2_ucla_loneliness_total t2_density_z * t2_closeness_z t2       
## 19   12.9   t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 20   10.2   t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 21   -3.08  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 22    4.20  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 23   -1.71  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 24    1.12  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 25    1.68  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 26    2.28  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
## 27    2.11  t3_ucla_loneliness_total t3_density_z * t3_closeness_z t3       
##    p.sig     FDRp FDRp.sig
##    <chr>    <dbl> <chr>   
##  1 "*"   6.24e- 3 "*"     
##  2 "*"   3.53e- 3 "*"     
##  3 "*"   2.69e-18 "*"     
##  4 "*"   2.45e- 2 "*"     
##  5 "*"   2.03e- 6 "*"     
##  6 ""    1.58e- 1 ""      
##  7 ""    7.27e- 1 ""      
##  8 "*"   3.46e- 2 "*"     
##  9 ""    8.74e- 2 ""      
## 10 "*"   2.04e- 2 "*"     
## 11 "*"   3.78e- 2 "*"     
## 12 "*"   1.37e- 8 "*"     
## 13 ""    9.86e- 1 ""      
## 14 "*"   3.87e- 5 "*"     
## 15 ""    1.86e- 1 ""      
## 16 ""    9.49e- 1 ""      
## 17 ""    4.07e- 1 ""      
## 18 ""    1.86e- 1 ""      
## 19 "*"   4.94e- 4 "*"     
## 20 "*"   2.38e- 2 "*"     
## 21 "*"   8.00e- 7 "*"     
## 22 "*"   4.30e- 2 "*"     
## 23 "*"   7.77e- 4 "*"     
## 24 ""    5.72e- 1 ""      
## 25 ""    8.64e- 1 ""      
## 26 ""    5.39e- 1 ""      
## 27 ""    5.39e- 1 ""

H5: Changes across the pandemic (T1, T2, T3)

Hypothesis: Exploring changes across the pandemic –> is timepoint associated with the network measures and wellbeing + does timepoint moderate the relationship between network measures and wellbeing Wellbeing ~ network measures * time * age_continuous

# Create a long format data frame for T1, T2, and T3
full_data_long <- full_data %>%
  dplyr::select(ID, t1_age_z, country, t1_closeness_z, t1_density_z,
                t1_f2f_freq_current_z, t1_phone_freq_current_z, t1_elec_freq_current_z,
                t1_f2f_freq_diff_z, t1_phone_freq_diff_z, t1_elec_freq_diff_z,
                t1_f2f_freq_diff_family_z, t1_phone_freq_diff_family_z, t1_elec_freq_diff_family_z,
                t1_f2f_freq_diff_friend_z, t1_phone_freq_diff_friend_z, t1_elec_freq_diff_friend_z,
                t1_phq_total, t2_phq_total, t3_phq_total,
                t1_ucla_loneliness_total, t2_ucla_loneliness_total, t3_ucla_loneliness_total) %>%
  pivot_longer(
    cols = c(t1_phq_total, t2_phq_total, t3_phq_total,
             t1_ucla_loneliness_total, t2_ucla_loneliness_total, t3_ucla_loneliness_total),
    names_to = c("time", ".value"),
    names_pattern = "t(\\d+)_(.+)")

Main model

Depression

# Create a linear mixed-effects model to analyze changes across the pandemic

### Depression & networks
phq_net_model <- lmer( phq_total ~ t1_density_z * t1_closeness_z * time * t1_age_z + (1 | ID), 
                             data = full_data_long, REML = TRUE)

### Depression & frequency of contact (f2f)
phq_f2f_freq_model <- lmer( phq_total ~ t1_f2f_freq_current_z * time * t1_age_z + (1 | ID), 
                            data = full_data_long, REML = TRUE)

### Depression & frequency of contact (phone)
phq_phone_freq_model <- lmer( phq_total ~ t1_phone_freq_current_z * time * t1_age_z + (1 | ID), 
                              data = full_data_long, REML = TRUE)

### Depression & frequency of contact (electronic)
phq_elec_freq_model <- lmer( phq_total ~ t1_elec_freq_current_z * time * t1_age_z + (1 | ID), 
                            data = full_data_long, REML = TRUE)
# List of phq models
h5_phq_models <- list(
  net = phq_net_model,
  f2f_freq = phq_f2f_freq_model,
  phone_freq = phq_phone_freq_model,
  elec_freq = phq_elec_freq_model)

# Extract results using tidy
h5_phq_results <- lapply(h5_phq_models, function(model) {
  broom.mixed::tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper)
})

h5_phq_results_df <- bind_rows(h5_phq_results, .id = "measure") %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

# Examine interaction effects 
h5_phq_int_results <- h5_phq_results_df %>%
  #filter(str_detect(Variable, ":")) %>% 
  group_by(measure) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup() # no significant interaction
h5_phq_int_results
## # A tibble: 56 × 11
##    measure    Variable                                         B    SE        t
##    <chr>      <chr>                                        <dbl> <dbl>    <dbl>
##  1 net        t1_density_z                               -0.314  0.179  -1.76  
##  2 net        t1_closeness_z                             -0.746  0.183  -4.08  
##  3 net        time2                                      -0.674  0.225  -2.99  
##  4 net        time3                                      -0.822  0.244  -3.37  
##  5 net        t1_age_z                                   -1.91   0.174 -11.0   
##  6 net        t1_density_z:t1_closeness_z                -0.110  0.151  -0.727 
##  7 net        t1_density_z:time2                         -0.0301 0.237  -0.127 
##  8 net        t1_density_z:time3                         -0.290  0.271  -1.07  
##  9 net        t1_closeness_z:time2                       -0.141  0.250  -0.565 
## 10 net        t1_closeness_z:time3                        0.146  0.277   0.528 
## 11 net        t1_density_z:t1_age_z                       0.0410 0.176   0.234 
## 12 net        t1_closeness_z:t1_age_z                     0.174  0.179   0.971 
## 13 net        time2:t1_age_z                             -0.0915 0.217  -0.423 
## 14 net        time3:t1_age_z                             -0.105  0.239  -0.439 
## 15 net        t1_density_z:t1_closeness_z:time2          -0.0243 0.180  -0.135 
## 16 net        t1_density_z:t1_closeness_z:time3          -0.0100 0.201  -0.0498
## 17 net        t1_density_z:t1_closeness_z:t1_age_z        0.157  0.120   1.31  
## 18 net        t1_density_z:time2:t1_age_z                 0.301  0.210   1.44  
## 19 net        t1_density_z:time3:t1_age_z                 0.524  0.242   2.17  
## 20 net        t1_closeness_z:time2:t1_age_z              -0.0909 0.229  -0.397 
## 21 net        t1_closeness_z:time3:t1_age_z              -0.482  0.257  -1.87  
## 22 net        t1_density_z:t1_closeness_z:time2:t1_age_z  0.0201 0.176   0.114 
## 23 net        t1_density_z:t1_closeness_z:time3:t1_age_z -0.0165 0.205  -0.0801
## 24 f2f_freq   t1_f2f_freq_current_z                      -0.404  0.168  -2.41  
## 25 f2f_freq   time2                                      -0.667  0.218  -3.06  
## 26 f2f_freq   time3                                      -0.856  0.236  -3.63  
## 27 f2f_freq   t1_age_z                                   -1.80   0.167 -10.8   
## 28 f2f_freq   t1_f2f_freq_current_z:time2                -0.364  0.221  -1.65  
## 29 f2f_freq   t1_f2f_freq_current_z:time3                -0.374  0.240  -1.56  
## 30 f2f_freq   t1_f2f_freq_current_z:t1_age_z              0.314  0.160   1.96  
## 31 f2f_freq   time2:t1_age_z                             -0.0904 0.207  -0.438 
## 32 f2f_freq   time3:t1_age_z                             -0.0580 0.227  -0.255 
## 33 f2f_freq   t1_f2f_freq_current_z:time2:t1_age_z       -0.0463 0.203  -0.228 
## 34 f2f_freq   t1_f2f_freq_current_z:time3:t1_age_z       -0.147  0.225  -0.656 
## 35 phone_freq t1_phone_freq_current_z                    -0.249  0.168  -1.48  
## 36 phone_freq time2                                      -0.655  0.215  -3.05  
## 37 phone_freq time3                                      -0.853  0.233  -3.66  
## 38 phone_freq t1_age_z                                   -1.86   0.170 -10.9   
## 39 phone_freq t1_phone_freq_current_z:time2              -0.0440 0.214  -0.206 
## 40 phone_freq t1_phone_freq_current_z:time3               0.156  0.230   0.680 
## 41 phone_freq t1_phone_freq_current_z:t1_age_z            0.0699 0.161   0.433 
## 42 phone_freq time2:t1_age_z                             -0.212  0.209  -1.02  
## 43 phone_freq time3:t1_age_z                             -0.209  0.234  -0.896 
## 44 phone_freq t1_phone_freq_current_z:time2:t1_age_z     -0.222  0.202  -1.10  
## 45 phone_freq t1_phone_freq_current_z:time3:t1_age_z     -0.268  0.221  -1.22  
## 46 elec_freq  t1_elec_freq_current_z                      0.146  0.168   0.867 
## 47 elec_freq  time2                                      -0.631  0.216  -2.93  
## 48 elec_freq  time3                                      -0.837  0.233  -3.60  
## 49 elec_freq  t1_age_z                                   -1.83   0.168 -10.9   
## 50 elec_freq  t1_elec_freq_current_z:time2               -0.265  0.220  -1.20  
## 51 elec_freq  t1_elec_freq_current_z:time3               -0.102  0.246  -0.415 
## 52 elec_freq  t1_elec_freq_current_z:t1_age_z            -0.269  0.175  -1.54  
## 53 elec_freq  time2:t1_age_z                             -0.188  0.204  -0.920 
## 54 elec_freq  time3:t1_age_z                             -0.149  0.223  -0.670 
## 55 elec_freq  t1_elec_freq_current_z:time2:t1_age_z       0.131  0.236   0.557 
## 56 elec_freq  t1_elec_freq_current_z:time3:t1_age_z       0.165  0.254   0.650 
##           p  CI_Lower CI_Upper p.sig     FDRp FDRp.sig
##       <dbl>     <dbl>    <dbl> <chr>    <dbl> <chr>   
##  1 7.93e- 2 -0.665      0.0368 ""    2.61e- 1 ""      
##  2 4.69e- 5 -1.10      -0.388  "*"   5.40e- 4 "*"     
##  3 2.88e- 3 -1.12      -0.231  "*"   1.66e- 2 "*"     
##  4 7.76e- 4 -1.30      -0.344  "*"   5.95e- 3 "*"     
##  5 5.99e-27 -2.26      -1.57   "*"   1.38e-25 "*"     
##  6 4.68e- 1 -0.407      0.187  ""    8.96e- 1 ""      
##  7 8.99e- 1 -0.496      0.435  ""    9.60e- 1 ""      
##  8 2.85e- 1 -0.823      0.243  ""    6.56e- 1 ""      
##  9 5.72e- 1 -0.632      0.350  ""    9.36e- 1 ""      
## 10 5.98e- 1 -0.398      0.691  ""    9.36e- 1 ""      
## 11 8.15e- 1 -0.303      0.385  ""    9.60e- 1 ""      
## 12 3.32e- 1 -0.177      0.525  ""    6.94e- 1 ""      
## 13 6.73e- 1 -0.517      0.334  ""    9.36e- 1 ""      
## 14 6.61e- 1 -0.574      0.364  ""    9.36e- 1 ""      
## 15 8.93e- 1 -0.378      0.330  ""    9.60e- 1 ""      
## 16 9.60e- 1 -0.405      0.385  ""    9.60e- 1 ""      
## 17 1.91e- 1 -0.0783     0.393  ""    4.87e- 1 ""      
## 18 1.52e- 1 -0.111      0.713  ""    4.36e- 1 ""      
## 19 3.04e- 2  0.0497     0.998  "*"   1.40e- 1 ""      
## 20 6.92e- 1 -0.541      0.359  ""    9.36e- 1 ""      
## 21 6.13e- 2 -0.987      0.0230 ""    2.35e- 1 ""      
## 22 9.09e- 1 -0.325      0.365  ""    9.60e- 1 ""      
## 23 9.36e- 1 -0.420      0.387  ""    9.60e- 1 ""      
## 24 1.60e- 2 -0.733     -0.0754 "*"   4.40e- 2 "*"     
## 25 2.27e- 3 -1.09      -0.239  "*"   8.32e- 3 "*"     
## 26 3.07e- 4 -1.32      -0.392  "*"   1.69e- 3 "*"     
## 27 4.99e-26 -2.13      -1.47   "*"   5.49e-25 "*"     
## 28 9.97e- 2 -0.798      0.0696 ""    1.83e- 1 ""      
## 29 1.19e- 1 -0.845      0.0960 ""    1.86e- 1 ""      
## 30 4.97e- 2  0.000406   0.628  "*"   1.09e- 1 ""      
## 31 6.62e- 1 -0.496      0.315  ""    8.09e- 1 ""      
## 32 7.99e- 1 -0.504      0.388  ""    8.20e- 1 ""      
## 33 8.20e- 1 -0.445      0.353  ""    8.20e- 1 ""      
## 34 5.12e- 1 -0.589      0.294  ""    7.04e- 1 ""      
## 35 1.38e- 1 -0.578      0.0803 ""    3.80e- 1 ""      
## 36 2.36e- 3 -1.08      -0.233  "*"   8.66e- 3 "*"     
## 37 2.73e- 4 -1.31      -0.395  "*"   1.50e- 3 "*"     
## 38 1.25e-26 -2.19      -1.52   "*"   1.37e-25 "*"     
## 39 8.37e- 1 -0.464      0.376  ""    8.37e- 1 ""      
## 40 4.97e- 1 -0.295      0.608  ""    6.07e- 1 ""      
## 41 6.65e- 1 -0.247      0.387  ""    7.32e- 1 ""      
## 42 3.10e- 1 -0.622      0.198  ""    4.87e- 1 ""      
## 43 3.71e- 1 -0.668      0.249  ""    5.09e- 1 ""      
## 44 2.73e- 1 -0.618      0.175  ""    4.87e- 1 ""      
## 45 2.25e- 1 -0.701      0.165  ""    4.87e- 1 ""      
## 46 3.86e- 1 -0.184      0.476  ""    6.06e- 1 ""      
## 47 3.54e- 3 -1.05      -0.207  "*"   1.30e- 2 "*"     
## 48 3.42e- 4 -1.29      -0.380  "*"   1.88e- 3 "*"     
## 49 1.40e-26 -2.16      -1.50   "*"   1.54e-25 "*"     
## 50 2.29e- 1 -0.697      0.167  ""    5.04e- 1 ""      
## 51 6.78e- 1 -0.586      0.381  ""    6.78e- 1 ""      
## 52 1.25e- 1 -0.613      0.0748 ""    3.44e- 1 ""      
## 53 3.58e- 1 -0.588      0.213  ""    6.06e- 1 ""      
## 54 5.03e- 1 -0.587      0.288  ""    6.31e- 1 ""      
## 55 5.78e- 1 -0.332      0.594  ""    6.35e- 1 ""      
## 56 5.16e- 1 -0.334      0.665  ""    6.31e- 1 ""

Loneliness

### Loneliness & networks
lon_net_model <- lmer( ucla_loneliness_total ~ t1_density_z * t1_closeness_z * time * t1_age_z + (1 | ID), 
                             data = full_data_long)

### Loneliness & frequency of contact (f2f)
lon_f2f_freq_model <- lmer( ucla_loneliness_total ~ t1_f2f_freq_current_z * time * t1_age_z + (1 | ID), 
                            data = full_data_long)

### Loneliness & frequency of contact (phone)
lon_phone_freq_model <- lmer( ucla_loneliness_total ~ t1_phone_freq_current_z * time * t1_age_z + (1 | ID), 
                              data = full_data_long)

### Loneliness & frequency of contact (electronic)
lon_elec_freq_model <- lmer(ucla_loneliness_total ~ t1_elec_freq_current_z * time * t1_age_z + (1 | ID), 
                            data = full_data_long)
# List of models
h5_lon_models <- list(
  net = lon_net_model,
  f2f_freq = lon_f2f_freq_model,
  phone_freq = lon_phone_freq_model,
  elec_freq = lon_elec_freq_model
)

# Extract results using tidy
h5_lon_results <- lapply(h5_lon_models, function(model) {
  broom.mixed::tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper)
})

h5_lon_results_df <- bind_rows(h5_lon_results, .id = "measure") %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

# Examine interaction effects 
h5_lon_int_results <- h5_lon_results_df %>%
  filter(str_detect(Variable, ":")) %>% 
  group_by(measure) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(h5_lon_int_results) #Significant interaction- t1_density_z:t1_closeness_z:time2 for loneliness
## # A tibble: 39 × 11
##    measure    Variable                                          B    SE        t
##    <chr>      <chr>                                         <dbl> <dbl>    <dbl>
##  1 net        t1_density_z:t1_closeness_z                -0.797   0.387 -2.06   
##  2 net        t1_density_z:time2                         -0.126   0.620 -0.203  
##  3 net        t1_density_z:time3                          0.225   0.710  0.317  
##  4 net        t1_closeness_z:time2                       -1.72    0.654 -2.63   
##  5 net        t1_closeness_z:time3                       -0.408   0.725 -0.562  
##  6 net        t1_density_z:t1_age_z                      -0.667   0.449 -1.49   
##  7 net        t1_closeness_z:t1_age_z                     0.127   0.458  0.277  
##  8 net        time2:t1_age_z                              0.00333 0.566  0.00588
##  9 net        time3:t1_age_z                              0.104   0.625  0.166  
## 10 net        t1_density_z:t1_closeness_z:time2           1.60    0.472  3.39   
## 11 net        t1_density_z:t1_closeness_z:time3           0.582   0.526  1.11   
## 12 net        t1_density_z:t1_closeness_z:t1_age_z        0.470   0.307  1.53   
## 13 net        t1_density_z:time2:t1_age_z                -0.0180  0.549 -0.0328 
## 14 net        t1_density_z:time3:t1_age_z                -0.225   0.632 -0.357  
## 15 net        t1_closeness_z:time2:t1_age_z               0.367   0.599  0.611  
## 16 net        t1_closeness_z:time3:t1_age_z               0.217   0.673  0.322  
## 17 net        t1_density_z:t1_closeness_z:time2:t1_age_z -0.895   0.460 -1.95   
## 18 net        t1_density_z:t1_closeness_z:time3:t1_age_z -1.03    0.537 -1.93   
## 19 f2f_freq   t1_f2f_freq_current_z:time2                -0.973   0.594 -1.64   
## 20 f2f_freq   t1_f2f_freq_current_z:time3                -0.538   0.645 -0.835  
## 21 f2f_freq   t1_f2f_freq_current_z:t1_age_z              0.229   0.413  0.554  
## 22 f2f_freq   time2:t1_age_z                             -0.359   0.556 -0.646  
## 23 f2f_freq   time3:t1_age_z                             -0.210   0.612 -0.343  
## 24 f2f_freq   t1_f2f_freq_current_z:time2:t1_age_z       -0.0588  0.547 -0.108  
## 25 f2f_freq   t1_f2f_freq_current_z:time3:t1_age_z       -0.428   0.605 -0.708  
## 26 phone_freq t1_phone_freq_current_z:time2              -0.735   0.574 -1.28   
## 27 phone_freq t1_phone_freq_current_z:time3               0.812   0.618  1.31   
## 28 phone_freq t1_phone_freq_current_z:t1_age_z           -0.524   0.416 -1.26   
## 29 phone_freq time2:t1_age_z                             -0.756   0.561 -1.35   
## 30 phone_freq time3:t1_age_z                             -0.363   0.628 -0.579  
## 31 phone_freq t1_phone_freq_current_z:time2:t1_age_z     -0.707   0.543 -1.30   
## 32 phone_freq t1_phone_freq_current_z:time3:t1_age_z     -0.241   0.593 -0.407  
## 33 elec_freq  t1_elec_freq_current_z:time2               -0.561   0.592 -0.949  
## 34 elec_freq  t1_elec_freq_current_z:time3                0.609   0.663  0.918  
## 35 elec_freq  t1_elec_freq_current_z:t1_age_z            -0.846   0.453 -1.87   
## 36 elec_freq  time2:t1_age_z                             -0.624   0.548 -1.14   
## 37 elec_freq  time3:t1_age_z                             -0.279   0.600 -0.466  
## 38 elec_freq  t1_elec_freq_current_z:time2:t1_age_z       0.467   0.634  0.736  
## 39 elec_freq  t1_elec_freq_current_z:time3:t1_age_z       0.450   0.684  0.658  
##           p CI_Lower CI_Upper p.sig   FDRp FDRp.sig
##       <dbl>    <dbl>    <dbl> <chr>  <dbl> <chr>   
##  1 0.0398     -1.56  -0.0370  "*"   0.196  ""      
##  2 0.839      -1.34   1.09    ""    0.977  ""      
##  3 0.752      -1.17   1.62    ""    0.977  ""      
##  4 0.00870    -3.00  -0.436   "*"   0.0783 ""      
##  5 0.574      -1.83   1.02    ""    0.977  ""      
##  6 0.138      -1.55   0.214   ""    0.354  ""      
##  7 0.782      -0.771  1.02    ""    0.977  ""      
##  8 0.995      -1.11   1.12    ""    0.995  ""      
##  9 0.868      -1.12   1.33    ""    0.977  ""      
## 10 0.000723    0.675  2.53    "*"   0.0130 "*"     
## 11 0.269      -0.451  1.61    ""    0.605  ""      
## 12 0.126      -0.132  1.07    ""    0.354  ""      
## 13 0.974      -1.10   1.06    ""    0.995  ""      
## 14 0.721      -1.47   1.02    ""    0.977  ""      
## 15 0.541      -0.810  1.54    ""    0.977  ""      
## 16 0.748      -1.10   1.54    ""    0.977  ""      
## 17 0.0519     -1.80   0.00727 ""    0.196  ""      
## 18 0.0544     -2.09   0.0197  ""    0.196  ""      
## 19 0.102      -2.14   0.194   ""    0.714  ""      
## 20 0.404      -1.80   0.727   ""    0.811  ""      
## 21 0.580      -0.582  1.04    ""    0.811  ""      
## 22 0.518      -1.45   0.732   ""    0.811  ""      
## 23 0.731      -1.41   0.991   ""    0.853  ""      
## 24 0.914      -1.13   1.01    ""    0.914  ""      
## 25 0.479      -1.62   0.759   ""    0.811  ""      
## 26 0.201      -1.86   0.393   ""    0.292  ""      
## 27 0.189      -0.400  2.02    ""    0.292  ""      
## 28 0.209      -1.34   0.293   ""    0.292  ""      
## 29 0.178      -1.86   0.345   ""    0.292  ""      
## 30 0.563      -1.60   0.869   ""    0.657  ""      
## 31 0.193      -1.77   0.358   ""    0.292  ""      
## 32 0.684      -1.41   0.922   ""    0.684  ""      
## 33 0.343      -1.72   0.600   ""    0.596  ""      
## 34 0.359      -0.692  1.91    ""    0.596  ""      
## 35 0.0622     -1.73   0.0431  ""    0.435  ""      
## 36 0.256      -1.70   0.453   ""    0.596  ""      
## 37 0.641      -1.46   0.898   ""    0.641  ""      
## 38 0.462      -0.778  1.71    ""    0.596  ""      
## 39 0.511      -0.893  1.79    ""    0.596  ""
Plot interactions
int_lon_net <- interact_plot(lon_net_model, pred = "t1_closeness_z",
                                    modx = "t1_density_z",
                                    mod2 = "time",
                                    x.label = "Closeness at Baseline (Standardised)",
                                    y.label = "UCLA Loneliness Total Score", 
                                    legend.main = "Density",
                                    modx.labels = c("Low", "Mean", "High"),
                                    interval = TRUE) 
int_lon_net

# Plot interaction effects
int_lon_net <- interact_plot(lon_net_model, pred = "t1_closeness_z",
                                    modx = "time",
                                    x.label = "Closeness at Baseline (Standardised)",
                                    y.label = "UCLA Loneliness Total Score", 
                                    legend.main = "Wave",
                                    modx.labels = c("T1", "T2", "T3"),
                                    interval = TRUE) 
int_lon_net

Sensitivity analyses

Depression

# Create a linear mixed-effects model to analyze changes across the pandemic

### Depression & networks
phq_net_senmodel <- lmer( phq_total ~ t1_density_z * t1_closeness_z * time * t1_age_z + country + (1 | ID), 
                             data = full_data_long, REML = TRUE)

### Depression & frequency of contact (f2f)
phq_f2f_freq_senmodel <- lmer( phq_total ~ t1_f2f_freq_current_z * time * t1_age_z + country + (1 | ID), 
                            data = full_data_long, REML = TRUE)

### Depression & frequency of contact (phone)
phq_phone_freq_senmodel <- lmer( phq_total ~ t1_phone_freq_current_z * time * t1_age_z + country + (1 | ID), 
                              data = full_data_long, REML = TRUE)

### Depression & frequency of contact (electronic)
phq_elec_freq_senmodel <- lmer(phq_total ~ t1_elec_freq_current_z * time * t1_age_z + country + (1 | ID), 
                            data = full_data_long, REML = TRUE)
# List of phq models 
h5_phq_senmodels <- list(
  net = phq_net_senmodel,
  f2f_freq = phq_f2f_freq_senmodel,
  phone_freq = phq_phone_freq_senmodel,
  elec_freq = phq_elec_freq_senmodel)

# Extract results using tidy
h5_phq_senresults <- lapply(h5_phq_senmodels, function(model) {
  broom.mixed::tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper)
})

h5_phq_senresults_df <- bind_rows(h5_phq_senresults, .id = "measure") %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

# Examine interaction effects 
h5_phq_int_senresults <- h5_phq_senresults_df %>%
#  filter(str_detect(Variable, ":")) %>% 
  group_by(measure) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup() # no significant interaction
h5_phq_int_senresults
## # A tibble: 64 × 11
##    measure    Variable                                          B    SE
##    <chr>      <chr>                                         <dbl> <dbl>
##  1 net        t1_density_z                               -0.249   0.178
##  2 net        t1_closeness_z                             -0.807   0.182
##  3 net        time2                                      -0.659   0.226
##  4 net        time3                                      -0.815   0.244
##  5 net        t1_age_z                                   -1.90    0.173
##  6 net        countryuk                                   1.84    0.391
##  7 net        countryusa                                  1.05    0.421
##  8 net        t1_density_z:t1_closeness_z                -0.125   0.151
##  9 net        t1_density_z:time2                         -0.0487  0.237
## 10 net        t1_density_z:time3                         -0.287   0.272
## 11 net        t1_closeness_z:time2                       -0.136   0.250
## 12 net        t1_closeness_z:time3                        0.144   0.277
## 13 net        t1_density_z:t1_age_z                       0.0541  0.174
## 14 net        t1_closeness_z:t1_age_z                     0.177   0.178
## 15 net        time2:t1_age_z                             -0.100   0.217
## 16 net        time3:t1_age_z                             -0.107   0.239
## 17 net        t1_density_z:t1_closeness_z:time2          -0.0209  0.180
## 18 net        t1_density_z:t1_closeness_z:time3          -0.00954 0.201
## 19 net        t1_density_z:t1_closeness_z:t1_age_z        0.175   0.120
## 20 net        t1_density_z:time2:t1_age_z                 0.309   0.210
## 21 net        t1_density_z:time3:t1_age_z                 0.530   0.242
## 22 net        t1_closeness_z:time2:t1_age_z              -0.102   0.229
## 23 net        t1_closeness_z:time3:t1_age_z              -0.479   0.257
## 24 net        t1_density_z:t1_closeness_z:time2:t1_age_z  0.0397  0.176
## 25 net        t1_density_z:t1_closeness_z:time3:t1_age_z  0.00177 0.206
## 26 f2f_freq   t1_f2f_freq_current_z                      -0.318   0.169
## 27 f2f_freq   time2                                      -0.650   0.218
## 28 f2f_freq   time3                                      -0.848   0.236
## 29 f2f_freq   t1_age_z                                   -1.79    0.166
## 30 f2f_freq   countryuk                                   1.59    0.395
## 31 f2f_freq   countryusa                                  0.923   0.423
## 32 f2f_freq   t1_f2f_freq_current_z:time2                -0.372   0.221
## 33 f2f_freq   t1_f2f_freq_current_z:time3                -0.374   0.240
## 34 f2f_freq   t1_f2f_freq_current_z:t1_age_z              0.298   0.159
## 35 f2f_freq   time2:t1_age_z                             -0.0914  0.207
## 36 f2f_freq   time3:t1_age_z                             -0.0562  0.227
## 37 f2f_freq   t1_f2f_freq_current_z:time2:t1_age_z       -0.0439  0.203
## 38 f2f_freq   t1_f2f_freq_current_z:time3:t1_age_z       -0.145   0.225
## 39 phone_freq t1_phone_freq_current_z                    -0.260   0.167
## 40 phone_freq time2                                      -0.637   0.215
## 41 phone_freq time3                                      -0.844   0.233
## 42 phone_freq t1_age_z                                   -1.84    0.169
## 43 phone_freq countryuk                                   1.75    0.393
## 44 phone_freq countryusa                                  0.932   0.424
## 45 phone_freq t1_phone_freq_current_z:time2              -0.0407  0.214
## 46 phone_freq t1_phone_freq_current_z:time3               0.165   0.230
## 47 phone_freq t1_phone_freq_current_z:t1_age_z            0.0779  0.160
## 48 phone_freq time2:t1_age_z                             -0.213   0.209
## 49 phone_freq time3:t1_age_z                             -0.204   0.234
## 50 phone_freq t1_phone_freq_current_z:time2:t1_age_z     -0.220   0.202
## 51 phone_freq t1_phone_freq_current_z:time3:t1_age_z     -0.265   0.221
## 52 elec_freq  t1_elec_freq_current_z                      0.131   0.167
## 53 elec_freq  time2                                      -0.614   0.216
## 54 elec_freq  time3                                      -0.830   0.233
## 55 elec_freq  t1_age_z                                   -1.81    0.167
## 56 elec_freq  countryuk                                   1.76    0.393
## 57 elec_freq  countryusa                                  0.980   0.426
## 58 elec_freq  t1_elec_freq_current_z:time2               -0.271   0.220
## 59 elec_freq  t1_elec_freq_current_z:time3               -0.100   0.247
## 60 elec_freq  t1_elec_freq_current_z:t1_age_z            -0.289   0.174
## 61 elec_freq  time2:t1_age_z                             -0.190   0.204
## 62 elec_freq  time3:t1_age_z                             -0.145   0.223
## 63 elec_freq  t1_elec_freq_current_z:time2:t1_age_z       0.125   0.236
## 64 elec_freq  t1_elec_freq_current_z:time3:t1_age_z       0.159   0.255
##            t        p CI_Lower CI_Upper p.sig     FDRp FDRp.sig
##        <dbl>    <dbl>    <dbl>    <dbl> <chr>    <dbl> <chr>   
##  1  -1.39    1.64e- 1  -0.599    0.101  ""    3.72e- 1 ""      
##  2  -4.44    9.68e- 6  -1.16    -0.451  "*"   8.07e- 5 "*"     
##  3  -2.92    3.61e- 3  -1.10    -0.216  "*"   1.81e- 2 "*"     
##  4  -3.34    8.69e- 4  -1.29    -0.336  "*"   5.43e- 3 "*"     
##  5 -11.0     6.73e-27  -2.24    -1.56   "*"   1.68e-25 "*"     
##  6   4.70    2.91e- 6   1.07     2.60   "*"   3.64e- 5 "*"     
##  7   2.48    1.32e- 2   0.220    1.87   "*"   5.48e- 2 ""      
##  8  -0.829   4.08e- 1  -0.420    0.171  ""    7.28e- 1 ""      
##  9  -0.205   8.38e- 1  -0.514    0.417  ""    9.52e- 1 ""      
## 10  -1.06    2.91e- 1  -0.820    0.246  ""    6.06e- 1 ""      
## 11  -0.542   5.88e- 1  -0.627    0.355  ""    8.64e- 1 ""      
## 12   0.520   6.03e- 1  -0.400    0.689  ""    8.64e- 1 ""      
## 13   0.310   7.56e- 1  -0.288    0.396  ""    9.45e- 1 ""      
## 14   0.997   3.19e- 1  -0.171    0.525  ""    6.13e- 1 ""      
## 15  -0.462   6.44e- 1  -0.526    0.325  ""    8.64e- 1 ""      
## 16  -0.446   6.56e- 1  -0.576    0.362  ""    8.64e- 1 ""      
## 17  -0.116   9.08e- 1  -0.375    0.333  ""    9.87e- 1 ""      
## 18  -0.0474  9.62e- 1  -0.405    0.385  ""    9.93e- 1 ""      
## 19   1.46    1.44e- 1  -0.0599   0.410  ""    3.60e- 1 ""      
## 20   1.47    1.41e- 1  -0.103    0.721  ""    3.60e- 1 ""      
## 21   2.19    2.88e- 2   0.0549   1.00   "*"   1.03e- 1 ""      
## 22  -0.445   6.57e- 1  -0.552    0.348  ""    8.64e- 1 ""      
## 23  -1.86    6.32e- 2  -0.984    0.0263 ""    1.97e- 1 ""      
## 24   0.226   8.21e- 1  -0.306    0.385  ""    9.52e- 1 ""      
## 25   0.00863 9.93e- 1  -0.402    0.405  ""    9.93e- 1 ""      
## 26  -1.89    5.93e- 2  -0.649    0.0125 ""    1.14e- 1 ""      
## 27  -2.98    2.93e- 3  -1.08    -0.223  "*"   9.51e- 3 "*"     
## 28  -3.59    3.54e- 4  -1.31    -0.384  "*"   1.53e- 3 "*"     
## 29 -10.8     4.46e-26  -2.12    -1.46   "*"   5.79e-25 "*"     
## 30   4.04    5.76e- 5   0.820    2.37   "*"   3.74e- 4 "*"     
## 31   2.18    2.92e- 2   0.0937   1.75   "*"   7.59e- 2 ""      
## 32  -1.68    9.27e- 2  -0.806    0.0618 ""    1.51e- 1 ""      
## 33  -1.56    1.20e- 1  -0.844    0.0971 ""    1.73e- 1 ""      
## 34   1.87    6.12e- 2  -0.0140   0.611  ""    1.14e- 1 ""      
## 35  -0.442   6.58e- 1  -0.497    0.314  ""    7.78e- 1 ""      
## 36  -0.247   8.05e- 1  -0.503    0.390  ""    8.29e- 1 ""      
## 37  -0.216   8.29e- 1  -0.443    0.355  ""    8.29e- 1 ""      
## 38  -0.644   5.20e- 1  -0.587    0.297  ""    6.76e- 1 ""      
## 39  -1.56    1.20e- 1  -0.587    0.0675 ""    2.59e- 1 ""      
## 40  -2.96    3.13e- 3  -1.06    -0.215  "*"   1.02e- 2 "*"     
## 41  -3.61    3.21e- 4  -1.30    -0.386  "*"   1.39e- 3 "*"     
## 42 -10.9     1.79e-26  -2.17    -1.51   "*"   2.33e-25 "*"     
## 43   4.45    9.32e- 6   0.978    2.52   "*"   6.06e- 5 "*"     
## 44   2.20    2.81e- 2   0.100    1.76   "*"   7.30e- 2 ""      
## 45  -0.190   8.49e- 1  -0.461    0.379  ""    8.49e- 1 ""      
## 46   0.716   4.74e- 1  -0.287    0.616  ""    5.60e- 1 ""      
## 47   0.486   6.27e- 1  -0.237    0.393  ""    6.79e- 1 ""      
## 48  -1.02    3.07e- 1  -0.624    0.197  ""    4.44e- 1 ""      
## 49  -0.872   3.83e- 1  -0.663    0.255  ""    4.98e- 1 ""      
## 50  -1.09    2.76e- 1  -0.617    0.177  ""    4.44e- 1 ""      
## 51  -1.20    2.31e- 1  -0.699    0.169  ""    4.28e- 1 ""      
## 52   0.784   4.33e- 1  -0.197    0.460  ""    6.26e- 1 ""      
## 53  -2.85    4.54e- 3  -1.04    -0.191  "*"   1.48e- 2 "*"     
## 54  -3.56    3.89e- 4  -1.29    -0.373  "*"   1.69e- 3 "*"     
## 55 -10.9     1.91e-26  -2.14    -1.48   "*"   2.49e-25 "*"     
## 56   4.47    8.70e- 6   0.985    2.53   "*"   5.66e- 5 "*"     
## 57   2.30    2.14e- 2   0.145    1.82   "*"   5.57e- 2 ""      
## 58  -1.23    2.19e- 1  -0.703    0.161  ""    4.07e- 1 ""      
## 59  -0.406   6.85e- 1  -0.584    0.384  ""    6.85e- 1 ""      
## 60  -1.66    9.77e- 2  -0.631    0.0531 ""    2.12e- 1 ""      
## 61  -0.931   3.52e- 1  -0.590    0.211  ""    5.72e- 1 ""      
## 62  -0.651   5.15e- 1  -0.583    0.293  ""    6.29e- 1 ""      
## 63   0.530   5.96e- 1  -0.338    0.588  ""    6.46e- 1 ""      
## 64   0.626   5.32e- 1  -0.340    0.659  ""    6.29e- 1 ""

Loneliness

### Loneliness & networks
lon_net_senmodel <- lmer( ucla_loneliness_total ~ t1_density_z * t1_closeness_z * time * t1_age_z + country + (1 | ID), 
                             data = full_data_long)

### Loneliness & frequency of contact (f2f)
lon_f2f_freq_senmodel <- lmer( ucla_loneliness_total ~ t1_f2f_freq_current_z * time * t1_age_z + country + (1 | ID), 
                            data = full_data_long)

### Loneliness & frequency of contact (phone)
lon_phone_freq_senmodel <- lmer( ucla_loneliness_total ~ t1_phone_freq_current_z * time * t1_age_z + country + (1 | ID), 
                              data = full_data_long)

### Loneliness & frequency of contact (electronic)
lon_elec_freq_senmodel <- lmer(ucla_loneliness_total ~ t1_elec_freq_current_z * time * t1_age_z + country + (1 | ID), 
                            data = full_data_long)
# List of models
h5_lon_senmodels <- list(
  net = lon_net_senmodel,
  f2f_freq = lon_f2f_freq_senmodel,
  phone_freq = lon_phone_freq_senmodel,
  elec_freq = lon_elec_freq_senmodel
)

# Extract results using tidy
h5_lon_senresults <- lapply(h5_lon_senmodels, function(model) {
  broom.mixed::tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper)
})

h5_lon_senresults_df <- bind_rows(h5_lon_senresults, .id = "measure") %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

# Examine interaction effects 
h5_lon_int_senresults <- h5_lon_senresults_df %>%
 # filter(str_detect(Variable, ":")) %>% 
  group_by(measure) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>% 
  ungroup()
print(h5_lon_int_senresults) #Significant interaction- t1_density_z:t1_closeness_z:time2 for loneliness
## # A tibble: 64 × 11
##    measure    Variable                                          B    SE        t
##    <chr>      <chr>                                         <dbl> <dbl>    <dbl>
##  1 net        t1_density_z                               -1.10    0.458 -2.39   
##  2 net        t1_closeness_z                             -2.37    0.466 -5.08   
##  3 net        time2                                      -0.136   0.590 -0.231  
##  4 net        time3                                       1.45    0.638  2.27   
##  5 net        t1_age_z                                   -4.02    0.444 -9.05   
##  6 net        countryuk                                   3.52    1.00   3.52   
##  7 net        countryusa                                  3.48    1.08   3.22   
##  8 net        t1_density_z:t1_closeness_z                -0.866   0.386 -2.24   
##  9 net        t1_density_z:time2                         -0.157   0.621 -0.253  
## 10 net        t1_density_z:time3                          0.231   0.710  0.325  
## 11 net        t1_closeness_z:time2                       -1.71    0.654 -2.61   
## 12 net        t1_closeness_z:time3                       -0.416   0.726 -0.573  
## 13 net        t1_density_z:t1_age_z                      -0.650   0.447 -1.46   
## 14 net        t1_closeness_z:t1_age_z                     0.154   0.455  0.337  
## 15 net        time2:t1_age_z                              0.00179 0.567  0.00317
## 16 net        time3:t1_age_z                              0.119   0.625  0.190  
## 17 net        t1_density_z:t1_closeness_z:time2           1.61    0.472  3.41   
## 18 net        t1_density_z:t1_closeness_z:time3           0.587   0.526  1.12   
## 19 net        t1_density_z:t1_closeness_z:t1_age_z        0.550   0.307  1.79   
## 20 net        t1_density_z:time2:t1_age_z                -0.0138  0.549 -0.0251 
## 21 net        t1_density_z:time3:t1_age_z                -0.219   0.632 -0.347  
## 22 net        t1_closeness_z:time2:t1_age_z               0.337   0.600  0.562  
## 23 net        t1_closeness_z:time3:t1_age_z               0.220   0.673  0.326  
## 24 net        t1_density_z:t1_closeness_z:time2:t1_age_z -0.865   0.460 -1.88   
## 25 net        t1_density_z:t1_closeness_z:time3:t1_age_z -1.01    0.538 -1.87   
## 26 f2f_freq   t1_f2f_freq_current_z                      -1.43    0.436 -3.28   
## 27 f2f_freq   time2                                       0.638   0.586  1.09   
## 28 f2f_freq   time3                                       1.75    0.635  2.75   
## 29 f2f_freq   t1_age_z                                   -3.46    0.430 -8.05   
## 30 f2f_freq   countryuk                                   2.87    1.02   2.82   
## 31 f2f_freq   countryusa                                  3.11    1.09   2.85   
## 32 f2f_freq   t1_f2f_freq_current_z:time2                -0.983   0.595 -1.65   
## 33 f2f_freq   t1_f2f_freq_current_z:time3                -0.540   0.645 -0.838  
## 34 f2f_freq   t1_f2f_freq_current_z:t1_age_z              0.207   0.412  0.502  
## 35 f2f_freq   time2:t1_age_z                             -0.348   0.556 -0.626  
## 36 f2f_freq   time3:t1_age_z                             -0.188   0.612 -0.307  
## 37 f2f_freq   t1_f2f_freq_current_z:time2:t1_age_z       -0.0681  0.547 -0.124  
## 38 f2f_freq   t1_f2f_freq_current_z:time3:t1_age_z       -0.426   0.605 -0.703  
## 39 phone_freq t1_phone_freq_current_z                    -1.08    0.431 -2.50   
## 40 phone_freq time2                                       0.634   0.577  1.10   
## 41 phone_freq time3                                       1.79    0.627  2.86   
## 42 phone_freq t1_age_z                                   -3.84    0.438 -8.77   
## 43 phone_freq countryuk                                   3.39    1.01   3.35   
## 44 phone_freq countryusa                                  3.12    1.09   2.86   
## 45 phone_freq t1_phone_freq_current_z:time2              -0.738   0.575 -1.28   
## 46 phone_freq t1_phone_freq_current_z:time3               0.819   0.618  1.33   
## 47 phone_freq t1_phone_freq_current_z:t1_age_z           -0.508   0.415 -1.23   
## 48 phone_freq time2:t1_age_z                             -0.750   0.561 -1.34   
## 49 phone_freq time3:t1_age_z                             -0.342   0.628 -0.545  
## 50 phone_freq t1_phone_freq_current_z:time2:t1_age_z     -0.717   0.543 -1.32   
## 51 phone_freq t1_phone_freq_current_z:time3:t1_age_z     -0.247   0.593 -0.416  
## 52 elec_freq  t1_elec_freq_current_z                     -0.112   0.434 -0.258  
## 53 elec_freq  time2                                       0.770   0.581  1.33   
## 54 elec_freq  time3                                       1.77    0.626  2.83   
## 55 elec_freq  t1_age_z                                   -3.64    0.432 -8.42   
## 56 elec_freq  countryuk                                   3.44    1.02   3.38   
## 57 elec_freq  countryusa                                  3.21    1.10   2.92   
## 58 elec_freq  t1_elec_freq_current_z:time2               -0.587   0.592 -0.991  
## 59 elec_freq  t1_elec_freq_current_z:time3                0.600   0.663  0.904  
## 60 elec_freq  t1_elec_freq_current_z:t1_age_z            -0.917   0.452 -2.03   
## 61 elec_freq  time2:t1_age_z                             -0.618   0.549 -1.13   
## 62 elec_freq  time3:t1_age_z                             -0.258   0.600 -0.429  
## 63 elec_freq  t1_elec_freq_current_z:time2:t1_age_z       0.432   0.635  0.681  
## 64 elec_freq  t1_elec_freq_current_z:time3:t1_age_z       0.413   0.685  0.603  
##           p CI_Lower CI_Upper p.sig     FDRp FDRp.sig
##       <dbl>    <dbl>    <dbl> <chr>    <dbl> <chr>   
##  1 1.68e- 2  -1.99    -0.198  "*"   6.01e- 2 ""      
##  2 4.18e- 7  -3.28    -1.46   "*"   5.22e- 6 "*"     
##  3 8.18e- 1  -1.30     1.02   ""    9.23e- 1 ""      
##  4 2.37e- 2   0.193    2.70   "*"   6.98e- 2 ""      
##  5 4.61e-19  -4.89    -3.15   "*"   1.15e-17 "*"     
##  6 4.48e- 4   1.56     5.48   "*"   3.74e- 3 "*"     
##  7 1.30e- 3   1.36     5.59   "*"   6.52e- 3 "*"     
##  8 2.51e- 2  -1.62    -0.108  "*"   6.98e- 2 ""      
##  9 8.01e- 1  -1.38     1.06   ""    9.23e- 1 ""      
## 10 7.45e- 1  -1.16     1.63   ""    9.23e- 1 ""      
## 11 9.14e- 3  -2.99    -0.425  "*"   3.81e- 2 "*"     
## 12 5.67e- 1  -1.84     1.01   ""    8.98e- 1 ""      
## 13 1.46e- 1  -1.53     0.226  ""    2.80e- 1 ""      
## 14 7.36e- 1  -0.740    1.05   ""    9.23e- 1 ""      
## 15 9.97e- 1  -1.11     1.11   ""    9.97e- 1 ""      
## 16 8.49e- 1  -1.11     1.35   ""    9.23e- 1 ""      
## 17 6.91e- 4   0.682    2.54   "*"   4.32e- 3 "*"     
## 18 2.65e- 1  -0.446    1.62   ""    4.73e- 1 ""      
## 19 7.36e- 2  -0.0526   1.15   ""    1.53e- 1 ""      
## 20 9.80e- 1  -1.09     1.06   ""    9.97e- 1 ""      
## 21 7.29e- 1  -1.46     1.02   ""    9.23e- 1 ""      
## 22 5.74e- 1  -0.841    1.51   ""    8.98e- 1 ""      
## 23 7.44e- 1  -1.10     1.54   ""    9.23e- 1 ""      
## 24 6.03e- 2  -1.77     0.0377 ""    1.40e- 1 ""      
## 25 6.14e- 2  -2.06     0.0482 ""    1.40e- 1 ""      
## 26 1.07e- 3  -2.29    -0.574  "*"   6.95e- 3 "*"     
## 27 2.77e- 1  -0.512    1.79   ""    5.14e- 1 ""      
## 28 6.17e- 3   0.498    2.99   "*"   1.60e- 2 "*"     
## 29 1.75e-15  -4.31    -2.62   "*"   2.28e-14 "*"     
## 30 4.94e- 3   0.871    4.87   "*"   1.60e- 2 "*"     
## 31 4.39e- 3   0.973    5.25   "*"   1.60e- 2 "*"     
## 32 9.88e- 2  -2.15     0.185  ""    2.14e- 1 ""      
## 33 4.02e- 1  -1.81     0.725  ""    6.54e- 1 ""      
## 34 6.16e- 1  -0.602    1.02   ""    7.28e- 1 ""      
## 35 5.31e- 1  -1.44     0.744  ""    6.91e- 1 ""      
## 36 7.59e- 1  -1.39     1.01   ""    8.22e- 1 ""      
## 37 9.01e- 1  -1.14     1.01   ""    9.01e- 1 ""      
## 38 4.82e- 1  -1.61     0.763  ""    6.91e- 1 ""      
## 39 1.27e- 2  -1.92    -0.230  "*"   3.29e- 2 "*"     
## 40 2.72e- 1  -0.499    1.77   ""    3.21e- 1 ""      
## 41 4.37e- 3   0.561    3.02   "*"   1.42e- 2 "*"     
## 42 4.93e-18  -4.70    -2.98   "*"   6.41e-17 "*"     
## 43 8.29e- 4   1.41     5.38   "*"   5.39e- 3 "*"     
## 44 4.33e- 3   0.979    5.26   "*"   1.42e- 2 "*"     
## 45 1.99e- 1  -1.87     0.390  ""    2.87e- 1 ""      
## 46 1.85e- 1  -0.394    2.03   ""    2.87e- 1 ""      
## 47 2.21e- 1  -1.32     0.305  ""    2.87e- 1 ""      
## 48 1.82e- 1  -1.85     0.351  ""    2.87e- 1 ""      
## 49 5.86e- 1  -1.58     0.891  ""    6.35e- 1 ""      
## 50 1.87e- 1  -1.78     0.349  ""    2.87e- 1 ""      
## 51 6.77e- 1  -1.41     0.918  ""    6.77e- 1 ""      
## 52 7.96e- 1  -0.963    0.739  ""    7.96e- 1 ""      
## 53 1.85e- 1  -0.370    1.91   ""    4.01e- 1 ""      
## 54 4.79e- 3   0.542    3.00   "*"   1.56e- 2 "*"     
## 55 8.97e-17  -4.48    -2.79   "*"   1.17e-15 "*"     
## 56 7.35e- 4   1.44     5.43   "*"   4.78e- 3 "*"     
## 57 3.53e- 3   1.06     5.37   "*"   1.53e- 2 "*"     
## 58 3.22e- 1  -1.75     0.576  ""    5.23e- 1 ""      
## 59 3.66e- 1  -0.702    1.90   ""    5.29e- 1 ""      
## 60 4.26e- 2  -1.80    -0.0307 "*"   1.11e- 1 ""      
## 61 2.60e- 1  -1.70     0.459  ""    4.84e- 1 ""      
## 62 6.68e- 1  -1.44     0.920  ""    7.23e- 1 ""      
## 63 4.96e- 1  -0.814    1.68   ""    6.45e- 1 ""      
## 64 5.47e- 1  -0.931    1.76   ""    6.46e- 1 ""

H6: Changes in frequency of contact (pre-covid to during covid)

Hypothesis: Difference in frequency of contact between before and during COVID-19 is associated with wellbeing Potentially run: frequency of contact (by type) ~ time * country + (1 | ID) # i.e., to see whether frequency of contact changed across the pandemic (lmer)

diff_freq_vars <- c("f2f_freq_diff", "phone_freq_diff", "elec_freq_diff")

Baseline analysis

Main model

Depression
h6_base_phq_results <- list()
h6_base_phq_models <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("t1_phq_total ~ t1_", diff_freq_var, "_z * t1_age_z"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_base_phq_results[[diff_freq_var]] <- tidy_model
  h6_base_phq_models[[diff_freq_var]] <- model
}

h6_base_phq_results_df <- bind_rows(h6_base_phq_results) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h6_base_phq_int_results_df <- h6_base_phq_results_df %>%
  filter(str_detect(Variable, ":")) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )

print(h6_base_phq_results_df)
## # A tibble: 9 × 9
##   Variable                           B    SE      t        p CI_Lower CI_Upper
##   <chr>                          <dbl> <dbl>  <dbl>    <dbl>    <dbl>    <dbl>
## 1 t1_f2f_freq_diff_z             0.417 0.177   2.35 1.87e- 2   0.0695   0.765 
## 2 t1_age_z                      -1.75  0.173 -10.2  2.38e-23  -2.09    -1.41  
## 3 t1_f2f_freq_diff_z:t1_age_z   -0.355 0.160  -2.22 2.65e- 2  -0.668   -0.0414
## 4 t1_phone_freq_diff_z           0.607 0.168   3.62 3.10e- 4   0.278    0.937 
## 5 t1_age_z                      -1.80  0.168 -10.7  1.26e-25  -2.13    -1.47  
## 6 t1_phone_freq_diff_z:t1_age_z -0.392 0.169  -2.32 2.04e- 2  -0.724   -0.0609
## 7 t1_elec_freq_diff_z            0.443 0.169   2.62 8.84e- 3   0.112    0.775 
## 8 t1_age_z                      -1.80  0.168 -10.7  1.01e-25  -2.13    -1.47  
## 9 t1_elec_freq_diff_z:t1_age_z  -0.369 0.177  -2.09 3.71e- 2  -0.716   -0.0221
##   predictor       p.sig
##   <chr>           <chr>
## 1 f2f_freq_diff   *    
## 2 f2f_freq_diff   *    
## 3 f2f_freq_diff   *    
## 4 phone_freq_diff *    
## 5 phone_freq_diff *    
## 6 phone_freq_diff *    
## 7 elec_freq_diff  *    
## 8 elec_freq_diff  *    
## 9 elec_freq_diff  *
print(h6_base_phq_int_results_df)
## # A tibble: 3 × 11
##   Variable                           B    SE     t      p CI_Lower CI_Upper
##   <chr>                          <dbl> <dbl> <dbl>  <dbl>    <dbl>    <dbl>
## 1 t1_f2f_freq_diff_z:t1_age_z   -0.355 0.160 -2.22 0.0265   -0.668  -0.0414
## 2 t1_phone_freq_diff_z:t1_age_z -0.392 0.169 -2.32 0.0204   -0.724  -0.0609
## 3 t1_elec_freq_diff_z:t1_age_z  -0.369 0.177 -2.09 0.0371   -0.716  -0.0221
##   predictor       p.sig   FDRp FDRp.sig
##   <chr>           <chr>  <dbl> <chr>   
## 1 f2f_freq_diff   *     0.0371 *       
## 2 phone_freq_diff *     0.0371 *       
## 3 elec_freq_diff  *     0.0371 *

Plot significant interactions

#Look at interaction 
plot_f2f_freq_diff <- interact_plot(h6_base_phq_models[["f2f_freq_diff"]], pred = "t1_f2f_freq_diff_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (F2F) Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)
plot_f2f_freq_diff

plot_elec_freq_diff <- interact_plot(h6_base_phq_models[["elec_freq_diff"]], pred = "t1_elec_freq_diff_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (Electronic) Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)
plot_elec_freq_diff

plot_phone_freq_diff <- interact_plot(h6_base_phq_models[["phone_freq_diff"]], pred = "t1_phone_freq_diff_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (Phone) Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)

plot_phone_freq_diff

# Create a combined plot for all three frequency of contact differences
plot_base_phq <- plot_f2f_freq_diff / plot_elec_freq_diff / plot_phone_freq_diff 
plot_base_phq

Loneliness
h6_base_lon_results <- list()
h6_base_lon_models <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("t1_ucla_loneliness_total ~ t1_", diff_freq_var, "_z * t1_age_z"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_base_lon_results[[diff_freq_var]] <- tidy_model
  h6_base_lon_models[[diff_freq_var]] <- model
}

h6_base_lon_results_df <- bind_rows(h6_base_lon_results) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", "")) # results show no significant interactions 
h6_base_lon_age_results_df <- h6_base_lon_results_df %>%
  filter(str_detect(Variable, "age")) %>%
  filter(!str_detect(Variable, ":")) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )

h6_base_lon_age_results_df
## # A tibble: 3 × 11
##   Variable     B    SE     t        p CI_Lower CI_Upper predictor       p.sig
##   <chr>    <dbl> <dbl> <dbl>    <dbl>    <dbl>    <dbl> <chr>           <chr>
## 1 t1_age_z -3.36 0.438 -7.67 3.47e-14    -4.22    -2.50 f2f_freq_diff   *    
## 2 t1_age_z -3.56 0.428 -8.32 2.26e-16    -4.40    -2.72 phone_freq_diff *    
## 3 t1_age_z -3.60 0.428 -8.41 1.12e-16    -4.44    -2.76 elec_freq_diff  *    
##       FDRp FDRp.sig
##      <dbl> <chr>   
## 1 3.47e-14 *       
## 2 3.39e-16 *       
## 3 3.37e-16 *

No significant interactions for loneliness

Sensitivity analyses

Depression
h6_base_phq_senresults <- list()
h6_base_phq_senmodels <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("t1_phq_total ~ t1_", diff_freq_var, "_z * t1_age_z + country"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_base_phq_senresults[[diff_freq_var]] <- tidy_model
  h6_base_phq_senmodels[[diff_freq_var]] <- model
}

h6_base_phq_senresults_df <- bind_rows(h6_base_phq_senresults) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))

h6_base_phq_int_senresults_df <- h6_base_phq_senresults_df %>%
  filter(str_detect(Variable, ":")) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )

print(h6_base_phq_senresults_df)
## # A tibble: 15 × 9
##    Variable                           B    SE      t        p CI_Lower CI_Upper
##    <chr>                          <dbl> <dbl>  <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z             0.329 0.178   1.84 6.57e- 2 -0.0214   0.679  
##  2 t1_age_z                      -1.76  0.172 -10.2  1.32e-23 -2.09    -1.42   
##  3 countryuk                      1.54  0.412   3.72 2.05e- 4  0.726    2.34   
##  4 countryusa                     0.917 0.443   2.07 3.85e- 2  0.0487   1.79   
##  5 t1_f2f_freq_diff_z:t1_age_z   -0.355 0.159  -2.24 2.55e- 2 -0.667   -0.0437 
##  6 t1_phone_freq_diff_z           0.597 0.167   3.57 3.73e- 4  0.269    0.925  
##  7 t1_age_z                      -1.78  0.167 -10.7  1.92e-25 -2.11    -1.45   
##  8 countryuk                      1.63  0.408   3.99 7.07e- 5  0.825    2.42   
##  9 countryusa                     0.870 0.442   1.97 4.91e- 2  0.00335  1.74   
## 10 t1_phone_freq_diff_z:t1_age_z -0.379 0.168  -2.26 2.42e- 2 -0.709   -0.0496 
## 11 t1_elec_freq_diff_z            0.434 0.168   2.58 1.00e- 2  0.104    0.764  
## 12 t1_age_z                      -1.78  0.167 -10.7  1.50e-25 -2.11    -1.46   
## 13 countryuk                      1.62  0.409   3.97 7.58e- 5  0.821    2.42   
## 14 countryusa                     0.887 0.443   2.00 4.53e- 2  0.0187   1.76   
## 15 t1_elec_freq_diff_z:t1_age_z  -0.347 0.176  -1.97 4.89e- 2 -0.693   -0.00167
##    predictor       p.sig
##    <chr>           <chr>
##  1 f2f_freq_diff   ""   
##  2 f2f_freq_diff   "*"  
##  3 f2f_freq_diff   "*"  
##  4 f2f_freq_diff   "*"  
##  5 f2f_freq_diff   "*"  
##  6 phone_freq_diff "*"  
##  7 phone_freq_diff "*"  
##  8 phone_freq_diff "*"  
##  9 phone_freq_diff "*"  
## 10 phone_freq_diff "*"  
## 11 elec_freq_diff  "*"  
## 12 elec_freq_diff  "*"  
## 13 elec_freq_diff  "*"  
## 14 elec_freq_diff  "*"  
## 15 elec_freq_diff  "*"
print(h6_base_phq_int_senresults_df)
## # A tibble: 3 × 11
##   Variable                           B    SE     t      p CI_Lower CI_Upper
##   <chr>                          <dbl> <dbl> <dbl>  <dbl>    <dbl>    <dbl>
## 1 t1_f2f_freq_diff_z:t1_age_z   -0.355 0.159 -2.24 0.0255   -0.667 -0.0437 
## 2 t1_phone_freq_diff_z:t1_age_z -0.379 0.168 -2.26 0.0242   -0.709 -0.0496 
## 3 t1_elec_freq_diff_z:t1_age_z  -0.347 0.176 -1.97 0.0489   -0.693 -0.00167
##   predictor       p.sig   FDRp FDRp.sig
##   <chr>           <chr>  <dbl> <chr>   
## 1 f2f_freq_diff   *     0.0382 *       
## 2 phone_freq_diff *     0.0382 *       
## 3 elec_freq_diff  *     0.0489 *
Loneliness
h6_base_lon_senresults <- list()
h6_base_lon_senmodels <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("t1_ucla_loneliness_total ~ t1_", diff_freq_var, "_z * t1_age_z + country"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_base_lon_senresults[[diff_freq_var]] <- tidy_model
  h6_base_lon_senmodels[[diff_freq_var]] <- model
}

h6_base_lon_senresults_df <- bind_rows(h6_base_lon_senresults) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", "")) #results show no significant interactions 
h6_base_lon_age_senresults_df <- h6_base_lon_senresults_df %>%
 # filter(!str_detect(Variable, ":")) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  )

h6_base_lon_age_senresults_df
## # A tibble: 15 × 11
##    Variable                           B    SE      t        p CI_Lower CI_Upper
##    <chr>                          <dbl> <dbl>  <dbl>    <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z             1.29  0.454  2.84  4.58e- 3   0.399     2.18 
##  2 t1_age_z                      -3.34  0.438 -7.63  4.60e-14  -4.20     -2.48 
##  3 countryuk                      2.42  1.05   2.31  2.12e- 2   0.362     4.48 
##  4 countryusa                     2.98  1.13   2.64  8.38e- 3   0.765     5.19 
##  5 t1_f2f_freq_diff_z:t1_age_z   -0.509 0.405 -1.26  2.09e- 1  -1.30      0.285
##  6 t1_phone_freq_diff_z           1.26  0.427  2.95  3.27e- 3   0.421     2.10 
##  7 t1_age_z                      -3.52  0.427 -8.24  4.17e-16  -4.36     -2.68 
##  8 countryuk                      2.80  1.04   2.69  7.26e- 3   0.757     4.84 
##  9 countryusa                     2.92  1.13   2.58  9.89e- 3   0.702     5.13 
## 10 t1_phone_freq_diff_z:t1_age_z -0.453 0.430 -1.05  2.92e- 1  -1.30      0.390
## 11 t1_elec_freq_diff_z            0.869 0.430  2.02  4.34e- 2   0.0258    1.71 
## 12 t1_age_z                      -3.55  0.427 -8.33  2.13e-16  -4.39     -2.72 
## 13 countryuk                      2.81  1.04   2.69  7.19e- 3   0.762     4.86 
## 14 countryusa                     2.98  1.13   2.64  8.40e- 3   0.766     5.20 
## 15 t1_elec_freq_diff_z:t1_age_z  -0.386 0.450 -0.858 3.91e- 1  -1.27      0.496
##    predictor       p.sig     FDRp FDRp.sig
##    <chr>           <chr>    <dbl> <chr>   
##  1 f2f_freq_diff   "*"   1.37e- 2 "*"     
##  2 f2f_freq_diff   "*"   2.30e-13 "*"     
##  3 f2f_freq_diff   "*"   2.90e- 2 "*"     
##  4 f2f_freq_diff   "*"   1.40e- 2 "*"     
##  5 f2f_freq_diff   ""    2.41e- 1 ""      
##  6 phone_freq_diff "*"   1.23e- 2 "*"     
##  7 phone_freq_diff "*"   3.13e-15 "*"     
##  8 phone_freq_diff "*"   1.40e- 2 "*"     
##  9 phone_freq_diff "*"   1.48e- 2 "*"     
## 10 phone_freq_diff ""    3.13e- 1 ""      
## 11 elec_freq_diff  "*"   5.42e- 2 ""      
## 12 elec_freq_diff  "*"   3.13e-15 "*"     
## 13 elec_freq_diff  "*"   1.40e- 2 "*"     
## 14 elec_freq_diff  "*"   1.40e- 2 "*"     
## 15 elec_freq_diff  ""    3.91e- 1 ""

No significant interactions for loneliness

Longitudinal analysis

Main model

Depression
h6_phq_results <- list()
h6_phq_models <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("phq_total ~ t1_", diff_freq_var, "_z * t1_age_z * time + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_phq_results[[diff_freq_var]] <- tidy_model
  h6_phq_models[[diff_freq_var]] <- model
  
  h6_phq_results_df <- bind_rows(h6_phq_results) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h6_phq_int_results_df <- h6_phq_results_df %>%
  filter(str_detect(Variable, ":t1_age_z:")) # no significant 3-way interaction

h6_phq_fdr_results_df <- h6_phq_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()
print(h6_phq_fdr_results_df)
## # A tibble: 33 × 11
##    Variable                                  B    SE       t        p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z                   0.417  0.176   2.38  1.76e- 2  0.0728 
##  2 t1_age_z                            -1.75   0.171 -10.3   7.52e-24 -2.09   
##  3 time2                               -0.627  0.222  -2.82  4.86e- 3 -1.06   
##  4 time3                               -0.870  0.240  -3.62  3.11e- 4 -1.34   
##  5 t1_f2f_freq_diff_z:t1_age_z         -0.355  0.158  -2.24  2.51e- 2 -0.665  
##  6 t1_f2f_freq_diff_z:time2             0.395  0.231   1.71  8.84e- 2 -0.0595 
##  7 t1_f2f_freq_diff_z:time3             0.328  0.250   1.31  1.90e- 1 -0.163  
##  8 t1_age_z:time2                      -0.0397 0.214  -0.185 8.53e- 1 -0.460  
##  9 t1_age_z:time3                      -0.0372 0.236  -0.158 8.75e- 1 -0.500  
## 10 t1_f2f_freq_diff_z:t1_age_z:time2    0.134  0.197   0.679 4.97e- 1 -0.254  
## 11 t1_f2f_freq_diff_z:t1_age_z:time3    0.0640 0.212   0.301 7.63e- 1 -0.353  
## 12 t1_phone_freq_diff_z                 0.607  0.167   3.64  2.77e- 4  0.280  
## 13 t1_age_z                            -1.80   0.167 -10.8   4.27e-26 -2.12   
## 14 time2                               -0.582  0.216  -2.70  7.15e- 3 -1.00   
## 15 time3                               -0.832  0.231  -3.60  3.44e- 4 -1.29   
## 16 t1_phone_freq_diff_z:t1_age_z       -0.392  0.168  -2.34  1.94e- 2 -0.721  
## 17 t1_phone_freq_diff_z:time2          -0.0783 0.216  -0.363 7.17e- 1 -0.502  
## 18 t1_phone_freq_diff_z:time3          -0.160  0.225  -0.713 4.76e- 1 -0.602  
## 19 t1_age_z:time2                      -0.137  0.205  -0.667 5.05e- 1 -0.540  
## 20 t1_age_z:time3                      -0.148  0.222  -0.668 5.04e- 1 -0.585  
## 21 t1_phone_freq_diff_z:t1_age_z:time2  0.389  0.201   1.94  5.31e- 2 -0.00521
## 22 t1_phone_freq_diff_z:t1_age_z:time3  0.215  0.211   1.02  3.09e- 1 -0.199  
## 23 t1_elec_freq_diff_z                  0.443  0.168   2.65  8.24e- 3  0.115  
## 24 t1_age_z                            -1.80   0.166 -10.8   2.93e-26 -2.13   
## 25 time2                               -0.607  0.214  -2.84  4.56e- 3 -1.03   
## 26 time3                               -0.851  0.231  -3.68  2.51e- 4 -1.30   
## 27 t1_elec_freq_diff_z:t1_age_z        -0.369  0.175  -2.11  3.54e- 2 -0.713  
## 28 t1_elec_freq_diff_z:time2            0.347  0.210   1.65  9.84e- 2 -0.0646 
## 29 t1_elec_freq_diff_z:time3           -0.0613 0.262  -0.234 8.15e- 1 -0.575  
## 30 t1_age_z:time2                      -0.133  0.203  -0.655 5.13e- 1 -0.531  
## 31 t1_age_z:time3                      -0.151  0.221  -0.681 4.96e- 1 -0.585  
## 32 t1_elec_freq_diff_z:t1_age_z:time2   0.307  0.214   1.43  1.53e- 1 -0.114  
## 33 t1_elec_freq_diff_z:t1_age_z:time3  -0.118  0.262  -0.450 6.53e- 1 -0.632  
##    CI_Upper predictor       p.sig     FDRp FDRp.sig
##       <dbl> <chr>           <chr>    <dbl> <chr>   
##  1   0.762  f2f_freq_diff   "*"   4.85e- 2 "*"     
##  2  -1.42   f2f_freq_diff   "*"   8.27e-23 "*"     
##  3  -0.191  f2f_freq_diff   "*"   1.78e- 2 "*"     
##  4  -0.399  f2f_freq_diff   "*"   1.71e- 3 "*"     
##  5  -0.0444 f2f_freq_diff   "*"   5.52e- 2 ""      
##  6   0.849  f2f_freq_diff   ""    1.62e- 1 ""      
##  7   0.818  f2f_freq_diff   ""    2.99e- 1 ""      
##  8   0.381  f2f_freq_diff   ""    8.75e- 1 ""      
##  9   0.426  f2f_freq_diff   ""    8.75e- 1 ""      
## 10   0.522  f2f_freq_diff   ""    6.84e- 1 ""      
## 11   0.481  f2f_freq_diff   ""    8.75e- 1 ""      
## 12   0.934  phone_freq_diff "*"   1.26e- 3 "*"     
## 13  -1.47   phone_freq_diff "*"   4.70e-25 "*"     
## 14  -0.158  phone_freq_diff "*"   1.97e- 2 "*"     
## 15  -0.378  phone_freq_diff "*"   1.26e- 3 "*"     
## 16  -0.0634 phone_freq_diff "*"   4.28e- 2 "*"     
## 17   0.346  phone_freq_diff ""    7.17e- 1 ""      
## 18   0.281  phone_freq_diff ""    5.55e- 1 ""      
## 19   0.266  phone_freq_diff ""    5.55e- 1 ""      
## 20   0.288  phone_freq_diff ""    5.55e- 1 ""      
## 21   0.782  phone_freq_diff ""    9.74e- 2 ""      
## 22   0.629  phone_freq_diff ""    4.85e- 1 ""      
## 23   0.772  elec_freq_diff  "*"   2.27e- 2 "*"     
## 24  -1.47   elec_freq_diff  "*"   3.23e-25 "*"     
## 25  -0.188  elec_freq_diff  "*"   1.67e- 2 "*"     
## 26  -0.397  elec_freq_diff  "*"   1.38e- 3 "*"     
## 27  -0.0252 elec_freq_diff  "*"   7.80e- 2 ""      
## 28   0.759  elec_freq_diff  ""    1.80e- 1 ""      
## 29   0.452  elec_freq_diff  ""    8.15e- 1 ""      
## 30   0.265  elec_freq_diff  ""    6.27e- 1 ""      
## 31   0.283  elec_freq_diff  ""    6.27e- 1 ""      
## 32   0.728  elec_freq_diff  ""    2.40e- 1 ""      
## 33   0.396  elec_freq_diff  ""    7.18e- 1 ""
print(h6_phq_int_results_df)
## # A tibble: 6 × 9
##   Variable                                  B    SE      t      p CI_Lower
##   <chr>                                 <dbl> <dbl>  <dbl>  <dbl>    <dbl>
## 1 t1_f2f_freq_diff_z:t1_age_z:time2    0.134  0.197  0.679 0.497  -0.254  
## 2 t1_f2f_freq_diff_z:t1_age_z:time3    0.0640 0.212  0.301 0.763  -0.353  
## 3 t1_phone_freq_diff_z:t1_age_z:time2  0.389  0.201  1.94  0.0531 -0.00521
## 4 t1_phone_freq_diff_z:t1_age_z:time3  0.215  0.211  1.02  0.309  -0.199  
## 5 t1_elec_freq_diff_z:t1_age_z:time2   0.307  0.214  1.43  0.153  -0.114  
## 6 t1_elec_freq_diff_z:t1_age_z:time3  -0.118  0.262 -0.450 0.653  -0.632  
##   CI_Upper predictor       p.sig
##      <dbl> <chr>           <chr>
## 1    0.522 f2f_freq_diff   ""   
## 2    0.481 f2f_freq_diff   ""   
## 3    0.782 phone_freq_diff ""   
## 4    0.629 phone_freq_diff ""   
## 5    0.728 elec_freq_diff  ""   
## 6    0.396 elec_freq_diff  ""
Loneliness
h6_ucla_results <- list()
h6_ucla_models <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("ucla_loneliness_total ~ t1_", diff_freq_var, "_z * t1_age_z * time + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_ucla_results[[diff_freq_var]] <- tidy_model
  h6_ucla_models[[diff_freq_var]] <- model
  
  h6_ucla_results_df <- bind_rows(h6_ucla_results) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h6_ucla_fdr_results_df <- h6_ucla_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h6_ucla_int_results_df <- h6_ucla_fdr_results_df %>%
  filter(str_detect(Variable, ":"))# no significant interaction
print(h6_ucla_fdr_results_df)
## # A tibble: 33 × 11
##    Variable                                  B    SE       t        p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z                   1.39   0.455  3.05   2.34e- 3   0.494 
##  2 t1_age_z                            -3.36   0.442 -7.60   5.36e-14  -4.23  
##  3 time2                                0.630  0.598  1.05   2.93e- 1  -0.544 
##  4 time3                                1.64   0.647  2.54   1.12e- 2   0.375 
##  5 t1_f2f_freq_diff_z:t1_age_z         -0.516  0.409 -1.26   2.08e- 1  -1.32  
##  6 t1_f2f_freq_diff_z:time2             0.211  0.623  0.339  7.35e- 1  -1.01  
##  7 t1_f2f_freq_diff_z:time3             0.361  0.673  0.537  5.91e- 1  -0.959 
##  8 t1_age_z:time2                      -0.495  0.577 -0.859  3.91e- 1  -1.63  
##  9 t1_age_z:time3                      -0.211  0.635 -0.332  7.40e- 1  -1.46  
## 10 t1_f2f_freq_diff_z:t1_age_z:time2   -0.171  0.532 -0.321  7.48e- 1  -1.22  
## 11 t1_f2f_freq_diff_z:t1_age_z:time3   -0.0271 0.572 -0.0474 9.62e- 1  -1.15  
## 12 t1_phone_freq_diff_z                 1.31   0.432  3.03   2.46e- 3   0.463 
## 13 t1_age_z                            -3.56   0.432 -8.25   3.64e-16  -4.41  
## 14 time2                                0.656  0.581  1.13   2.59e- 1  -0.484 
## 15 time3                                1.72   0.623  2.76   5.90e- 3   0.497 
## 16 t1_phone_freq_diff_z:t1_age_z       -0.472  0.434 -1.09   2.78e- 1  -1.32  
## 17 t1_phone_freq_diff_z:time2           0.454  0.582  0.780  4.36e- 1  -0.689 
## 18 t1_phone_freq_diff_z:time3           0.266  0.606  0.440  6.60e- 1  -0.923 
## 19 t1_age_z:time2                      -0.514  0.553 -0.929  3.53e- 1  -1.60  
## 20 t1_age_z:time3                      -0.337  0.599 -0.563  5.73e- 1  -1.51  
## 21 t1_phone_freq_diff_z:t1_age_z:time2 -0.301  0.541 -0.557  5.77e- 1  -1.36  
## 22 t1_phone_freq_diff_z:t1_age_z:time3  0.127  0.568  0.223  8.24e- 1  -0.989 
## 23 t1_elec_freq_diff_z                  0.901  0.435  2.07   3.83e- 2   0.0488
## 24 t1_age_z                            -3.60   0.432 -8.33   1.88e-16  -4.44  
## 25 time2                                0.690  0.573  1.20   2.29e- 1  -0.436 
## 26 time3                                1.77   0.621  2.85   4.49e- 3   0.551 
## 27 t1_elec_freq_diff_z:t1_age_z        -0.437  0.455 -0.962  3.36e- 1  -1.33  
## 28 t1_elec_freq_diff_z:time2            0.686  0.563  1.22   2.24e- 1  -0.420 
## 29 t1_elec_freq_diff_z:time3            0.678  0.703  0.965  3.35e- 1  -0.701 
## 30 t1_age_z:time2                      -0.570  0.544 -1.05   2.96e- 1  -1.64  
## 31 t1_age_z:time3                      -0.350  0.594 -0.589  5.56e- 1  -1.52  
## 32 t1_elec_freq_diff_z:t1_age_z:time2  -0.890  0.576 -1.54   1.23e- 1  -2.02  
## 33 t1_elec_freq_diff_z:t1_age_z:time3  -0.482  0.703 -0.686  4.93e- 1  -1.86  
##    CI_Upper predictor       p.sig     FDRp FDRp.sig
##       <dbl> <chr>           <chr>    <dbl> <chr>   
##  1    2.28  f2f_freq_diff   "*"   1.29e- 2 "*"     
##  2   -2.49  f2f_freq_diff   "*"   5.89e-13 "*"     
##  3    1.80  f2f_freq_diff   ""    6.44e- 1 ""      
##  4    2.91  f2f_freq_diff   "*"   4.11e- 2 "*"     
##  5    0.287 f2f_freq_diff   ""    5.72e- 1 ""      
##  6    1.43  f2f_freq_diff   ""    8.23e- 1 ""      
##  7    1.68  f2f_freq_diff   ""    8.23e- 1 ""      
##  8    0.637 f2f_freq_diff   ""    7.16e- 1 ""      
##  9    1.04  f2f_freq_diff   ""    8.23e- 1 ""      
## 10    0.874 f2f_freq_diff   ""    8.23e- 1 ""      
## 11    1.10  f2f_freq_diff   ""    9.62e- 1 ""      
## 12    2.16  phone_freq_diff "*"   1.35e- 2 "*"     
## 13   -2.71  phone_freq_diff "*"   4.01e-15 "*"     
## 14    1.80  phone_freq_diff ""    6.11e- 1 ""      
## 15    2.94  phone_freq_diff "*"   2.16e- 2 "*"     
## 16    0.381 phone_freq_diff ""    6.11e- 1 ""      
## 17    1.60  phone_freq_diff ""    6.85e- 1 ""      
## 18    1.46  phone_freq_diff ""    7.26e- 1 ""      
## 19    0.572 phone_freq_diff ""    6.48e- 1 ""      
## 20    0.838 phone_freq_diff ""    7.06e- 1 ""      
## 21    0.760 phone_freq_diff ""    7.06e- 1 ""      
## 22    1.24  phone_freq_diff ""    8.24e- 1 ""      
## 23    1.75  elec_freq_diff  "*"   1.40e- 1 ""      
## 24   -2.75  elec_freq_diff  "*"   2.06e-15 "*"     
## 25    1.82  elec_freq_diff  ""    4.11e- 1 ""      
## 26    2.99  elec_freq_diff  "*"   2.47e- 2 "*"     
## 27    0.455 elec_freq_diff  ""    4.11e- 1 ""      
## 28    1.79  elec_freq_diff  ""    4.11e- 1 ""      
## 29    2.06  elec_freq_diff  ""    4.11e- 1 ""      
## 30    0.499 elec_freq_diff  ""    4.11e- 1 ""      
## 31    0.816 elec_freq_diff  ""    5.56e- 1 ""      
## 32    0.241 elec_freq_diff  ""    3.38e- 1 ""      
## 33    0.898 elec_freq_diff  ""    5.42e- 1 ""
print(h6_ucla_int_results_df)
## # A tibble: 21 × 11
##    Variable                                  B    SE       t     p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl> <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z:t1_age_z         -0.516  0.409 -1.26   0.208   -1.32 
##  2 t1_f2f_freq_diff_z:time2             0.211  0.623  0.339  0.735   -1.01 
##  3 t1_f2f_freq_diff_z:time3             0.361  0.673  0.537  0.591   -0.959
##  4 t1_age_z:time2                      -0.495  0.577 -0.859  0.391   -1.63 
##  5 t1_age_z:time3                      -0.211  0.635 -0.332  0.740   -1.46 
##  6 t1_f2f_freq_diff_z:t1_age_z:time2   -0.171  0.532 -0.321  0.748   -1.22 
##  7 t1_f2f_freq_diff_z:t1_age_z:time3   -0.0271 0.572 -0.0474 0.962   -1.15 
##  8 t1_phone_freq_diff_z:t1_age_z       -0.472  0.434 -1.09   0.278   -1.32 
##  9 t1_phone_freq_diff_z:time2           0.454  0.582  0.780  0.436   -0.689
## 10 t1_phone_freq_diff_z:time3           0.266  0.606  0.440  0.660   -0.923
## 11 t1_age_z:time2                      -0.514  0.553 -0.929  0.353   -1.60 
## 12 t1_age_z:time3                      -0.337  0.599 -0.563  0.573   -1.51 
## 13 t1_phone_freq_diff_z:t1_age_z:time2 -0.301  0.541 -0.557  0.577   -1.36 
## 14 t1_phone_freq_diff_z:t1_age_z:time3  0.127  0.568  0.223  0.824   -0.989
## 15 t1_elec_freq_diff_z:t1_age_z        -0.437  0.455 -0.962  0.336   -1.33 
## 16 t1_elec_freq_diff_z:time2            0.686  0.563  1.22   0.224   -0.420
## 17 t1_elec_freq_diff_z:time3            0.678  0.703  0.965  0.335   -0.701
## 18 t1_age_z:time2                      -0.570  0.544 -1.05   0.296   -1.64 
## 19 t1_age_z:time3                      -0.350  0.594 -0.589  0.556   -1.52 
## 20 t1_elec_freq_diff_z:t1_age_z:time2  -0.890  0.576 -1.54   0.123   -2.02 
## 21 t1_elec_freq_diff_z:t1_age_z:time3  -0.482  0.703 -0.686  0.493   -1.86 
##    CI_Upper predictor       p.sig  FDRp FDRp.sig
##       <dbl> <chr>           <chr> <dbl> <chr>   
##  1    0.287 f2f_freq_diff   ""    0.572 ""      
##  2    1.43  f2f_freq_diff   ""    0.823 ""      
##  3    1.68  f2f_freq_diff   ""    0.823 ""      
##  4    0.637 f2f_freq_diff   ""    0.716 ""      
##  5    1.04  f2f_freq_diff   ""    0.823 ""      
##  6    0.874 f2f_freq_diff   ""    0.823 ""      
##  7    1.10  f2f_freq_diff   ""    0.962 ""      
##  8    0.381 phone_freq_diff ""    0.611 ""      
##  9    1.60  phone_freq_diff ""    0.685 ""      
## 10    1.46  phone_freq_diff ""    0.726 ""      
## 11    0.572 phone_freq_diff ""    0.648 ""      
## 12    0.838 phone_freq_diff ""    0.706 ""      
## 13    0.760 phone_freq_diff ""    0.706 ""      
## 14    1.24  phone_freq_diff ""    0.824 ""      
## 15    0.455 elec_freq_diff  ""    0.411 ""      
## 16    1.79  elec_freq_diff  ""    0.411 ""      
## 17    2.06  elec_freq_diff  ""    0.411 ""      
## 18    0.499 elec_freq_diff  ""    0.411 ""      
## 19    0.816 elec_freq_diff  ""    0.556 ""      
## 20    0.241 elec_freq_diff  ""    0.338 ""      
## 21    0.898 elec_freq_diff  ""    0.542 ""

Sensitivity analyses

Depression
h6_phq_senresults <- list()
h6_phq_senmodels <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("phq_total ~ t1_", diff_freq_var, "_z * t1_age_z * time + country + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_phq_senresults[[diff_freq_var]] <- tidy_model
  h6_phq_senmodels[[diff_freq_var]] <- model
  
  h6_phq_senresults_df <- bind_rows(h6_phq_senresults) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h6_phq_int_senresults_df <- h6_phq_senresults_df %>%
  filter(str_detect(Variable, ":t1_age_z:")) # no significant 3-way interaction

h6_phq_fdr_senresults_df <- h6_phq_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()
print(h6_phq_fdr_senresults_df)
## # A tibble: 39 × 11
##    Variable                                  B    SE       t        p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z                   0.324  0.176   1.83  6.68e- 2 -0.0224 
##  2 t1_age_z                            -1.76   0.170 -10.3   3.37e-24 -2.09   
##  3 time2                               -0.610  0.222  -2.74  6.19e- 3 -1.05   
##  4 time3                               -0.862  0.240  -3.58  3.58e- 4 -1.33   
##  5 countryuk                            1.59   0.395   4.02  6.29e- 5  0.811  
##  6 countryusa                           0.873  0.422   2.07  3.90e- 2  0.0443 
##  7 t1_f2f_freq_diff_z:t1_age_z         -0.356  0.157  -2.26  2.38e- 2 -0.664  
##  8 t1_f2f_freq_diff_z:time2             0.398  0.231   1.72  8.56e- 2 -0.0559 
##  9 t1_f2f_freq_diff_z:time3             0.333  0.250   1.33  1.84e- 1 -0.158  
## 10 t1_age_z:time2                      -0.0415 0.214  -0.194 8.47e- 1 -0.462  
## 11 t1_age_z:time3                      -0.0338 0.236  -0.143 8.86e- 1 -0.497  
## 12 t1_f2f_freq_diff_z:t1_age_z:time2    0.134  0.198   0.677 4.98e- 1 -0.254  
## 13 t1_f2f_freq_diff_z:t1_age_z:time3    0.0636 0.212   0.299 7.65e- 1 -0.353  
## 14 t1_phone_freq_diff_z                 0.598  0.166   3.61  3.21e- 4  0.273  
## 15 t1_age_z                            -1.78   0.166 -10.7   5.71e-26 -2.11   
## 16 time2                               -0.563  0.216  -2.61  9.24e- 3 -0.987  
## 17 time3                               -0.823  0.231  -3.55  4.02e- 4 -1.28   
## 18 countryuk                            1.70   0.391   4.34  1.57e- 5  0.928  
## 19 countryusa                           0.841  0.422   1.99  4.66e- 2  0.0126 
## 20 t1_phone_freq_diff_z:t1_age_z       -0.379  0.167  -2.27  2.32e- 2 -0.705  
## 21 t1_phone_freq_diff_z:time2          -0.0843 0.216  -0.390 6.97e- 1 -0.509  
## 22 t1_phone_freq_diff_z:time3          -0.160  0.225  -0.710 4.78e- 1 -0.601  
## 23 t1_age_z:time2                      -0.141  0.205  -0.685 4.94e- 1 -0.544  
## 24 t1_age_z:time3                      -0.146  0.222  -0.656 5.12e- 1 -0.582  
## 25 t1_phone_freq_diff_z:t1_age_z:time2  0.386  0.201   1.92  5.51e- 2 -0.00844
## 26 t1_phone_freq_diff_z:t1_age_z:time3  0.213  0.211   1.01  3.13e- 1 -0.201  
## 27 t1_elec_freq_diff_z                  0.434  0.166   2.61  9.20e- 3  0.108  
## 28 t1_age_z                            -1.78   0.165 -10.8   3.82e-26 -2.11   
## 29 time2                               -0.589  0.214  -2.76  5.98e- 3 -1.01   
## 30 time3                               -0.840  0.231  -3.63  3.02e- 4 -1.29   
## 31 countryuk                            1.69   0.392   4.31  1.77e- 5  0.920  
## 32 countryusa                           0.855  0.423   2.02  4.33e- 2  0.0256 
## 33 t1_elec_freq_diff_z:t1_age_z        -0.347  0.174  -1.99  4.68e- 2 -0.689  
## 34 t1_elec_freq_diff_z:time2            0.349  0.210   1.66  9.71e- 2 -0.0633 
## 35 t1_elec_freq_diff_z:time3           -0.0493 0.262  -0.188 8.51e- 1 -0.563  
## 36 t1_age_z:time2                      -0.135  0.203  -0.664 5.07e- 1 -0.533  
## 37 t1_age_z:time3                      -0.147  0.221  -0.664 5.07e- 1 -0.581  
## 38 t1_elec_freq_diff_z:t1_age_z:time2   0.312  0.215   1.45  1.46e- 1 -0.109  
## 39 t1_elec_freq_diff_z:t1_age_z:time3  -0.0941 0.262  -0.359 7.19e- 1 -0.608  
##    CI_Upper predictor       p.sig     FDRp FDRp.sig
##       <dbl> <chr>           <chr>    <dbl> <chr>   
##  1  0.670   f2f_freq_diff   ""    1.24e- 1 ""      
##  2 -1.42    f2f_freq_diff   "*"   4.39e-23 "*"     
##  3 -0.174   f2f_freq_diff   "*"   2.01e- 2 "*"     
##  4 -0.390   f2f_freq_diff   "*"   1.55e- 3 "*"     
##  5  2.36    f2f_freq_diff   "*"   4.09e- 4 "*"     
##  6  1.70    f2f_freq_diff   "*"   8.44e- 2 ""      
##  7 -0.0474  f2f_freq_diff   "*"   6.18e- 2 ""      
##  8  0.853   f2f_freq_diff   ""    1.39e- 1 ""      
##  9  0.823   f2f_freq_diff   ""    2.65e- 1 ""      
## 10  0.379   f2f_freq_diff   ""    8.86e- 1 ""      
## 11  0.429   f2f_freq_diff   ""    8.86e- 1 ""      
## 12  0.522   f2f_freq_diff   ""    6.48e- 1 ""      
## 13  0.480   f2f_freq_diff   ""    8.86e- 1 ""      
## 14  0.923   phone_freq_diff "*"   1.30e- 3 "*"     
## 15 -1.46    phone_freq_diff "*"   7.42e-25 "*"     
## 16 -0.140   phone_freq_diff "*"   2.40e- 2 "*"     
## 17 -0.368   phone_freq_diff "*"   1.30e- 3 "*"     
## 18  2.46    phone_freq_diff "*"   1.02e- 4 "*"     
## 19  1.67    phone_freq_diff "*"   8.66e- 2 ""      
## 20 -0.0518  phone_freq_diff "*"   5.03e- 2 ""      
## 21  0.340   phone_freq_diff ""    6.97e- 1 ""      
## 22  0.282   phone_freq_diff ""    5.54e- 1 ""      
## 23  0.263   phone_freq_diff ""    5.54e- 1 ""      
## 24  0.291   phone_freq_diff ""    5.54e- 1 ""      
## 25  0.780   phone_freq_diff ""    8.95e- 2 ""      
## 26  0.627   phone_freq_diff ""    4.52e- 1 ""      
## 27  0.761   elec_freq_diff  "*"   2.39e- 2 "*"     
## 28 -1.46    elec_freq_diff  "*"   4.97e-25 "*"     
## 29 -0.170   elec_freq_diff  "*"   1.94e- 2 "*"     
## 30 -0.386   elec_freq_diff  "*"   1.31e- 3 "*"     
## 31  2.46    elec_freq_diff  "*"   1.15e- 4 "*"     
## 32  1.69    elec_freq_diff  "*"   8.69e- 2 ""      
## 33 -0.00495 elec_freq_diff  "*"   8.69e- 2 ""      
## 34  0.760   elec_freq_diff  ""    1.58e- 1 ""      
## 35  0.465   elec_freq_diff  ""    8.51e- 1 ""      
## 36  0.264   elec_freq_diff  ""    5.99e- 1 ""      
## 37  0.287   elec_freq_diff  ""    5.99e- 1 ""      
## 38  0.733   elec_freq_diff  ""    2.12e- 1 ""      
## 39  0.420   elec_freq_diff  ""    7.79e- 1 ""
print(h6_phq_int_senresults_df)
## # A tibble: 6 × 9
##   Variable                                  B    SE      t      p CI_Lower
##   <chr>                                 <dbl> <dbl>  <dbl>  <dbl>    <dbl>
## 1 t1_f2f_freq_diff_z:t1_age_z:time2    0.134  0.198  0.677 0.498  -0.254  
## 2 t1_f2f_freq_diff_z:t1_age_z:time3    0.0636 0.212  0.299 0.765  -0.353  
## 3 t1_phone_freq_diff_z:t1_age_z:time2  0.386  0.201  1.92  0.0551 -0.00844
## 4 t1_phone_freq_diff_z:t1_age_z:time3  0.213  0.211  1.01  0.313  -0.201  
## 5 t1_elec_freq_diff_z:t1_age_z:time2   0.312  0.215  1.45  0.146  -0.109  
## 6 t1_elec_freq_diff_z:t1_age_z:time3  -0.0941 0.262 -0.359 0.719  -0.608  
##   CI_Upper predictor       p.sig
##      <dbl> <chr>           <chr>
## 1    0.522 f2f_freq_diff   ""   
## 2    0.480 f2f_freq_diff   ""   
## 3    0.780 phone_freq_diff ""   
## 4    0.627 phone_freq_diff ""   
## 5    0.733 elec_freq_diff  ""   
## 6    0.420 elec_freq_diff  ""
Loneliness
h6_ucla_senresults <- list()
h6_ucla_senmodels <- list()

for (diff_freq_var in diff_freq_vars) {
  formula <- as.formula(paste0("ucla_loneliness_total ~ t1_", diff_freq_var, "_z * t1_age_z * time + country + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = diff_freq_var)
  
  h6_ucla_senresults[[diff_freq_var]] <- tidy_model
  h6_ucla_senmodels[[diff_freq_var]] <- model
  
  h6_ucla_senresults_df <- bind_rows(h6_ucla_senresults) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h6_ucla_fdr_senresults_df <- h6_ucla_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h6_ucla_int_senresults_df <- h6_ucla_fdr_senresults_df %>%
  filter(str_detect(Variable, ":"))# no significant interaction
print(h6_ucla_fdr_senresults_df)
## # A tibble: 39 × 11
##    Variable                                  B    SE       t        p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z                   1.25   0.458  2.74   6.24e- 3   0.356 
##  2 t1_age_z                            -3.35   0.441 -7.58   5.98e-14  -4.21  
##  3 time2                                0.649  0.599  1.08   2.79e- 1  -0.526 
##  4 time3                                1.64   0.647  2.54   1.14e- 2   0.372 
##  5 countryuk                            2.91   1.02   2.85   4.46e- 3   0.906 
##  6 countryusa                           2.96   1.09   2.71   6.73e- 3   0.822 
##  7 t1_f2f_freq_diff_z:t1_age_z         -0.510  0.408 -1.25   2.11e- 1  -1.31  
##  8 t1_f2f_freq_diff_z:time2             0.209  0.623  0.335  7.38e- 1  -1.01  
##  9 t1_f2f_freq_diff_z:time3             0.372  0.673  0.552  5.81e- 1  -0.949 
## 10 t1_age_z:time2                      -0.489  0.577 -0.847  3.98e- 1  -1.62  
## 11 t1_age_z:time3                      -0.187  0.636 -0.295  7.68e- 1  -1.43  
## 12 t1_f2f_freq_diff_z:t1_age_z:time2   -0.159  0.532 -0.300  7.65e- 1  -1.20  
## 13 t1_f2f_freq_diff_z:t1_age_z:time3   -0.0237 0.572 -0.0414 9.67e- 1  -1.15  
## 14 t1_phone_freq_diff_z                 1.26   0.431  2.93   3.44e- 3   0.417 
## 15 t1_age_z                            -3.52   0.431 -8.17   6.45e-16  -4.36  
## 16 time2                                0.678  0.582  1.17   2.44e- 1  -0.464 
## 17 time3                                1.72   0.624  2.76   5.89e- 3   0.498 
## 18 countryuk                            3.28   1.01   3.24   1.22e- 3   1.30  
## 19 countryusa                           2.91   1.09   2.67   7.78e- 3   0.770 
## 20 t1_phone_freq_diff_z:t1_age_z       -0.448  0.433 -1.04   3.00e- 1  -1.30  
## 21 t1_phone_freq_diff_z:time2           0.448  0.582  0.769  4.42e- 1  -0.695 
## 22 t1_phone_freq_diff_z:time3           0.268  0.606  0.442  6.58e- 1  -0.922 
## 23 t1_age_z:time2                      -0.509  0.554 -0.919  3.58e- 1  -1.60  
## 24 t1_age_z:time3                      -0.317  0.599 -0.530  5.97e- 1  -1.49  
## 25 t1_phone_freq_diff_z:t1_age_z:time2 -0.304  0.541 -0.562  5.75e- 1  -1.37  
## 26 t1_phone_freq_diff_z:t1_age_z:time3  0.127  0.569  0.224  8.23e- 1  -0.989 
## 27 t1_elec_freq_diff_z                  0.869  0.433  2.01   4.49e- 2   0.0197
## 28 t1_age_z                            -3.55   0.430 -8.26   3.36e-16  -4.40  
## 29 time2                                0.712  0.574  1.24   2.15e- 1  -0.415 
## 30 time3                                1.78   0.622  2.86   4.41e- 3   0.555 
## 31 countryuk                            3.28   1.02   3.22   1.31e- 3   1.28  
## 32 countryusa                           2.94   1.10   2.68   7.52e- 3   0.785 
## 33 t1_elec_freq_diff_z:t1_age_z        -0.382  0.453 -0.844  3.99e- 1  -1.27  
## 34 t1_elec_freq_diff_z:time2            0.690  0.563  1.22   2.21e- 1  -0.416 
## 35 t1_elec_freq_diff_z:time3            0.705  0.703  1.00   3.16e- 1  -0.675 
## 36 t1_age_z:time2                      -0.561  0.545 -1.03   3.03e- 1  -1.63  
## 37 t1_age_z:time3                      -0.327  0.594 -0.551  5.82e- 1  -1.49  
## 38 t1_elec_freq_diff_z:t1_age_z:time2  -0.865  0.576 -1.50   1.34e- 1  -2.00  
## 39 t1_elec_freq_diff_z:t1_age_z:time3  -0.423  0.703 -0.601  5.48e- 1  -1.80  
##    CI_Upper predictor       p.sig     FDRp FDRp.sig
##       <dbl> <chr>           <chr>    <dbl> <chr>   
##  1    2.15  f2f_freq_diff   "*"   2.19e- 2 "*"     
##  2   -2.48  f2f_freq_diff   "*"   7.78e-13 "*"     
##  3    1.82  f2f_freq_diff   ""    5.18e- 1 ""      
##  4    2.91  f2f_freq_diff   "*"   2.95e- 2 "*"     
##  5    4.91  f2f_freq_diff   "*"   2.19e- 2 "*"     
##  6    5.11  f2f_freq_diff   "*"   2.19e- 2 "*"     
##  7    0.290 f2f_freq_diff   ""    4.57e- 1 ""      
##  8    1.43  f2f_freq_diff   ""    8.32e- 1 ""      
##  9    1.69  f2f_freq_diff   ""    8.32e- 1 ""      
## 10    0.644 f2f_freq_diff   ""    6.46e- 1 ""      
## 11    1.06  f2f_freq_diff   ""    8.32e- 1 ""      
## 12    0.886 f2f_freq_diff   ""    8.32e- 1 ""      
## 13    1.10  f2f_freq_diff   ""    9.67e- 1 ""      
## 14    2.11  phone_freq_diff "*"   1.49e- 2 "*"     
## 15   -2.67  phone_freq_diff "*"   8.38e-15 "*"     
## 16    1.82  phone_freq_diff ""    5.29e- 1 ""      
## 17    2.95  phone_freq_diff "*"   1.91e- 2 "*"     
## 18    5.27  phone_freq_diff "*"   7.95e- 3 "*"     
## 19    5.06  phone_freq_diff "*"   2.02e- 2 "*"     
## 20    0.401 phone_freq_diff ""    5.58e- 1 ""      
## 21    1.59  phone_freq_diff ""    6.39e- 1 ""      
## 22    1.46  phone_freq_diff ""    7.13e- 1 ""      
## 23    0.578 phone_freq_diff ""    5.82e- 1 ""      
## 24    0.859 phone_freq_diff ""    7.05e- 1 ""      
## 25    0.758 phone_freq_diff ""    7.05e- 1 ""      
## 26    1.24  phone_freq_diff ""    8.23e- 1 ""      
## 27    1.72  elec_freq_diff  "*"   1.17e- 1 ""      
## 28   -2.71  elec_freq_diff  "*"   4.37e-15 "*"     
## 29    1.84  elec_freq_diff  ""    3.60e- 1 ""      
## 30    3.00  elec_freq_diff  "*"   1.91e- 2 "*"     
## 31    5.27  elec_freq_diff  "*"   8.49e- 3 "*"     
## 32    5.09  elec_freq_diff  "*"   2.44e- 2 "*"     
## 33    0.507 elec_freq_diff  ""    4.72e- 1 ""      
## 34    1.80  elec_freq_diff  ""    3.60e- 1 ""      
## 35    2.09  elec_freq_diff  ""    4.11e- 1 ""      
## 36    0.508 elec_freq_diff  ""    4.11e- 1 ""      
## 37    0.839 elec_freq_diff  ""    5.82e- 1 ""      
## 38    0.266 elec_freq_diff  ""    2.89e- 1 ""      
## 39    0.958 elec_freq_diff  ""    5.82e- 1 ""
print(h6_ucla_int_senresults_df)
## # A tibble: 21 × 11
##    Variable                                  B    SE       t     p CI_Lower
##    <chr>                                 <dbl> <dbl>   <dbl> <dbl>    <dbl>
##  1 t1_f2f_freq_diff_z:t1_age_z         -0.510  0.408 -1.25   0.211   -1.31 
##  2 t1_f2f_freq_diff_z:time2             0.209  0.623  0.335  0.738   -1.01 
##  3 t1_f2f_freq_diff_z:time3             0.372  0.673  0.552  0.581   -0.949
##  4 t1_age_z:time2                      -0.489  0.577 -0.847  0.398   -1.62 
##  5 t1_age_z:time3                      -0.187  0.636 -0.295  0.768   -1.43 
##  6 t1_f2f_freq_diff_z:t1_age_z:time2   -0.159  0.532 -0.300  0.765   -1.20 
##  7 t1_f2f_freq_diff_z:t1_age_z:time3   -0.0237 0.572 -0.0414 0.967   -1.15 
##  8 t1_phone_freq_diff_z:t1_age_z       -0.448  0.433 -1.04   0.300   -1.30 
##  9 t1_phone_freq_diff_z:time2           0.448  0.582  0.769  0.442   -0.695
## 10 t1_phone_freq_diff_z:time3           0.268  0.606  0.442  0.658   -0.922
## 11 t1_age_z:time2                      -0.509  0.554 -0.919  0.358   -1.60 
## 12 t1_age_z:time3                      -0.317  0.599 -0.530  0.597   -1.49 
## 13 t1_phone_freq_diff_z:t1_age_z:time2 -0.304  0.541 -0.562  0.575   -1.37 
## 14 t1_phone_freq_diff_z:t1_age_z:time3  0.127  0.569  0.224  0.823   -0.989
## 15 t1_elec_freq_diff_z:t1_age_z        -0.382  0.453 -0.844  0.399   -1.27 
## 16 t1_elec_freq_diff_z:time2            0.690  0.563  1.22   0.221   -0.416
## 17 t1_elec_freq_diff_z:time3            0.705  0.703  1.00   0.316   -0.675
## 18 t1_age_z:time2                      -0.561  0.545 -1.03   0.303   -1.63 
## 19 t1_age_z:time3                      -0.327  0.594 -0.551  0.582   -1.49 
## 20 t1_elec_freq_diff_z:t1_age_z:time2  -0.865  0.576 -1.50   0.134   -2.00 
## 21 t1_elec_freq_diff_z:t1_age_z:time3  -0.423  0.703 -0.601  0.548   -1.80 
##    CI_Upper predictor       p.sig  FDRp FDRp.sig
##       <dbl> <chr>           <chr> <dbl> <chr>   
##  1    0.290 f2f_freq_diff   ""    0.457 ""      
##  2    1.43  f2f_freq_diff   ""    0.832 ""      
##  3    1.69  f2f_freq_diff   ""    0.832 ""      
##  4    0.644 f2f_freq_diff   ""    0.646 ""      
##  5    1.06  f2f_freq_diff   ""    0.832 ""      
##  6    0.886 f2f_freq_diff   ""    0.832 ""      
##  7    1.10  f2f_freq_diff   ""    0.967 ""      
##  8    0.401 phone_freq_diff ""    0.558 ""      
##  9    1.59  phone_freq_diff ""    0.639 ""      
## 10    1.46  phone_freq_diff ""    0.713 ""      
## 11    0.578 phone_freq_diff ""    0.582 ""      
## 12    0.859 phone_freq_diff ""    0.705 ""      
## 13    0.758 phone_freq_diff ""    0.705 ""      
## 14    1.24  phone_freq_diff ""    0.823 ""      
## 15    0.507 elec_freq_diff  ""    0.472 ""      
## 16    1.80  elec_freq_diff  ""    0.360 ""      
## 17    2.09  elec_freq_diff  ""    0.411 ""      
## 18    0.508 elec_freq_diff  ""    0.411 ""      
## 19    0.839 elec_freq_diff  ""    0.582 ""      
## 20    0.266 elec_freq_diff  ""    0.289 ""      
## 21    0.958 elec_freq_diff  ""    0.582 ""

H7: Friends vs family - changes in frequency of contact (pre-covid to during covid)

h7_diff_vars <- c("f2f_freq_diff_family","phone_freq_diff_family","elec_freq_diff_family","f2f_freq_diff_friend", "phone_freq_diff_friend", "elec_freq_diff_friend")

Baseline analysis

Main model

Depression
h7_base_phq_results <- list()
h7_base_phq_models <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("t1_phq_total ~ t1_", h7_diff_var, "_z * t1_age_z"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_base_phq_results[[h7_diff_var]] <- tidy_model
  h7_base_phq_models[[h7_diff_var]] <- model
  
  h7_base_phq_results_df <- bind_rows(h7_base_phq_results) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_base_phq_fdr_results_df <- h7_base_phq_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h7_base_phq_int_results_df <- h7_base_phq_fdr_results_df %>%
  filter(str_detect(Variable, ":")) 

print(h7_base_phq_fdr_results_df)
## # A tibble: 18 × 11
##    Variable                                   B    SE       t        p  CI_Lower
##    <chr>                                  <dbl> <dbl>   <dbl>    <dbl>     <dbl>
##  1 t1_f2f_freq_diff_family_z             0.0440 0.186   0.237 8.13e- 1 -0.320   
##  2 t1_age_z                             -1.59   0.196  -8.11  1.48e-15 -1.97    
##  3 t1_f2f_freq_diff_family_z:t1_age_z   -0.103  0.194  -0.529 5.97e- 1 -0.483   
##  4 t1_phone_freq_diff_family_z           0.601  0.187   3.22  1.31e- 3  0.235   
##  5 t1_age_z                             -1.59   0.195  -8.13  1.24e-15 -1.97    
##  6 t1_phone_freq_diff_family_z:t1_age_z -0.136  0.192  -0.707 4.79e- 1 -0.512   
##  7 t1_elec_freq_diff_family_z            0.388  0.185   2.10  3.64e- 2  0.0247  
##  8 t1_age_z                             -1.58   0.195  -8.08  1.83e-15 -1.96    
##  9 t1_elec_freq_diff_family_z:t1_age_z  -0.286  0.209  -1.37  1.71e- 1 -0.695   
## 10 t1_f2f_freq_diff_friend_z             0.374  0.191   1.96  5.05e- 2 -0.000889
## 11 t1_age_z                             -1.82   0.189  -9.63  4.05e-21 -2.19    
## 12 t1_f2f_freq_diff_friend_z:t1_age_z   -0.416  0.172  -2.42  1.57e- 2 -0.753   
## 13 t1_phone_freq_diff_friend_z           0.443  0.185   2.40  1.67e- 2  0.0802  
## 14 t1_age_z                             -1.84   0.185  -9.96  2.00e-22 -2.21    
## 15 t1_phone_freq_diff_friend_z:t1_age_z -0.368  0.187  -1.97  4.88e- 2 -0.734   
## 16 t1_elec_freq_diff_friend_z            0.507  0.185   2.75  6.14e- 3  0.145   
## 17 t1_age_z                             -1.84   0.184 -10.0   1.34e-22 -2.20    
## 18 t1_elec_freq_diff_friend_z:t1_age_z  -0.214  0.185  -1.16  2.46e- 1 -0.577   
##    CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1  0.408   f2f_freq_diff_family   ""    8.13e- 1 ""      
##  2 -1.21    f2f_freq_diff_family   "*"   4.45e-15 "*"     
##  3  0.278   f2f_freq_diff_family   ""    8.13e- 1 ""      
##  4  0.968   phone_freq_diff_family "*"   1.97e- 3 "*"     
##  5 -1.21    phone_freq_diff_family "*"   3.72e-15 "*"     
##  6  0.241   phone_freq_diff_family ""    4.79e- 1 ""      
##  7  0.751   elec_freq_diff_family  "*"   5.45e- 2 ""      
##  8 -1.20    elec_freq_diff_family  "*"   5.50e-15 "*"     
##  9  0.124   elec_freq_diff_family  ""    1.71e- 1 ""      
## 10  0.750   f2f_freq_diff_friend   ""    5.05e- 2 ""      
## 11 -1.45    f2f_freq_diff_friend   "*"   1.22e-20 "*"     
## 12 -0.0788  f2f_freq_diff_friend   "*"   2.35e- 2 "*"     
## 13  0.805   phone_freq_diff_friend "*"   2.51e- 2 "*"     
## 14 -1.48    phone_freq_diff_friend "*"   5.99e-22 "*"     
## 15 -0.00193 phone_freq_diff_friend "*"   4.88e- 2 "*"     
## 16  0.869   elec_freq_diff_friend  "*"   9.20e- 3 "*"     
## 17 -1.48    elec_freq_diff_friend  "*"   4.02e-22 "*"     
## 18  0.148   elec_freq_diff_friend  ""    2.46e- 1 ""
print(h7_base_phq_int_results_df) # ONLY FRIEND IS SIG (f2f and phone)
## # A tibble: 6 × 11
##   Variable                                  B    SE      t      p CI_Lower
##   <chr>                                 <dbl> <dbl>  <dbl>  <dbl>    <dbl>
## 1 t1_f2f_freq_diff_family_z:t1_age_z   -0.103 0.194 -0.529 0.597    -0.483
## 2 t1_phone_freq_diff_family_z:t1_age_z -0.136 0.192 -0.707 0.479    -0.512
## 3 t1_elec_freq_diff_family_z:t1_age_z  -0.286 0.209 -1.37  0.171    -0.695
## 4 t1_f2f_freq_diff_friend_z:t1_age_z   -0.416 0.172 -2.42  0.0157   -0.753
## 5 t1_phone_freq_diff_friend_z:t1_age_z -0.368 0.187 -1.97  0.0488   -0.734
## 6 t1_elec_freq_diff_friend_z:t1_age_z  -0.214 0.185 -1.16  0.246    -0.577
##   CI_Upper predictor              p.sig   FDRp FDRp.sig
##      <dbl> <chr>                  <chr>  <dbl> <chr>   
## 1  0.278   f2f_freq_diff_family   ""    0.813  ""      
## 2  0.241   phone_freq_diff_family ""    0.479  ""      
## 3  0.124   elec_freq_diff_family  ""    0.171  ""      
## 4 -0.0788  f2f_freq_diff_friend   "*"   0.0235 "*"     
## 5 -0.00193 phone_freq_diff_friend "*"   0.0488 "*"     
## 6  0.148   elec_freq_diff_friend  ""    0.246  ""

Plot significant interactions

#Look at interaction 

# t1_f2f_freq_diff_friend_z:t1_age_z
# t1_phone_freq_diff_friend_z:t1_age_z

plot_f2f_freq_diff <- interact_plot(h7_base_phq_models[["f2f_freq_diff_friend"]], pred = "t1_f2f_freq_diff_friend_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (F2F) with Friends Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)
plot_f2f_freq_diff

plot_phone_freq_diff <- interact_plot(h7_base_phq_models[["phone_freq_diff_friend"]], pred = "t1_phone_freq_diff_friend_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (Phone) with Friends Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)
plot_phone_freq_diff

# Create a combined plot for all frequency of contact differences
plot_base_phq <- plot_f2f_freq_diff / plot_phone_freq_diff 
plot_base_phq

Loneliness
h7_base_ucla_results <- list()
h7_base_ucla_models <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("t1_ucla_loneliness_total ~ t1_", h7_diff_var, "_z * t1_age_z"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_base_ucla_results[[h7_diff_var]] <- tidy_model
  h7_base_ucla_models[[h7_diff_var]] <- model
  
  h7_base_ucla_results_df <- bind_rows(h7_base_ucla_results) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_base_ucla_fdr_results_df <- h7_base_ucla_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h7_base_ucla_int_results_df <- h7_base_ucla_fdr_results_df %>%
  filter(str_detect(Variable, ":")) 

print(h7_base_ucla_fdr_results_df)
## # A tibble: 18 × 11
##    Variable                                   B    SE       t        p CI_Lower
##    <chr>                                  <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z             0.192  0.468  0.410  6.82e- 1  -0.726 
##  2 t1_age_z                             -3.16   0.494 -6.39   2.59e-10  -4.13  
##  3 t1_f2f_freq_diff_family_z:t1_age_z   -0.0838 0.489 -0.171  8.64e- 1  -1.04  
##  4 t1_phone_freq_diff_family_z           0.972  0.472  2.06   3.96e- 2   0.0463
##  5 t1_age_z                             -3.15   0.494 -6.37   2.81e-10  -4.12  
##  6 t1_phone_freq_diff_family_z:t1_age_z -0.177  0.485 -0.364  7.16e- 1  -1.13  
##  7 t1_elec_freq_diff_family_z            0.340  0.467  0.728  4.67e- 1  -0.577 
##  8 t1_age_z                             -3.15   0.494 -6.38   2.69e-10  -4.12  
##  9 t1_elec_freq_diff_family_z:t1_age_z  -0.470  0.527 -0.892  3.73e- 1  -1.50  
## 10 t1_f2f_freq_diff_friend_z             1.09   0.486  2.24   2.54e- 2   0.135 
## 11 t1_age_z                             -3.48   0.481 -7.24   8.56e-13  -4.42  
## 12 t1_f2f_freq_diff_friend_z:t1_age_z   -1.15   0.437 -2.64   8.49e- 3  -2.01  
## 13 t1_phone_freq_diff_friend_z           1.17   0.471  2.48   1.32e- 2   0.244 
## 14 t1_age_z                             -3.51   0.472 -7.43   2.26e-13  -4.43  
## 15 t1_phone_freq_diff_friend_z:t1_age_z -0.0230 0.476 -0.0483 9.61e- 1  -0.956 
## 16 t1_elec_freq_diff_friend_z            1.30   0.470  2.77   5.63e- 3   0.382 
## 17 t1_age_z                             -3.56   0.468 -7.62   5.59e-14  -4.48  
## 18 t1_elec_freq_diff_friend_z:t1_age_z  -0.232  0.470 -0.494  6.22e- 1  -1.16  
##    CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1    1.11  f2f_freq_diff_family   ""    8.64e- 1 ""      
##  2   -2.19  f2f_freq_diff_family   "*"   7.77e-10 "*"     
##  3    0.875 f2f_freq_diff_family   ""    8.64e- 1 ""      
##  4    1.90  phone_freq_diff_family "*"   5.94e- 2 ""      
##  5   -2.18  phone_freq_diff_family "*"   8.42e-10 "*"     
##  6    0.775 phone_freq_diff_family ""    7.16e- 1 ""      
##  7    1.26  elec_freq_diff_family  ""    4.67e- 1 ""      
##  8   -2.18  elec_freq_diff_family  "*"   8.08e-10 "*"     
##  9    0.564 elec_freq_diff_family  ""    4.67e- 1 ""      
## 10    2.04  f2f_freq_diff_friend   "*"   2.54e- 2 "*"     
## 11   -2.54  f2f_freq_diff_friend   "*"   2.57e-12 "*"     
## 12   -0.295 f2f_freq_diff_friend   "*"   1.27e- 2 "*"     
## 13    2.09  phone_freq_diff_friend "*"   1.99e- 2 "*"     
## 14   -2.58  phone_freq_diff_friend "*"   6.77e-13 "*"     
## 15    0.910 phone_freq_diff_friend ""    9.61e- 1 ""      
## 16    2.23  elec_freq_diff_friend  "*"   8.45e- 3 "*"     
## 17   -2.65  elec_freq_diff_friend  "*"   1.68e-13 "*"     
## 18    0.691 elec_freq_diff_friend  ""    6.22e- 1 ""
print(h7_base_ucla_int_results_df)
## # A tibble: 6 × 11
##   Variable                                   B    SE       t       p CI_Lower
##   <chr>                                  <dbl> <dbl>   <dbl>   <dbl>    <dbl>
## 1 t1_f2f_freq_diff_family_z:t1_age_z   -0.0838 0.489 -0.171  0.864     -1.04 
## 2 t1_phone_freq_diff_family_z:t1_age_z -0.177  0.485 -0.364  0.716     -1.13 
## 3 t1_elec_freq_diff_family_z:t1_age_z  -0.470  0.527 -0.892  0.373     -1.50 
## 4 t1_f2f_freq_diff_friend_z:t1_age_z   -1.15   0.437 -2.64   0.00849   -2.01 
## 5 t1_phone_freq_diff_friend_z:t1_age_z -0.0230 0.476 -0.0483 0.961     -0.956
## 6 t1_elec_freq_diff_friend_z:t1_age_z  -0.232  0.470 -0.494  0.622     -1.16 
##   CI_Upper predictor              p.sig   FDRp FDRp.sig
##      <dbl> <chr>                  <chr>  <dbl> <chr>   
## 1    0.875 f2f_freq_diff_family   ""    0.864  ""      
## 2    0.775 phone_freq_diff_family ""    0.716  ""      
## 3    0.564 elec_freq_diff_family  ""    0.467  ""      
## 4   -0.295 f2f_freq_diff_friend   "*"   0.0127 "*"     
## 5    0.910 phone_freq_diff_friend ""    0.961  ""      
## 6    0.691 elec_freq_diff_friend  ""    0.622  ""

Plot significant interaction

#Look at interaction 

# t1_f2f_freq_diff_friend_z:t1_age_z

plot_f2f_freq_diff <- interact_plot(h7_base_ucla_models[["f2f_freq_diff_friend"]], pred = "t1_f2f_freq_diff_friend_z", modx = "t1_age_z", 
              x.label = "Frequency of Contact (F2F) with Friends Difference (Standardised)", 
              y.label = "PHQ-9 Total Score", 
              legend.main = "Age (Standardised)",
              interval = TRUE)
plot_f2f_freq_diff

Sensitivity analyses

Depression
h7_base_phq_senresults <- list()
h7_base_phq_senmodels <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("t1_phq_total ~ t1_", h7_diff_var, "_z * t1_age_z + country"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_base_phq_senresults[[h7_diff_var]] <- tidy_model
  h7_base_phq_senmodels[[h7_diff_var]] <- model
  
  h7_base_phq_senresults_df <- bind_rows(h7_base_phq_senresults) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_base_phq_fdr_senresults_df <- h7_base_phq_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h7_base_phq_int_senresults_df <- h7_base_phq_fdr_senresults_df %>%
  filter(str_detect(Variable, ":")) 

print(h7_base_phq_fdr_senresults_df)
## # A tibble: 30 × 11
##    Variable                                   B    SE      t        p CI_Lower
##    <chr>                                  <dbl> <dbl>  <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z            -0.0228 0.187 -0.122 9.03e- 1  -0.391 
##  2 t1_age_z                             -1.58   0.195 -8.09  1.64e-15  -1.97  
##  3 countryuk                             1.41   0.456  3.10  2.01e- 3   0.517 
##  4 countryusa                            0.865  0.488  1.77  7.66e- 2  -0.0927
##  5 t1_f2f_freq_diff_family_z:t1_age_z   -0.0968 0.194 -0.499 6.18e- 1  -0.477 
##  6 t1_phone_freq_diff_family_z           0.567  0.187  3.04  2.44e- 3   0.201 
##  7 t1_age_z                             -1.58   0.195 -8.12  1.29e-15  -1.97  
##  8 countryuk                             1.31   0.452  2.90  3.76e- 3   0.426 
##  9 countryusa                            0.768  0.486  1.58  1.15e- 1  -0.187 
## 10 t1_phone_freq_diff_family_z:t1_age_z -0.146  0.191 -0.762 4.46e- 1  -0.521 
## 11 t1_elec_freq_diff_family_z            0.372  0.184  2.02  4.38e- 2   0.0103
## 12 t1_age_z                             -1.57   0.195 -8.07  1.92e-15  -1.95  
## 13 countryuk                             1.38   0.452  3.04  2.39e- 3   0.489 
## 14 countryusa                            0.801  0.486  1.65  9.99e- 2  -0.153 
## 15 t1_elec_freq_diff_family_z:t1_age_z  -0.278  0.208 -1.34  1.82e- 1  -0.687 
## 16 t1_f2f_freq_diff_friend_z             0.302  0.192  1.57  1.17e- 1  -0.0752
## 17 t1_age_z                             -1.82   0.189 -9.62  4.30e-21  -2.19  
## 18 countryuk                             1.39   0.447  3.11  1.92e- 3   0.513 
## 19 countryusa                            0.709  0.492  1.44  1.50e- 1  -0.256 
## 20 t1_f2f_freq_diff_friend_z:t1_age_z   -0.427  0.172 -2.49  1.31e- 2  -0.763 
## 21 t1_phone_freq_diff_friend_z           0.448  0.184  2.43  1.52e- 2   0.0864
## 22 t1_age_z                             -1.82   0.185 -9.83  6.88e-22  -2.18  
## 23 countryuk                             1.47   0.444  3.31  9.58e- 4   0.599 
## 24 countryusa                            0.795  0.490  1.62  1.05e- 1  -0.166 
## 25 t1_phone_freq_diff_friend_z:t1_age_z -0.338  0.186 -1.82  6.95e- 2  -0.703 
## 26 t1_elec_freq_diff_friend_z            0.511  0.184  2.77  5.63e- 3   0.150 
## 27 t1_age_z                             -1.81   0.183 -9.89  3.99e-22  -2.17  
## 28 countryuk                             1.49   0.444  3.37  7.90e- 4   0.623 
## 29 countryusa                            0.784  0.490  1.60  1.10e- 1  -0.178 
## 30 t1_elec_freq_diff_friend_z:t1_age_z  -0.201  0.184 -1.09  2.76e- 1  -0.562 
##    CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1   0.345  f2f_freq_diff_family   ""    9.03e- 1 ""      
##  2  -1.20   f2f_freq_diff_family   "*"   8.19e-15 "*"     
##  3   2.31   f2f_freq_diff_family   "*"   5.03e- 3 "*"     
##  4   1.82   f2f_freq_diff_family   ""    1.28e- 1 ""      
##  5   0.283  f2f_freq_diff_family   ""    7.72e- 1 ""      
##  6   0.933  phone_freq_diff_family "*"   6.10e- 3 "*"     
##  7  -1.20   phone_freq_diff_family "*"   6.47e-15 "*"     
##  8   2.20   phone_freq_diff_family "*"   6.27e- 3 "*"     
##  9   1.72   phone_freq_diff_family ""    1.43e- 1 ""      
## 10   0.230  phone_freq_diff_family ""    4.46e- 1 ""      
## 11   0.734  elec_freq_diff_family  "*"   7.31e- 2 ""      
## 12  -1.19   elec_freq_diff_family  "*"   9.58e-15 "*"     
## 13   2.26   elec_freq_diff_family  "*"   5.98e- 3 "*"     
## 14   1.76   elec_freq_diff_family  ""    1.25e- 1 ""      
## 15   0.130  elec_freq_diff_family  ""    1.82e- 1 ""      
## 16   0.678  f2f_freq_diff_friend   ""    1.46e- 1 ""      
## 17  -1.45   f2f_freq_diff_friend   "*"   2.15e-20 "*"     
## 18   2.27   f2f_freq_diff_friend   "*"   4.79e- 3 "*"     
## 19   1.67   f2f_freq_diff_friend   ""    1.50e- 1 ""      
## 20  -0.0898 f2f_freq_diff_friend   "*"   2.18e- 2 "*"     
## 21   0.809  phone_freq_diff_friend "*"   2.54e- 2 "*"     
## 22  -1.45   phone_freq_diff_friend "*"   3.44e-21 "*"     
## 23   2.34   phone_freq_diff_friend "*"   2.40e- 3 "*"     
## 24   1.76   phone_freq_diff_friend ""    1.05e- 1 ""      
## 25   0.0271 phone_freq_diff_friend ""    8.69e- 2 ""      
## 26   0.872  elec_freq_diff_friend  "*"   9.38e- 3 "*"     
## 27  -1.45   elec_freq_diff_friend  "*"   1.99e-21 "*"     
## 28   2.36   elec_freq_diff_friend  "*"   1.98e- 3 "*"     
## 29   1.74   elec_freq_diff_friend  ""    1.37e- 1 ""      
## 30   0.160  elec_freq_diff_friend  ""    2.76e- 1 ""
print(h7_base_phq_int_senresults_df) # note: phone is no longer sig
## # A tibble: 6 × 11
##   Variable                                   B    SE      t      p CI_Lower
##   <chr>                                  <dbl> <dbl>  <dbl>  <dbl>    <dbl>
## 1 t1_f2f_freq_diff_family_z:t1_age_z   -0.0968 0.194 -0.499 0.618    -0.477
## 2 t1_phone_freq_diff_family_z:t1_age_z -0.146  0.191 -0.762 0.446    -0.521
## 3 t1_elec_freq_diff_family_z:t1_age_z  -0.278  0.208 -1.34  0.182    -0.687
## 4 t1_f2f_freq_diff_friend_z:t1_age_z   -0.427  0.172 -2.49  0.0131   -0.763
## 5 t1_phone_freq_diff_friend_z:t1_age_z -0.338  0.186 -1.82  0.0695   -0.703
## 6 t1_elec_freq_diff_friend_z:t1_age_z  -0.201  0.184 -1.09  0.276    -0.562
##   CI_Upper predictor              p.sig   FDRp FDRp.sig
##      <dbl> <chr>                  <chr>  <dbl> <chr>   
## 1   0.283  f2f_freq_diff_family   ""    0.772  ""      
## 2   0.230  phone_freq_diff_family ""    0.446  ""      
## 3   0.130  elec_freq_diff_family  ""    0.182  ""      
## 4  -0.0898 f2f_freq_diff_friend   "*"   0.0218 "*"     
## 5   0.0271 phone_freq_diff_friend ""    0.0869 ""      
## 6   0.160  elec_freq_diff_friend  ""    0.276  ""
Loneliness
h7_base_ucla_senresults <- list()
h7_base_ucla_senmodels <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("t1_ucla_loneliness_total ~ t1_", h7_diff_var, "_z * t1_age_z + country"))
  model <- lm(formula, data = full_data)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_base_ucla_senresults[[h7_diff_var]] <- tidy_model
  h7_base_ucla_senmodels[[h7_diff_var]] <- model
  
  h7_base_ucla_senresults_df <- bind_rows(h7_base_ucla_senresults) %>%
  mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_base_ucla_fdr_senresults_df <- h7_base_ucla_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

h7_base_ucla_int_senresults_df <- h7_base_ucla_fdr_senresults_df %>%
  filter(str_detect(Variable, ":")) 

print(h7_base_ucla_fdr_senresults_df)
## # A tibble: 30 × 11
##    Variable                                   B    SE       t        p CI_Lower
##    <chr>                                  <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z             0.180  0.473  0.381  7.03e- 1  -0.748 
##  2 t1_age_z                             -3.13   0.494 -6.35   3.21e-10  -4.10  
##  3 countryuk                             2.05   1.15   1.78   7.53e- 2  -0.209 
##  4 countryusa                            2.87   1.23   2.33   2.01e- 2   0.451 
##  5 t1_f2f_freq_diff_family_z:t1_age_z   -0.135  0.489 -0.276  7.83e- 1  -1.10  
##  6 t1_phone_freq_diff_family_z           0.899  0.472  1.90   5.72e- 2  -0.0275
##  7 t1_age_z                             -3.13   0.494 -6.34   3.47e-10  -4.10  
##  8 countryuk                             1.96   1.15   1.71   8.68e- 2  -0.285 
##  9 countryusa                            2.70   1.23   2.19   2.87e- 2   0.282 
## 10 t1_phone_freq_diff_family_z:t1_age_z -0.199  0.484 -0.411  6.81e- 1  -1.15  
## 11 t1_elec_freq_diff_family_z            0.308  0.467  0.660  5.10e- 1  -0.608 
## 12 t1_age_z                             -3.13   0.493 -6.34   3.43e-10  -4.09  
## 13 countryuk                             2.07   1.14   1.81   7.01e- 2  -0.171 
## 14 countryusa                            2.77   1.23   2.25   2.45e- 2   0.358 
## 15 t1_elec_freq_diff_family_z:t1_age_z  -0.425  0.527 -0.808  4.19e- 1  -1.46  
## 16 t1_f2f_freq_diff_friend_z             0.943  0.489  1.93   5.39e- 2  -0.0159
## 17 t1_age_z                             -3.43   0.480 -7.15   1.62e-12  -4.38  
## 18 countryuk                             2.67   1.14   2.35   1.91e- 2   0.438 
## 19 countryusa                            2.72   1.25   2.18   2.97e- 2   0.268 
## 20 t1_f2f_freq_diff_friend_z:t1_age_z   -1.13   0.437 -2.60   9.47e- 3  -1.99  
## 21 t1_phone_freq_diff_friend_z           1.15   0.470  2.44   1.50e- 2   0.223 
## 22 t1_age_z                             -3.42   0.472 -7.24   8.27e-13  -4.34  
## 23 countryuk                             3.01   1.13   2.65   8.08e- 3   0.784 
## 24 countryusa                            3.01   1.25   2.40   1.64e- 2   0.552 
## 25 t1_phone_freq_diff_friend_z:t1_age_z  0.0235 0.475  0.0494 9.61e- 1  -0.908 
## 26 t1_elec_freq_diff_friend_z            1.27   0.470  2.71   6.75e- 3   0.353 
## 27 t1_age_z                             -3.48   0.468 -7.44   2.04e-13  -4.40  
## 28 countryuk                             2.98   1.13   2.64   8.51e- 3   0.762 
## 29 countryusa                            2.97   1.25   2.37   1.78e- 2   0.514 
## 30 t1_elec_freq_diff_friend_z:t1_age_z  -0.214  0.469 -0.456  6.48e- 1  -1.13  
##    CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1    1.11  f2f_freq_diff_family   ""    7.83e- 1 ""      
##  2   -2.17  f2f_freq_diff_family   "*"   1.60e- 9 "*"     
##  3    4.31  f2f_freq_diff_family   ""    1.25e- 1 ""      
##  4    5.29  f2f_freq_diff_family   "*"   5.02e- 2 ""      
##  5    0.825 f2f_freq_diff_family   ""    7.83e- 1 ""      
##  6    1.83  phone_freq_diff_family ""    9.53e- 2 ""      
##  7   -2.16  phone_freq_diff_family "*"   1.73e- 9 "*"     
##  8    4.21  phone_freq_diff_family ""    1.09e- 1 ""      
##  9    5.11  phone_freq_diff_family "*"   7.17e- 2 ""      
## 10    0.751 phone_freq_diff_family ""    6.81e- 1 ""      
## 11    1.22  elec_freq_diff_family  ""    5.10e- 1 ""      
## 12   -2.16  elec_freq_diff_family  "*"   1.71e- 9 "*"     
## 13    4.32  elec_freq_diff_family  ""    1.17e- 1 ""      
## 14    5.19  elec_freq_diff_family  "*"   6.11e- 2 ""      
## 15    0.608 elec_freq_diff_family  ""    5.10e- 1 ""      
## 16    1.90  f2f_freq_diff_friend   ""    5.39e- 2 ""      
## 17   -2.49  f2f_freq_diff_friend   "*"   8.12e-12 "*"     
## 18    4.90  f2f_freq_diff_friend   "*"   3.18e- 2 "*"     
## 19    5.18  f2f_freq_diff_friend   "*"   3.72e- 2 "*"     
## 20   -0.278 f2f_freq_diff_friend   "*"   2.37e- 2 "*"     
## 21    2.07  phone_freq_diff_friend "*"   2.05e- 2 "*"     
## 22   -2.49  phone_freq_diff_friend "*"   4.13e-12 "*"     
## 23    5.23  phone_freq_diff_friend "*"   2.02e- 2 "*"     
## 24    5.46  phone_freq_diff_friend "*"   2.05e- 2 "*"     
## 25    0.955 phone_freq_diff_friend ""    9.61e- 1 ""      
## 26    2.20  elec_freq_diff_friend  "*"   1.42e- 2 "*"     
## 27   -2.56  elec_freq_diff_friend  "*"   1.02e-12 "*"     
## 28    5.20  elec_freq_diff_friend  "*"   1.42e- 2 "*"     
## 29    5.42  elec_freq_diff_friend  "*"   2.22e- 2 "*"     
## 30    0.707 elec_freq_diff_friend  ""    6.48e- 1 ""
print(h7_base_ucla_int_senresults_df)
## # A tibble: 6 × 11
##   Variable                                   B    SE       t       p CI_Lower
##   <chr>                                  <dbl> <dbl>   <dbl>   <dbl>    <dbl>
## 1 t1_f2f_freq_diff_family_z:t1_age_z   -0.135  0.489 -0.276  0.783     -1.10 
## 2 t1_phone_freq_diff_family_z:t1_age_z -0.199  0.484 -0.411  0.681     -1.15 
## 3 t1_elec_freq_diff_family_z:t1_age_z  -0.425  0.527 -0.808  0.419     -1.46 
## 4 t1_f2f_freq_diff_friend_z:t1_age_z   -1.13   0.437 -2.60   0.00947   -1.99 
## 5 t1_phone_freq_diff_friend_z:t1_age_z  0.0235 0.475  0.0494 0.961     -0.908
## 6 t1_elec_freq_diff_friend_z:t1_age_z  -0.214  0.469 -0.456  0.648     -1.13 
##   CI_Upper predictor              p.sig   FDRp FDRp.sig
##      <dbl> <chr>                  <chr>  <dbl> <chr>   
## 1    0.825 f2f_freq_diff_family   ""    0.783  ""      
## 2    0.751 phone_freq_diff_family ""    0.681  ""      
## 3    0.608 elec_freq_diff_family  ""    0.510  ""      
## 4   -0.278 f2f_freq_diff_friend   "*"   0.0237 "*"     
## 5    0.955 phone_freq_diff_friend ""    0.961  ""      
## 6    0.707 elec_freq_diff_friend  ""    0.648  ""

Longitudinal analysis

Main model

Depression
h7_phq_results <- list()
h7_phq_models <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("phq_total ~ t1_", h7_diff_var, "_z * t1_age_z * time + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_phq_results[[h7_diff_var]] <- tidy_model
  h7_phq_models[[h7_diff_var]] <- model
  
  h7_phq_results_df <- bind_rows(h7_phq_results) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

print(h7_phq_results_df)
## # A tibble: 66 × 9
##    Variable                                          B    SE        t        p
##    <chr>                                         <dbl> <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z                   0.0440  0.184   0.240  8.11e- 1
##  2 t1_age_z                                   -1.59    0.194  -8.20   6.42e-16
##  3 time2                                      -0.541   0.241  -2.24   2.53e- 2
##  4 time3                                      -0.655   0.262  -2.50   1.26e- 2
##  5 t1_f2f_freq_diff_family_z:t1_age_z         -0.103   0.192  -0.535  5.93e- 1
##  6 t1_f2f_freq_diff_family_z:time2             0.948   0.262   3.62   3.21e- 4
##  7 t1_f2f_freq_diff_family_z:time3             0.630   0.291   2.16   3.10e- 2
##  8 t1_age_z:time2                             -0.158   0.237  -0.666  5.06e- 1
##  9 t1_age_z:time3                             -0.323   0.269  -1.20   2.31e- 1
## 10 t1_f2f_freq_diff_family_z:t1_age_z:time2   -0.123   0.238  -0.516  6.06e- 1
## 11 t1_f2f_freq_diff_family_z:t1_age_z:time3   -0.202   0.304  -0.664  5.07e- 1
## 12 t1_phone_freq_diff_family_z                 0.601   0.185   3.25   1.18e- 3
## 13 t1_age_z                                   -1.59    0.194  -8.20   6.27e-16
## 14 time2                                      -0.543   0.241  -2.25   2.46e- 2
## 15 time3                                      -0.625   0.262  -2.39   1.71e- 2
## 16 t1_phone_freq_diff_family_z:t1_age_z       -0.136   0.190  -0.714  4.76e- 1
## 17 t1_phone_freq_diff_family_z:time2          -0.160   0.242  -0.664  5.07e- 1
## 18 t1_phone_freq_diff_family_z:time3           0.722   0.280   2.58   1.02e- 2
## 19 t1_age_z:time2                             -0.242   0.237  -1.02   3.07e- 1
## 20 t1_age_z:time3                             -0.322   0.262  -1.23   2.21e- 1
## 21 t1_phone_freq_diff_family_z:t1_age_z:time2  0.0201  0.230   0.0873 9.30e- 1
## 22 t1_phone_freq_diff_family_z:t1_age_z:time3 -0.801   0.311  -2.58   1.02e- 2
## 23 t1_elec_freq_diff_family_z                  0.388   0.183   2.12   3.46e- 2
## 24 t1_age_z                                   -1.58    0.194  -8.15   9.10e-16
## 25 time2                                      -0.558   0.243  -2.30   2.18e- 2
## 26 time3                                      -0.650   0.263  -2.47   1.37e- 2
## 27 t1_elec_freq_diff_family_z:t1_age_z        -0.286   0.207  -1.38   1.67e- 1
## 28 t1_elec_freq_diff_family_z:time2            0.290   0.244   1.19   2.33e- 1
## 29 t1_elec_freq_diff_family_z:time3           -0.0580  0.323  -0.180  8.58e- 1
## 30 t1_age_z:time2                             -0.206   0.238  -0.864  3.88e- 1
## 31 t1_age_z:time3                             -0.263   0.265  -0.992  3.22e- 1
## 32 t1_elec_freq_diff_family_z:t1_age_z:time2   0.175   0.228   0.769  4.42e- 1
## 33 t1_elec_freq_diff_family_z:t1_age_z:time3  -0.425   0.319  -1.33   1.83e- 1
## 34 t1_f2f_freq_diff_friend_z                   0.374   0.190   1.97   4.87e- 2
## 35 t1_age_z                                   -1.82    0.188  -9.71   1.61e-21
## 36 time2                                      -0.656   0.241  -2.73   6.56e- 3
## 37 time3                                      -1.01    0.266  -3.81   1.52e- 4
## 38 t1_f2f_freq_diff_friend_z:t1_age_z         -0.416   0.170  -2.44   1.48e- 2
## 39 t1_f2f_freq_diff_friend_z:time2             0.0473  0.244   0.194  8.47e- 1
## 40 t1_f2f_freq_diff_friend_z:time3             0.129   0.270   0.479  6.32e- 1
## 41 t1_age_z:time2                             -0.0964  0.233  -0.413  6.80e- 1
## 42 t1_age_z:time3                             -0.224   0.256  -0.872  3.83e- 1
## 43 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.00479 0.213  -0.0225 9.82e- 1
## 44 t1_f2f_freq_diff_friend_z:t1_age_z:time3   -0.157   0.229  -0.684  4.94e- 1
## 45 t1_phone_freq_diff_friend_z                 0.443   0.183   2.41   1.59e- 2
## 46 t1_age_z                                   -1.84    0.184 -10.0    8.04e-23
## 47 time2                                      -0.576   0.236  -2.44   1.51e- 2
## 48 time3                                      -0.914   0.257  -3.55   4.14e- 4
## 49 t1_phone_freq_diff_friend_z:t1_age_z       -0.368   0.185  -1.99   4.72e- 2
## 50 t1_phone_freq_diff_friend_z:time2          -0.0795  0.241  -0.330  7.42e- 1
## 51 t1_phone_freq_diff_friend_z:time3          -0.263   0.249  -1.06   2.91e- 1
## 52 t1_age_z:time2                             -0.0708  0.230  -0.308  7.58e- 1
## 53 t1_age_z:time3                             -0.290   0.248  -1.17   2.42e- 1
## 54 t1_phone_freq_diff_friend_z:t1_age_z:time2  0.382   0.225   1.70   8.95e- 2
## 55 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.192   0.227   0.849  3.96e- 1
## 56 t1_elec_freq_diff_friend_z                  0.507   0.183   2.77   5.72e- 3
## 57 t1_age_z                                   -1.84    0.182 -10.1    4.85e-23
## 58 time2                                      -0.638   0.233  -2.74   6.37e- 3
## 59 time3                                      -0.921   0.257  -3.58   3.64e- 4
## 60 t1_elec_freq_diff_friend_z:t1_age_z        -0.214   0.183  -1.17   2.42e- 1
## 61 t1_elec_freq_diff_friend_z:time2            0.105   0.228   0.458  6.47e- 1
## 62 t1_elec_freq_diff_friend_z:time3           -0.00760 0.266  -0.0285 9.77e- 1
## 63 t1_age_z:time2                             -0.130   0.224  -0.578  5.63e- 1
## 64 t1_age_z:time3                             -0.284   0.246  -1.15   2.49e- 1
## 65 t1_elec_freq_diff_friend_z:t1_age_z:time2   0.0499  0.250   0.199  8.42e- 1
## 66 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.0977  0.290   0.337  7.36e- 1
##    CI_Lower CI_Upper predictor              p.sig
##       <dbl>    <dbl> <chr>                  <chr>
##  1 -0.316    0.404   f2f_freq_diff_family   ""   
##  2 -1.97    -1.21    f2f_freq_diff_family   "*"  
##  3 -1.01    -0.0671  f2f_freq_diff_family   "*"  
##  4 -1.17    -0.141   f2f_freq_diff_family   "*"  
##  5 -0.479    0.274   f2f_freq_diff_family   ""   
##  6  0.433    1.46    f2f_freq_diff_family   "*"  
##  7  0.0577   1.20    f2f_freq_diff_family   "*"  
##  8 -0.623    0.308   f2f_freq_diff_family   ""   
##  9 -0.852    0.206   f2f_freq_diff_family   ""   
## 10 -0.590    0.345   f2f_freq_diff_family   ""   
## 11 -0.799    0.395   f2f_freq_diff_family   ""   
## 12  0.239    0.964   phone_freq_diff_family "*"  
## 13 -1.97    -1.21    phone_freq_diff_family "*"  
## 14 -1.02    -0.0699  phone_freq_diff_family "*"  
## 15 -1.14    -0.112   phone_freq_diff_family "*"  
## 16 -0.509    0.237   phone_freq_diff_family ""   
## 17 -0.635    0.314   phone_freq_diff_family ""   
## 18  0.171    1.27    phone_freq_diff_family "*"  
## 19 -0.707    0.223   phone_freq_diff_family ""   
## 20 -0.837    0.194   phone_freq_diff_family ""   
## 21 -0.432    0.473   phone_freq_diff_family ""   
## 22 -1.41    -0.191   phone_freq_diff_family "*"  
## 23  0.0281   0.747   elec_freq_diff_family  "*"  
## 24 -1.96    -1.20    elec_freq_diff_family  "*"  
## 25 -1.03    -0.0814  elec_freq_diff_family  "*"  
## 26 -1.17    -0.134   elec_freq_diff_family  "*"  
## 27 -0.692    0.120   elec_freq_diff_family  ""   
## 28 -0.188    0.769   elec_freq_diff_family  ""   
## 29 -0.692    0.576   elec_freq_diff_family  ""   
## 30 -0.673    0.262   elec_freq_diff_family  ""   
## 31 -0.785    0.258   elec_freq_diff_family  ""   
## 32 -0.273    0.624   elec_freq_diff_family  ""   
## 33 -1.05     0.201   elec_freq_diff_family  ""   
## 34  0.00222  0.746   f2f_freq_diff_friend   "*"  
## 35 -2.19    -1.45    f2f_freq_diff_friend   "*"  
## 36 -1.13    -0.184   f2f_freq_diff_friend   "*"  
## 37 -1.53    -0.491   f2f_freq_diff_friend   "*"  
## 38 -0.750   -0.0816  f2f_freq_diff_friend   "*"  
## 39 -0.433    0.527   f2f_freq_diff_friend   ""   
## 40 -0.400    0.659   f2f_freq_diff_friend   ""   
## 41 -0.555    0.362   f2f_freq_diff_friend   ""   
## 42 -0.727    0.280   f2f_freq_diff_friend   ""   
## 43 -0.422    0.413   f2f_freq_diff_friend   ""   
## 44 -0.607    0.293   f2f_freq_diff_friend   ""   
## 45  0.0829   0.802   phone_freq_diff_friend "*"  
## 46 -2.21    -1.48    phone_freq_diff_friend "*"  
## 47 -1.04    -0.112   phone_freq_diff_friend "*"  
## 48 -1.42    -0.408   phone_freq_diff_friend "*"  
## 49 -0.731   -0.00462 phone_freq_diff_friend "*"  
## 50 -0.553    0.394   phone_freq_diff_friend ""   
## 51 -0.751    0.225   phone_freq_diff_friend ""   
## 52 -0.522    0.380   phone_freq_diff_friend ""   
## 53 -0.777    0.197   phone_freq_diff_friend ""   
## 54 -0.0591   0.824   phone_freq_diff_friend ""   
## 55 -0.253    0.638   phone_freq_diff_friend ""   
## 56  0.148    0.866   elec_freq_diff_friend  "*"  
## 57 -2.20    -1.48    elec_freq_diff_friend  "*"  
## 58 -1.10    -0.180   elec_freq_diff_friend  "*"  
## 59 -1.43    -0.416   elec_freq_diff_friend  "*"  
## 60 -0.574    0.145   elec_freq_diff_friend  ""   
## 61 -0.344    0.553   elec_freq_diff_friend  ""   
## 62 -0.530    0.515   elec_freq_diff_friend  ""   
## 63 -0.570    0.310   elec_freq_diff_friend  ""   
## 64 -0.767    0.199   elec_freq_diff_friend  ""   
## 65 -0.442    0.541   elec_freq_diff_friend  ""   
## 66 -0.472    0.667   elec_freq_diff_friend  ""

Conduct FDR correction for multiple comparisons

h7_phq_fdr_results_df <- h7_phq_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()
print(h7_phq_fdr_results_df)
## # A tibble: 66 × 11
##    Variable                                          B    SE        t        p
##    <chr>                                         <dbl> <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z                   0.0440  0.184   0.240  8.11e- 1
##  2 t1_age_z                                   -1.59    0.194  -8.20   6.42e-16
##  3 time2                                      -0.541   0.241  -2.24   2.53e- 2
##  4 time3                                      -0.655   0.262  -2.50   1.26e- 2
##  5 t1_f2f_freq_diff_family_z:t1_age_z         -0.103   0.192  -0.535  5.93e- 1
##  6 t1_f2f_freq_diff_family_z:time2             0.948   0.262   3.62   3.21e- 4
##  7 t1_f2f_freq_diff_family_z:time3             0.630   0.291   2.16   3.10e- 2
##  8 t1_age_z:time2                             -0.158   0.237  -0.666  5.06e- 1
##  9 t1_age_z:time3                             -0.323   0.269  -1.20   2.31e- 1
## 10 t1_f2f_freq_diff_family_z:t1_age_z:time2   -0.123   0.238  -0.516  6.06e- 1
## 11 t1_f2f_freq_diff_family_z:t1_age_z:time3   -0.202   0.304  -0.664  5.07e- 1
## 12 t1_phone_freq_diff_family_z                 0.601   0.185   3.25   1.18e- 3
## 13 t1_age_z                                   -1.59    0.194  -8.20   6.27e-16
## 14 time2                                      -0.543   0.241  -2.25   2.46e- 2
## 15 time3                                      -0.625   0.262  -2.39   1.71e- 2
## 16 t1_phone_freq_diff_family_z:t1_age_z       -0.136   0.190  -0.714  4.76e- 1
## 17 t1_phone_freq_diff_family_z:time2          -0.160   0.242  -0.664  5.07e- 1
## 18 t1_phone_freq_diff_family_z:time3           0.722   0.280   2.58   1.02e- 2
## 19 t1_age_z:time2                             -0.242   0.237  -1.02   3.07e- 1
## 20 t1_age_z:time3                             -0.322   0.262  -1.23   2.21e- 1
## 21 t1_phone_freq_diff_family_z:t1_age_z:time2  0.0201  0.230   0.0873 9.30e- 1
## 22 t1_phone_freq_diff_family_z:t1_age_z:time3 -0.801   0.311  -2.58   1.02e- 2
## 23 t1_elec_freq_diff_family_z                  0.388   0.183   2.12   3.46e- 2
## 24 t1_age_z                                   -1.58    0.194  -8.15   9.10e-16
## 25 time2                                      -0.558   0.243  -2.30   2.18e- 2
## 26 time3                                      -0.650   0.263  -2.47   1.37e- 2
## 27 t1_elec_freq_diff_family_z:t1_age_z        -0.286   0.207  -1.38   1.67e- 1
## 28 t1_elec_freq_diff_family_z:time2            0.290   0.244   1.19   2.33e- 1
## 29 t1_elec_freq_diff_family_z:time3           -0.0580  0.323  -0.180  8.58e- 1
## 30 t1_age_z:time2                             -0.206   0.238  -0.864  3.88e- 1
## 31 t1_age_z:time3                             -0.263   0.265  -0.992  3.22e- 1
## 32 t1_elec_freq_diff_family_z:t1_age_z:time2   0.175   0.228   0.769  4.42e- 1
## 33 t1_elec_freq_diff_family_z:t1_age_z:time3  -0.425   0.319  -1.33   1.83e- 1
## 34 t1_f2f_freq_diff_friend_z                   0.374   0.190   1.97   4.87e- 2
## 35 t1_age_z                                   -1.82    0.188  -9.71   1.61e-21
## 36 time2                                      -0.656   0.241  -2.73   6.56e- 3
## 37 time3                                      -1.01    0.266  -3.81   1.52e- 4
## 38 t1_f2f_freq_diff_friend_z:t1_age_z         -0.416   0.170  -2.44   1.48e- 2
## 39 t1_f2f_freq_diff_friend_z:time2             0.0473  0.244   0.194  8.47e- 1
## 40 t1_f2f_freq_diff_friend_z:time3             0.129   0.270   0.479  6.32e- 1
## 41 t1_age_z:time2                             -0.0964  0.233  -0.413  6.80e- 1
## 42 t1_age_z:time3                             -0.224   0.256  -0.872  3.83e- 1
## 43 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.00479 0.213  -0.0225 9.82e- 1
## 44 t1_f2f_freq_diff_friend_z:t1_age_z:time3   -0.157   0.229  -0.684  4.94e- 1
## 45 t1_phone_freq_diff_friend_z                 0.443   0.183   2.41   1.59e- 2
## 46 t1_age_z                                   -1.84    0.184 -10.0    8.04e-23
## 47 time2                                      -0.576   0.236  -2.44   1.51e- 2
## 48 time3                                      -0.914   0.257  -3.55   4.14e- 4
## 49 t1_phone_freq_diff_friend_z:t1_age_z       -0.368   0.185  -1.99   4.72e- 2
## 50 t1_phone_freq_diff_friend_z:time2          -0.0795  0.241  -0.330  7.42e- 1
## 51 t1_phone_freq_diff_friend_z:time3          -0.263   0.249  -1.06   2.91e- 1
## 52 t1_age_z:time2                             -0.0708  0.230  -0.308  7.58e- 1
## 53 t1_age_z:time3                             -0.290   0.248  -1.17   2.42e- 1
## 54 t1_phone_freq_diff_friend_z:t1_age_z:time2  0.382   0.225   1.70   8.95e- 2
## 55 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.192   0.227   0.849  3.96e- 1
## 56 t1_elec_freq_diff_friend_z                  0.507   0.183   2.77   5.72e- 3
## 57 t1_age_z                                   -1.84    0.182 -10.1    4.85e-23
## 58 time2                                      -0.638   0.233  -2.74   6.37e- 3
## 59 time3                                      -0.921   0.257  -3.58   3.64e- 4
## 60 t1_elec_freq_diff_friend_z:t1_age_z        -0.214   0.183  -1.17   2.42e- 1
## 61 t1_elec_freq_diff_friend_z:time2            0.105   0.228   0.458  6.47e- 1
## 62 t1_elec_freq_diff_friend_z:time3           -0.00760 0.266  -0.0285 9.77e- 1
## 63 t1_age_z:time2                             -0.130   0.224  -0.578  5.63e- 1
## 64 t1_age_z:time3                             -0.284   0.246  -1.15   2.49e- 1
## 65 t1_elec_freq_diff_friend_z:t1_age_z:time2   0.0499  0.250   0.199  8.42e- 1
## 66 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.0977  0.290   0.337  7.36e- 1
##    CI_Lower CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1 -0.316    0.404   f2f_freq_diff_family   ""    8.11e- 1 ""      
##  2 -1.97    -1.21    f2f_freq_diff_family   "*"   7.06e-15 "*"     
##  3 -1.01    -0.0671  f2f_freq_diff_family   "*"   6.82e- 2 ""      
##  4 -1.17    -0.141   f2f_freq_diff_family   "*"   4.64e- 2 "*"     
##  5 -0.479    0.274   f2f_freq_diff_family   ""    6.67e- 1 ""      
##  6  0.433    1.46    f2f_freq_diff_family   "*"   1.76e- 3 "*"     
##  7  0.0577   1.20    f2f_freq_diff_family   "*"   6.82e- 2 ""      
##  8 -0.623    0.308   f2f_freq_diff_family   ""    6.67e- 1 ""      
##  9 -0.852    0.206   f2f_freq_diff_family   ""    4.23e- 1 ""      
## 10 -0.590    0.345   f2f_freq_diff_family   ""    6.67e- 1 ""      
## 11 -0.799    0.395   f2f_freq_diff_family   ""    6.67e- 1 ""      
## 12  0.239    0.964   phone_freq_diff_family "*"   6.50e- 3 "*"     
## 13 -1.97    -1.21    phone_freq_diff_family "*"   6.90e-15 "*"     
## 14 -1.02    -0.0699  phone_freq_diff_family "*"   4.50e- 2 "*"     
## 15 -1.14    -0.112   phone_freq_diff_family "*"   3.76e- 2 "*"     
## 16 -0.509    0.237   phone_freq_diff_family ""    5.58e- 1 ""      
## 17 -0.635    0.314   phone_freq_diff_family ""    5.58e- 1 ""      
## 18  0.171    1.27    phone_freq_diff_family "*"   2.82e- 2 "*"     
## 19 -0.707    0.223   phone_freq_diff_family ""    4.23e- 1 ""      
## 20 -0.837    0.194   phone_freq_diff_family ""    3.47e- 1 ""      
## 21 -0.432    0.473   phone_freq_diff_family ""    9.30e- 1 ""      
## 22 -1.41    -0.191   phone_freq_diff_family "*"   2.82e- 2 "*"     
## 23  0.0281   0.747   elec_freq_diff_family  "*"   9.52e- 2 ""      
## 24 -1.96    -1.20    elec_freq_diff_family  "*"   1.00e-14 "*"     
## 25 -1.03    -0.0814  elec_freq_diff_family  "*"   8.01e- 2 ""      
## 26 -1.17    -0.134   elec_freq_diff_family  "*"   7.52e- 2 ""      
## 27 -0.692    0.120   elec_freq_diff_family  ""    3.35e- 1 ""      
## 28 -0.188    0.769   elec_freq_diff_family  ""    3.67e- 1 ""      
## 29 -0.692    0.576   elec_freq_diff_family  ""    8.58e- 1 ""      
## 30 -0.673    0.262   elec_freq_diff_family  ""    4.74e- 1 ""      
## 31 -0.785    0.258   elec_freq_diff_family  ""    4.42e- 1 ""      
## 32 -0.273    0.624   elec_freq_diff_family  ""    4.87e- 1 ""      
## 33 -1.05     0.201   elec_freq_diff_family  ""    3.35e- 1 ""      
## 34  0.00222  0.746   f2f_freq_diff_friend   "*"   1.07e- 1 ""      
## 35 -2.19    -1.45    f2f_freq_diff_friend   "*"   1.77e-20 "*"     
## 36 -1.13    -0.184   f2f_freq_diff_friend   "*"   2.41e- 2 "*"     
## 37 -1.53    -0.491   f2f_freq_diff_friend   "*"   8.38e- 4 "*"     
## 38 -0.750   -0.0816  f2f_freq_diff_friend   "*"   4.07e- 2 "*"     
## 39 -0.433    0.527   f2f_freq_diff_friend   ""    9.31e- 1 ""      
## 40 -0.400    0.659   f2f_freq_diff_friend   ""    8.31e- 1 ""      
## 41 -0.555    0.362   f2f_freq_diff_friend   ""    8.31e- 1 ""      
## 42 -0.727    0.280   f2f_freq_diff_friend   ""    7.03e- 1 ""      
## 43 -0.422    0.413   f2f_freq_diff_friend   ""    9.82e- 1 ""      
## 44 -0.607    0.293   f2f_freq_diff_friend   ""    7.76e- 1 ""      
## 45  0.0829   0.802   phone_freq_diff_friend "*"   4.38e- 2 "*"     
## 46 -2.21    -1.48    phone_freq_diff_friend "*"   8.85e-22 "*"     
## 47 -1.04    -0.112   phone_freq_diff_friend "*"   4.38e- 2 "*"     
## 48 -1.42    -0.408   phone_freq_diff_friend "*"   2.28e- 3 "*"     
## 49 -0.731   -0.00462 phone_freq_diff_friend "*"   1.04e- 1 ""      
## 50 -0.553    0.394   phone_freq_diff_friend ""    7.58e- 1 ""      
## 51 -0.751    0.225   phone_freq_diff_friend ""    3.99e- 1 ""      
## 52 -0.522    0.380   phone_freq_diff_friend ""    7.58e- 1 ""      
## 53 -0.777    0.197   phone_freq_diff_friend ""    3.81e- 1 ""      
## 54 -0.0591   0.824   phone_freq_diff_friend ""    1.64e- 1 ""      
## 55 -0.253    0.638   phone_freq_diff_friend ""    4.85e- 1 ""      
## 56  0.148    0.866   elec_freq_diff_friend  "*"   1.75e- 2 "*"     
## 57 -2.20    -1.48    elec_freq_diff_friend  "*"   5.34e-22 "*"     
## 58 -1.10    -0.180   elec_freq_diff_friend  "*"   1.75e- 2 "*"     
## 59 -1.43    -0.416   elec_freq_diff_friend  "*"   2.00e- 3 "*"     
## 60 -0.574    0.145   elec_freq_diff_friend  ""    4.57e- 1 ""      
## 61 -0.344    0.553   elec_freq_diff_friend  ""    8.90e- 1 ""      
## 62 -0.530    0.515   elec_freq_diff_friend  ""    9.77e- 1 ""      
## 63 -0.570    0.310   elec_freq_diff_friend  ""    8.85e- 1 ""      
## 64 -0.767    0.199   elec_freq_diff_friend  ""    4.57e- 1 ""      
## 65 -0.442    0.541   elec_freq_diff_friend  ""    9.26e- 1 ""      
## 66 -0.472    0.667   elec_freq_diff_friend  ""    9.00e- 1 ""

Examine 3 way interactions

# 3 way interaction 
h7_phq_3int_results_df <- h7_phq_fdr_results_df %>%
  filter(str_detect(Variable, ":t1_age_z:")) 
print(h7_phq_3int_results_df) 
## # A tibble: 12 × 11
##    Variable                                          B    SE       t      p
##    <chr>                                         <dbl> <dbl>   <dbl>  <dbl>
##  1 t1_f2f_freq_diff_family_z:t1_age_z:time2   -0.123   0.238 -0.516  0.606 
##  2 t1_f2f_freq_diff_family_z:t1_age_z:time3   -0.202   0.304 -0.664  0.507 
##  3 t1_phone_freq_diff_family_z:t1_age_z:time2  0.0201  0.230  0.0873 0.930 
##  4 t1_phone_freq_diff_family_z:t1_age_z:time3 -0.801   0.311 -2.58   0.0102
##  5 t1_elec_freq_diff_family_z:t1_age_z:time2   0.175   0.228  0.769  0.442 
##  6 t1_elec_freq_diff_family_z:t1_age_z:time3  -0.425   0.319 -1.33   0.183 
##  7 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.00479 0.213 -0.0225 0.982 
##  8 t1_f2f_freq_diff_friend_z:t1_age_z:time3   -0.157   0.229 -0.684  0.494 
##  9 t1_phone_freq_diff_friend_z:t1_age_z:time2  0.382   0.225  1.70   0.0895
## 10 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.192   0.227  0.849  0.396 
## 11 t1_elec_freq_diff_friend_z:t1_age_z:time2   0.0499  0.250  0.199  0.842 
## 12 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.0977  0.290  0.337  0.736 
##    CI_Lower CI_Upper predictor              p.sig   FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr>  <dbl> <chr>   
##  1  -0.590     0.345 f2f_freq_diff_family   ""    0.667  ""      
##  2  -0.799     0.395 f2f_freq_diff_family   ""    0.667  ""      
##  3  -0.432     0.473 phone_freq_diff_family ""    0.930  ""      
##  4  -1.41     -0.191 phone_freq_diff_family "*"   0.0282 "*"     
##  5  -0.273     0.624 elec_freq_diff_family  ""    0.487  ""      
##  6  -1.05      0.201 elec_freq_diff_family  ""    0.335  ""      
##  7  -0.422     0.413 f2f_freq_diff_friend   ""    0.982  ""      
##  8  -0.607     0.293 f2f_freq_diff_friend   ""    0.776  ""      
##  9  -0.0591    0.824 phone_freq_diff_friend ""    0.164  ""      
## 10  -0.253     0.638 phone_freq_diff_friend ""    0.485  ""      
## 11  -0.442     0.541 elec_freq_diff_friend  ""    0.926  ""      
## 12  -0.472     0.667 elec_freq_diff_friend  ""    0.900  ""
# significant 3 way interaction: t1_phone_freq_diff_family_z:t1_age_z:time3
# plot interaction
plot_h7_phq_phone_freq_diff_fam <- interact_plot(h7_phq_models[["phone_freq_diff_family"]], 
                                                 pred ="t1_phone_freq_diff_family_z",
                                                 modx = "t1_age_z", 
                                                 mod2 = "time", 
                                                 x.label = "Frequency of Contact (Phone) Difference (Standardised)", 
                                                 y.label = "PHQ-9 Total Score", 
                                                 legend.main = "Age (Standardised)",
                                                 modx.labels = c("-1 SD", "Mean", "+1 SD"),
                                                 interval = TRUE)
plot_h7_phq_phone_freq_diff_fam

2 way interaction

h7_phq_2int_results_df <- h7_phq_fdr_results_df %>%
  filter(str_detect(Variable, ":") & !str_detect(Variable, ":t1_age_z:"))  
print(h7_phq_2int_results_df) 
## # A tibble: 30 × 11
##    Variable                                    B    SE       t        p CI_Lower
##    <chr>                                   <dbl> <dbl>   <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z:t1_age_z   -0.103   0.192 -0.535  0.593     -0.479 
##  2 t1_f2f_freq_diff_family_z:time2       0.948   0.262  3.62   0.000321   0.433 
##  3 t1_f2f_freq_diff_family_z:time3       0.630   0.291  2.16   0.0310     0.0577
##  4 t1_age_z:time2                       -0.158   0.237 -0.666  0.506     -0.623 
##  5 t1_age_z:time3                       -0.323   0.269 -1.20   0.231     -0.852 
##  6 t1_phone_freq_diff_family_z:t1_age_z -0.136   0.190 -0.714  0.476     -0.509 
##  7 t1_phone_freq_diff_family_z:time2    -0.160   0.242 -0.664  0.507     -0.635 
##  8 t1_phone_freq_diff_family_z:time3     0.722   0.280  2.58   0.0102     0.171 
##  9 t1_age_z:time2                       -0.242   0.237 -1.02   0.307     -0.707 
## 10 t1_age_z:time3                       -0.322   0.262 -1.23   0.221     -0.837 
## 11 t1_elec_freq_diff_family_z:t1_age_z  -0.286   0.207 -1.38   0.167     -0.692 
## 12 t1_elec_freq_diff_family_z:time2      0.290   0.244  1.19   0.233     -0.188 
## 13 t1_elec_freq_diff_family_z:time3     -0.0580  0.323 -0.180  0.858     -0.692 
## 14 t1_age_z:time2                       -0.206   0.238 -0.864  0.388     -0.673 
## 15 t1_age_z:time3                       -0.263   0.265 -0.992  0.322     -0.785 
## 16 t1_f2f_freq_diff_friend_z:t1_age_z   -0.416   0.170 -2.44   0.0148    -0.750 
## 17 t1_f2f_freq_diff_friend_z:time2       0.0473  0.244  0.194  0.847     -0.433 
## 18 t1_f2f_freq_diff_friend_z:time3       0.129   0.270  0.479  0.632     -0.400 
## 19 t1_age_z:time2                       -0.0964  0.233 -0.413  0.680     -0.555 
## 20 t1_age_z:time3                       -0.224   0.256 -0.872  0.383     -0.727 
## 21 t1_phone_freq_diff_friend_z:t1_age_z -0.368   0.185 -1.99   0.0472    -0.731 
## 22 t1_phone_freq_diff_friend_z:time2    -0.0795  0.241 -0.330  0.742     -0.553 
## 23 t1_phone_freq_diff_friend_z:time3    -0.263   0.249 -1.06   0.291     -0.751 
## 24 t1_age_z:time2                       -0.0708  0.230 -0.308  0.758     -0.522 
## 25 t1_age_z:time3                       -0.290   0.248 -1.17   0.242     -0.777 
## 26 t1_elec_freq_diff_friend_z:t1_age_z  -0.214   0.183 -1.17   0.242     -0.574 
## 27 t1_elec_freq_diff_friend_z:time2      0.105   0.228  0.458  0.647     -0.344 
## 28 t1_elec_freq_diff_friend_z:time3     -0.00760 0.266 -0.0285 0.977     -0.530 
## 29 t1_age_z:time2                       -0.130   0.224 -0.578  0.563     -0.570 
## 30 t1_age_z:time3                       -0.284   0.246 -1.15   0.249     -0.767 
##    CI_Upper predictor              p.sig    FDRp FDRp.sig
##       <dbl> <chr>                  <chr>   <dbl> <chr>   
##  1  0.274   f2f_freq_diff_family   ""    0.667   ""      
##  2  1.46    f2f_freq_diff_family   "*"   0.00176 "*"     
##  3  1.20    f2f_freq_diff_family   "*"   0.0682  ""      
##  4  0.308   f2f_freq_diff_family   ""    0.667   ""      
##  5  0.206   f2f_freq_diff_family   ""    0.423   ""      
##  6  0.237   phone_freq_diff_family ""    0.558   ""      
##  7  0.314   phone_freq_diff_family ""    0.558   ""      
##  8  1.27    phone_freq_diff_family "*"   0.0282  "*"     
##  9  0.223   phone_freq_diff_family ""    0.423   ""      
## 10  0.194   phone_freq_diff_family ""    0.347   ""      
## 11  0.120   elec_freq_diff_family  ""    0.335   ""      
## 12  0.769   elec_freq_diff_family  ""    0.367   ""      
## 13  0.576   elec_freq_diff_family  ""    0.858   ""      
## 14  0.262   elec_freq_diff_family  ""    0.474   ""      
## 15  0.258   elec_freq_diff_family  ""    0.442   ""      
## 16 -0.0816  f2f_freq_diff_friend   "*"   0.0407  "*"     
## 17  0.527   f2f_freq_diff_friend   ""    0.931   ""      
## 18  0.659   f2f_freq_diff_friend   ""    0.831   ""      
## 19  0.362   f2f_freq_diff_friend   ""    0.831   ""      
## 20  0.280   f2f_freq_diff_friend   ""    0.703   ""      
## 21 -0.00462 phone_freq_diff_friend "*"   0.104   ""      
## 22  0.394   phone_freq_diff_friend ""    0.758   ""      
## 23  0.225   phone_freq_diff_friend ""    0.399   ""      
## 24  0.380   phone_freq_diff_friend ""    0.758   ""      
## 25  0.197   phone_freq_diff_friend ""    0.381   ""      
## 26  0.145   elec_freq_diff_friend  ""    0.457   ""      
## 27  0.553   elec_freq_diff_friend  ""    0.890   ""      
## 28  0.515   elec_freq_diff_friend  ""    0.977   ""      
## 29  0.310   elec_freq_diff_friend  ""    0.885   ""      
## 30  0.199   elec_freq_diff_friend  ""    0.457   ""
# significant 2 way interactions:
# t1_f2f_freq_diff_family_z:time2
# t1_phone_freq_diff_family_z:time3,
# t1_f2f_freq_diff_friend_z:t1_age_z

# plot interaction
plot_h7_phq_f2f_freq_diff_fam_time <- interact_plot(h7_phq_models[["f2f_freq_diff_family"]], 
                                                   pred = "t1_f2f_freq_diff_family_z", 
                                                   modx = "time", 
                                                   x.label = "Frequency of Contact (F2F) Difference (Standardised)", 
                                                   y.label = "PHQ-9 Total Score", 
                                                   legend.main = "Wave",
                                                   modx.labels = c("T1", "T2", "T3"),
                                                   interval = TRUE)
plot_h7_phq_f2f_freq_diff_fam_time

plot_h7_phq_phone_freq_diff_fam_time <- interact_plot(h7_phq_models[["phone_freq_diff_family"]], 
                                                         pred = "t1_phone_freq_diff_family_z", 
                                                         modx = "time", 
                                                         x.label = "Frequency of Contact (Phone) Difference (Standardised)", 
                                                         y.label = "PHQ-9 Total Score", 
                                                         legend.main = "Wave",
                                                         modx.labels = c("T1", "T2", "T3"),
                                                         interval = TRUE)
plot_h7_phq_phone_freq_diff_fam_time

plot_h7_phq_f2f_freq_diff_friend <- interact_plot(h7_phq_models[["f2f_freq_diff_friend"]], 
                                                    pred = "t1_f2f_freq_diff_friend_z", 
                                                    modx = "t1_age_z", 
                                                    x.label = "Frequency of Contact (F2F) Difference (Standardised)", 
                                                    y.label = "PHQ-9 Total Score", 
                                                    legend.main = "Age (Standardised)",
                                                    modx.labels = c("-1 SD", "Mean", "+1 SD"),
                                                    interval = TRUE)
plot_h7_phq_f2f_freq_diff_friend

Loneliness
h7_ucla_results <- list()
h7_ucla_models <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("ucla_loneliness_total ~ t1_", h7_diff_var, "_z * t1_age_z * time + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_ucla_results[[h7_diff_var]] <- tidy_model
  h7_ucla_models[[h7_diff_var]] <- model
  
  h7_ucla_results_df <- bind_rows(h7_ucla_results) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_ucla_fdr_results_df <- h7_ucla_results_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup()

print(h7_ucla_fdr_results_df)
## # A tibble: 66 × 11
##    Variable                                          B    SE       t        p
##    <chr>                                         <dbl> <dbl>   <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z                   0.192   0.472  0.406  6.85e- 1
##  2 t1_age_z                                   -3.16    0.499 -6.32   3.68e-10
##  3 time2                                       0.320   0.654  0.490  6.24e- 1
##  4 time3                                       2.29    0.709  3.23   1.31e- 3
##  5 t1_f2f_freq_diff_family_z:t1_age_z         -0.0838  0.494 -0.170  8.65e- 1
##  6 t1_f2f_freq_diff_family_z:time2             0.513   0.709  0.723  4.70e- 1
##  7 t1_f2f_freq_diff_family_z:time3             0.100   0.789  0.127  8.99e- 1
##  8 t1_age_z:time2                             -0.288   0.642 -0.449  6.53e- 1
##  9 t1_age_z:time3                             -0.380   0.730 -0.521  6.02e- 1
## 10 t1_f2f_freq_diff_family_z:t1_age_z:time2    0.364   0.645  0.565  5.72e- 1
## 11 t1_f2f_freq_diff_family_z:t1_age_z:time3    0.452   0.823  0.549  5.83e- 1
## 12 t1_phone_freq_diff_family_z                 0.972   0.477  2.04   4.16e- 2
## 13 t1_age_z                                   -3.15    0.499 -6.31   3.99e-10
## 14 time2                                       0.260   0.648  0.401  6.89e- 1
## 15 time3                                       2.24    0.703  3.19   1.52e- 3
## 16 t1_phone_freq_diff_family_z:t1_age_z       -0.177   0.490 -0.360  7.19e- 1
## 17 t1_phone_freq_diff_family_z:time2           0.621   0.650  0.956  3.39e- 1
## 18 t1_phone_freq_diff_family_z:time3           2.27    0.754  3.01   2.71e- 3
## 19 t1_age_z:time2                             -0.338   0.637 -0.530  5.96e- 1
## 20 t1_age_z:time3                             -0.526   0.706 -0.746  4.56e- 1
## 21 t1_phone_freq_diff_family_z:t1_age_z:time2 -0.554   0.620 -0.894  3.72e- 1
## 22 t1_phone_freq_diff_family_z:t1_age_z:time3 -1.16    0.835 -1.39   1.64e- 1
## 23 t1_elec_freq_diff_family_z                  0.340   0.472  0.721  4.71e- 1
## 24 t1_age_z                                   -3.15    0.498 -6.32   3.77e-10
## 25 time2                                       0.183   0.647  0.282  7.78e- 1
## 26 time3                                       2.28    0.702  3.25   1.21e- 3
## 27 t1_elec_freq_diff_family_z:t1_age_z        -0.470   0.532 -0.883  3.77e- 1
## 28 t1_elec_freq_diff_family_z:time2            1.70    0.650  2.62   9.06e- 3
## 29 t1_elec_freq_diff_family_z:time3            0.976   0.862  1.13   2.58e- 1
## 30 t1_age_z:time2                             -0.285   0.635 -0.448  6.54e- 1
## 31 t1_age_z:time3                             -0.351   0.708 -0.495  6.21e- 1
## 32 t1_elec_freq_diff_family_z:t1_age_z:time2  -0.883   0.609 -1.45   1.48e- 1
## 33 t1_elec_freq_diff_family_z:t1_age_z:time3  -1.13    0.851 -1.33   1.85e- 1
## 34 t1_f2f_freq_diff_friend_z                   1.09    0.488  2.23   2.59e- 2
## 35 t1_age_z                                   -3.48    0.482 -7.21   9.65e-13
## 36 time2                                       0.184   0.615  0.299  7.65e- 1
## 37 time3                                       1.89    0.679  2.78   5.65e- 3
## 38 t1_f2f_freq_diff_friend_z:t1_age_z         -1.15    0.438 -2.63   8.72e- 3
## 39 t1_f2f_freq_diff_friend_z:time2             0.195   0.625  0.313  7.55e- 1
## 40 t1_f2f_freq_diff_friend_z:time3             0.263   0.689  0.382  7.02e- 1
## 41 t1_age_z:time2                             -0.839   0.596 -1.41   1.60e- 1
## 42 t1_age_z:time3                             -0.647   0.655 -0.988  3.24e- 1
## 43 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.167   0.543 -0.307  7.59e- 1
## 44 t1_f2f_freq_diff_friend_z:t1_age_z:time3    0.00658 0.585  0.0112 9.91e- 1
## 45 t1_phone_freq_diff_friend_z                 1.17    0.472  2.47   1.35e- 2
## 46 t1_age_z                                   -3.51    0.474 -7.40   2.50e-13
## 47 time2                                       0.152   0.605  0.251  8.02e- 1
## 48 time3                                       1.97    0.659  3.00   2.84e- 3
## 49 t1_phone_freq_diff_friend_z:t1_age_z       -0.0230  0.477 -0.0482 9.62e- 1
## 50 t1_phone_freq_diff_friend_z:time2           0.399   0.617  0.647  5.18e- 1
## 51 t1_phone_freq_diff_friend_z:time3          -0.121   0.636 -0.191  8.49e- 1
## 52 t1_age_z:time2                             -0.916   0.588 -1.56   1.20e- 1
## 53 t1_age_z:time3                             -0.768   0.634 -1.21   2.26e- 1
## 54 t1_phone_freq_diff_friend_z:t1_age_z:time2 -0.658   0.575 -1.14   2.53e- 1
## 55 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.0474  0.580  0.0816 9.35e- 1
## 56 t1_elec_freq_diff_friend_z                  1.30    0.472  2.76   5.80e- 3
## 57 t1_age_z                                   -3.56    0.469 -7.59   6.34e-14
## 58 time2                                       0.305   0.594  0.513  6.08e- 1
## 59 time3                                       2.02    0.655  3.08   2.16e- 3
## 60 t1_elec_freq_diff_friend_z:t1_age_z        -0.232   0.472 -0.492  6.23e- 1
## 61 t1_elec_freq_diff_friend_z:time2            0.100   0.581  0.172  8.63e- 1
## 62 t1_elec_freq_diff_friend_z:time3            0.318   0.678  0.468  6.40e- 1
## 63 t1_age_z:time2                             -0.941   0.571 -1.65   9.98e- 2
## 64 t1_age_z:time3                             -0.773   0.627 -1.23   2.18e- 1
## 65 t1_elec_freq_diff_friend_z:t1_age_z:time2  -0.803   0.638 -1.26   2.08e- 1
## 66 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.348   0.739  0.471  6.38e- 1
##    CI_Lower CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1  -0.735     1.12  f2f_freq_diff_family   ""    8.37e- 1 ""      
##  2  -4.14     -2.18  f2f_freq_diff_family   "*"   4.05e- 9 "*"     
##  3  -0.963     1.60  f2f_freq_diff_family   ""    8.37e- 1 ""      
##  4   0.897     3.68  f2f_freq_diff_family   "*"   7.18e- 3 "*"     
##  5  -1.05      0.885 f2f_freq_diff_family   ""    8.99e- 1 ""      
##  6  -0.880     1.91  f2f_freq_diff_family   ""    8.37e- 1 ""      
##  7  -1.45      1.65  f2f_freq_diff_family   ""    8.99e- 1 ""      
##  8  -1.55      0.972 f2f_freq_diff_family   ""    8.37e- 1 ""      
##  9  -1.81      1.05  f2f_freq_diff_family   ""    8.37e- 1 ""      
## 10  -0.902     1.63  f2f_freq_diff_family   ""    8.37e- 1 ""      
## 11  -1.16      2.07  f2f_freq_diff_family   ""    8.37e- 1 ""      
## 12   0.0371    1.91  phone_freq_diff_family "*"   1.14e- 1 ""      
## 13  -4.13     -2.17  phone_freq_diff_family "*"   4.39e- 9 "*"     
## 14  -1.01      1.53  phone_freq_diff_family ""    7.19e- 1 ""      
## 15   0.859     3.62  phone_freq_diff_family "*"   8.35e- 3 "*"     
## 16  -1.14      0.785 phone_freq_diff_family ""    7.19e- 1 ""      
## 17  -0.655     1.90  phone_freq_diff_family ""    5.84e- 1 ""      
## 18   0.789     3.75  phone_freq_diff_family "*"   9.95e- 3 "*"     
## 19  -1.59      0.913 phone_freq_diff_family ""    7.19e- 1 ""      
## 20  -1.91      0.860 phone_freq_diff_family ""    6.27e- 1 ""      
## 21  -1.77      0.663 phone_freq_diff_family ""    5.84e- 1 ""      
## 22  -2.81      0.476 phone_freq_diff_family ""    3.61e- 1 ""      
## 23  -0.586     1.27  elec_freq_diff_family  ""    6.48e- 1 ""      
## 24  -4.13     -2.17  elec_freq_diff_family  "*"   4.14e- 9 "*"     
## 25  -1.09      1.45  elec_freq_diff_family  ""    7.78e- 1 ""      
## 26   0.904     3.66  elec_freq_diff_family  "*"   6.64e- 3 "*"     
## 27  -1.51      0.574 elec_freq_diff_family  ""    5.93e- 1 ""      
## 28   0.425     2.98  elec_freq_diff_family  "*"   3.32e- 2 "*"     
## 29  -0.716     2.67  elec_freq_diff_family  ""    4.72e- 1 ""      
## 30  -1.53      0.963 elec_freq_diff_family  ""    7.20e- 1 ""      
## 31  -1.74      1.04  elec_freq_diff_family  ""    7.20e- 1 ""      
## 32  -2.08      0.313 elec_freq_diff_family  ""    4.06e- 1 ""      
## 33  -2.80      0.542 elec_freq_diff_family  ""    4.07e- 1 ""      
## 34   0.131     2.04  f2f_freq_diff_friend   "*"   7.12e- 2 ""      
## 35  -4.43     -2.53  f2f_freq_diff_friend   "*"   1.06e-11 "*"     
## 36  -1.02      1.39  f2f_freq_diff_friend   ""    8.42e- 1 ""      
## 37   0.552     3.22  f2f_freq_diff_friend   "*"   3.11e- 2 "*"     
## 38  -2.01     -0.292 f2f_freq_diff_friend   "*"   3.20e- 2 "*"     
## 39  -1.03      1.42  f2f_freq_diff_friend   ""    8.42e- 1 ""      
## 40  -1.09      1.62  f2f_freq_diff_friend   ""    8.42e- 1 ""      
## 41  -2.01      0.332 f2f_freq_diff_friend   ""    3.52e- 1 ""      
## 42  -1.93      0.639 f2f_freq_diff_friend   ""    5.93e- 1 ""      
## 43  -1.23      0.900 f2f_freq_diff_friend   ""    8.42e- 1 ""      
## 44  -1.14      1.16  f2f_freq_diff_friend   ""    9.91e- 1 ""      
## 45   0.241     2.10  phone_freq_diff_friend "*"   4.96e- 2 "*"     
## 46  -4.44     -2.58  phone_freq_diff_friend "*"   2.75e-12 "*"     
## 47  -1.04      1.34  phone_freq_diff_friend ""    9.62e- 1 ""      
## 48   0.680     3.27  phone_freq_diff_friend "*"   1.56e- 2 "*"     
## 49  -0.959     0.913 phone_freq_diff_friend ""    9.62e- 1 ""      
## 50  -0.812     1.61  phone_freq_diff_friend ""    8.14e- 1 ""      
## 51  -1.37      1.13  phone_freq_diff_friend ""    9.62e- 1 ""      
## 52  -2.07      0.238 phone_freq_diff_friend ""    3.29e- 1 ""      
## 53  -2.01      0.477 phone_freq_diff_friend ""    4.64e- 1 ""      
## 54  -1.79      0.472 phone_freq_diff_friend ""    4.64e- 1 ""      
## 55  -1.09      1.19  phone_freq_diff_friend ""    9.62e- 1 ""      
## 56   0.378     2.23  elec_freq_diff_friend  "*"   2.13e- 2 "*"     
## 57  -4.48     -2.64  elec_freq_diff_friend  "*"   6.97e-13 "*"     
## 58  -0.862     1.47  elec_freq_diff_friend  ""    7.04e- 1 ""      
## 59   0.731     3.30  elec_freq_diff_friend  "*"   1.19e- 2 "*"     
## 60  -1.16      0.694 elec_freq_diff_friend  ""    7.04e- 1 ""      
## 61  -1.04      1.24  elec_freq_diff_friend  ""    8.63e- 1 ""      
## 62  -1.01      1.65  elec_freq_diff_friend  ""    7.04e- 1 ""      
## 63  -2.06      0.180 elec_freq_diff_friend  ""    2.74e- 1 ""      
## 64  -2.00      0.459 elec_freq_diff_friend  ""    4.00e- 1 ""      
## 65  -2.06      0.449 elec_freq_diff_friend  ""    4.00e- 1 ""      
## 66  -1.10      1.80  elec_freq_diff_friend  ""    7.04e- 1 ""

3-way interaction

h7_ucla_3int_results_df <- h7_ucla_fdr_results_df %>%
  filter(str_detect(Variable, ":t1_age_z:"))
print(h7_ucla_3int_results_df) # no significant 3-way interactions
## # A tibble: 12 × 11
##    Variable                                          B    SE       t     p
##    <chr>                                         <dbl> <dbl>   <dbl> <dbl>
##  1 t1_f2f_freq_diff_family_z:t1_age_z:time2    0.364   0.645  0.565  0.572
##  2 t1_f2f_freq_diff_family_z:t1_age_z:time3    0.452   0.823  0.549  0.583
##  3 t1_phone_freq_diff_family_z:t1_age_z:time2 -0.554   0.620 -0.894  0.372
##  4 t1_phone_freq_diff_family_z:t1_age_z:time3 -1.16    0.835 -1.39   0.164
##  5 t1_elec_freq_diff_family_z:t1_age_z:time2  -0.883   0.609 -1.45   0.148
##  6 t1_elec_freq_diff_family_z:t1_age_z:time3  -1.13    0.851 -1.33   0.185
##  7 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.167   0.543 -0.307  0.759
##  8 t1_f2f_freq_diff_friend_z:t1_age_z:time3    0.00658 0.585  0.0112 0.991
##  9 t1_phone_freq_diff_friend_z:t1_age_z:time2 -0.658   0.575 -1.14   0.253
## 10 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.0474  0.580  0.0816 0.935
## 11 t1_elec_freq_diff_friend_z:t1_age_z:time2  -0.803   0.638 -1.26   0.208
## 12 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.348   0.739  0.471  0.638
##    CI_Lower CI_Upper predictor              p.sig  FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr> <dbl> <chr>   
##  1   -0.902    1.63  f2f_freq_diff_family   ""    0.837 ""      
##  2   -1.16     2.07  f2f_freq_diff_family   ""    0.837 ""      
##  3   -1.77     0.663 phone_freq_diff_family ""    0.584 ""      
##  4   -2.81     0.476 phone_freq_diff_family ""    0.361 ""      
##  5   -2.08     0.313 elec_freq_diff_family  ""    0.406 ""      
##  6   -2.80     0.542 elec_freq_diff_family  ""    0.407 ""      
##  7   -1.23     0.900 f2f_freq_diff_friend   ""    0.842 ""      
##  8   -1.14     1.16  f2f_freq_diff_friend   ""    0.991 ""      
##  9   -1.79     0.472 phone_freq_diff_friend ""    0.464 ""      
## 10   -1.09     1.19  phone_freq_diff_friend ""    0.962 ""      
## 11   -2.06     0.449 elec_freq_diff_friend  ""    0.400 ""      
## 12   -1.10     1.80  elec_freq_diff_friend  ""    0.704 ""

2-way interaction

h7_ucla_2int_results_df <- h7_ucla_fdr_results_df %>%
  filter(str_detect(Variable, ":") & !str_detect(Variable, ":t1_age_z:"))

# sig 2-way interaction: 
# t1_phone_freq_diff_family_z:time3, 
# t1_elec_freq_diff_family_z:time2
# t1_f2f_freq_diff_friend_z:t1_age_z

# plot interaction
plot_h7_ucla_phone_freq_diff_fam <- interact_plot(h7_ucla_models[["phone_freq_diff_family"]], 
                                                    pred = "t1_phone_freq_diff_family_z", 
                                                    modx = "time", 
                                                    x.label = "Frequency of Contact (Phone) Difference (Standardised)", 
                                                    y.label = "UCLA Loneliness Total Score", 
                                                    legend.main = "Wave",
                                                    modx.labels = c("T1", "T2", "T3"),
                                                    interval = TRUE)
plot_h7_ucla_phone_freq_diff_fam

plot_h7_ucla_elec_freq_diff_fam <- interact_plot(h7_ucla_models[["elec_freq_diff_family"]], 
                                                    pred = "t1_elec_freq_diff_family_z", 
                                                    modx = "time", 
                                                    x.label = "Frequency of Contact (Electronic) Difference (Standardised)", 
                                                    y.label = "UCLA Loneliness Total Score", 
                                                    legend.main = "Wave",
                                                    modx.labels = c("T1", "T2", "T3"),
                                                    interval = TRUE)
plot_h7_ucla_elec_freq_diff_fam

plot_h7_ucla_f2f_freq_diff_friend <- interact_plot(h7_ucla_models[["f2f_freq_diff_friend"]], 
                                                    pred = "t1_f2f_freq_diff_friend_z", 
                                                    modx = "t1_age_z", 
                                                    x.label = "Frequency of Contact (F2F) Difference (Standardised)", 
                                                    y.label = "UCLA Loneliness Total Score", 
                                                    legend.main = "Age (Standardised)",
                                                    modx.labels = c("-1 SD", "Mean", "+1 SD"),
                                                    interval = TRUE)
plot_h7_ucla_f2f_freq_diff_friend

Sensitivity analyses

Depression
h7_phq_senresults <- list()
h7_phq_senmodels <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("phq_total ~ t1_", h7_diff_var, "_z * t1_age_z * time + country + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_phq_senresults[[h7_diff_var]] <- tidy_model
  h7_phq_senmodels[[h7_diff_var]] <- model
  
  h7_phq_senresults_df <- bind_rows(h7_phq_senresults) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_phq_fdr_senresults_df <- h7_phq_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup() #%>% 
  #filter(str_detect(Variable, ":")) 

print(h7_phq_fdr_senresults_df)
## # A tibble: 78 × 11
##    Variable                                          B    SE       t        p
##    <chr>                                         <dbl> <dbl>   <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z                  -0.0292  0.185 -0.158  8.74e- 1
##  2 t1_age_z                                   -1.58    0.193 -8.20   6.61e-16
##  3 time2                                      -0.525   0.242 -2.17   3.01e- 2
##  4 time3                                      -0.647   0.262 -2.47   1.38e- 2
##  5 countryuk                                   1.44    0.436  3.31   9.70e- 4
##  6 countryusa                                  0.789   0.465  1.70   9.00e- 2
##  7 t1_f2f_freq_diff_family_z:t1_age_z         -0.0932  0.191 -0.487  6.26e- 1
##  8 t1_f2f_freq_diff_family_z:time2             0.947   0.262  3.61   3.26e- 4
##  9 t1_f2f_freq_diff_family_z:time3             0.633   0.291  2.17   3.03e- 2
## 10 t1_age_z:time2                             -0.163   0.237 -0.688  4.92e- 1
## 11 t1_age_z:time3                             -0.315   0.269 -1.17   2.43e- 1
## 12 t1_f2f_freq_diff_family_z:t1_age_z:time2   -0.115   0.238 -0.482  6.30e- 1
## 13 t1_f2f_freq_diff_family_z:t1_age_z:time3   -0.180   0.304 -0.593  5.53e- 1
## 14 t1_phone_freq_diff_family_z                 0.566   0.185  3.07   2.21e- 3
## 15 t1_age_z                                   -1.58    0.193 -8.21   5.90e-16
## 16 time2                                      -0.526   0.241 -2.18   2.95e- 2
## 17 time3                                      -0.617   0.262 -2.36   1.87e- 2
## 18 countryuk                                   1.39    0.433  3.21   1.37e- 3
## 19 countryusa                                  0.693   0.464  1.49   1.36e- 1
## 20 t1_phone_freq_diff_family_z:t1_age_z       -0.146   0.189 -0.770  4.42e- 1
## 21 t1_phone_freq_diff_family_z:time2          -0.168   0.242 -0.696  4.87e- 1
## 22 t1_phone_freq_diff_family_z:time3           0.715   0.281  2.55   1.10e- 2
## 23 t1_age_z:time2                             -0.245   0.237 -1.04   3.01e- 1
## 24 t1_age_z:time3                             -0.315   0.263 -1.20   2.31e- 1
## 25 t1_phone_freq_diff_family_z:t1_age_z:time2  0.0307  0.231  0.133  8.94e- 1
## 26 t1_phone_freq_diff_family_z:t1_age_z:time3 -0.794   0.311 -2.55   1.09e- 2
## 27 t1_elec_freq_diff_family_z                  0.372   0.183  2.04   4.17e- 2
## 28 t1_age_z                                   -1.57    0.193 -8.16   8.53e-16
## 29 time2                                      -0.540   0.243 -2.22   2.65e- 2
## 30 time3                                      -0.642   0.263 -2.44   1.49e- 2
## 31 countryuk                                   1.44    0.432  3.33   8.88e- 4
## 32 countryusa                                  0.710   0.464  1.53   1.26e- 1
## 33 t1_elec_freq_diff_family_z:t1_age_z        -0.280   0.206 -1.36   1.74e- 1
## 34 t1_elec_freq_diff_family_z:time2            0.281   0.244  1.15   2.50e- 1
## 35 t1_elec_freq_diff_family_z:time3           -0.0672  0.323 -0.208  8.35e- 1
## 36 t1_age_z:time2                             -0.210   0.238 -0.881  3.79e- 1
## 37 t1_age_z:time3                             -0.259   0.266 -0.977  3.29e- 1
## 38 t1_elec_freq_diff_family_z:t1_age_z:time2   0.187   0.228  0.820  4.13e- 1
## 39 t1_elec_freq_diff_family_z:t1_age_z:time3  -0.403   0.319 -1.26   2.07e- 1
## 40 t1_f2f_freq_diff_friend_z                   0.297   0.190  1.56   1.19e- 1
## 41 t1_age_z                                   -1.82    0.187 -9.73   1.37e-21
## 42 time2                                      -0.634   0.241 -2.63   8.66e- 3
## 43 time3                                      -1.00    0.266 -3.76   1.82e- 4
## 44 countryuk                                   1.49    0.428  3.47   5.41e- 4
## 45 countryusa                                  0.679   0.469  1.45   1.48e- 1
## 46 t1_f2f_freq_diff_friend_z:t1_age_z         -0.429   0.170 -2.53   1.16e- 2
## 47 t1_f2f_freq_diff_friend_z:time2             0.0518  0.245  0.212  8.32e- 1
## 48 t1_f2f_freq_diff_friend_z:time3             0.133   0.270  0.492  6.23e- 1
## 49 t1_age_z:time2                             -0.0980  0.234 -0.420  6.75e- 1
## 50 t1_age_z:time3                             -0.220   0.256 -0.859  3.91e- 1
## 51 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.00817 0.213 -0.0384 9.69e- 1
## 52 t1_f2f_freq_diff_friend_z:t1_age_z:time3   -0.157   0.229 -0.684  4.94e- 1
## 53 t1_phone_freq_diff_friend_z                 0.450   0.183  2.46   1.39e- 2
## 54 t1_age_z                                   -1.82    0.183 -9.91   2.53e-22
## 55 time2                                      -0.555   0.237 -2.35   1.93e- 2
## 56 time3                                      -0.906   0.258 -3.52   4.67e- 4
## 57 countryuk                                   1.57    0.426  3.68   2.40e- 4
## 58 countryusa                                  0.782   0.468  1.67   9.51e- 2
## 59 t1_phone_freq_diff_friend_z:t1_age_z       -0.335   0.184 -1.82   6.94e- 2
## 60 t1_phone_freq_diff_friend_z:time2          -0.0730  0.241 -0.303  7.62e- 1
## 61 t1_phone_freq_diff_friend_z:time3          -0.257   0.249 -1.03   3.03e- 1
## 62 t1_age_z:time2                             -0.0722  0.230 -0.314  7.53e- 1
## 63 t1_age_z:time3                             -0.287   0.248 -1.16   2.48e- 1
## 64 t1_phone_freq_diff_friend_z:t1_age_z:time2  0.377   0.225  1.67   9.44e- 2
## 65 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.187   0.227  0.823  4.11e- 1
## 66 t1_elec_freq_diff_friend_z                  0.513   0.182  2.81   4.97e- 3
## 67 t1_age_z                                   -1.81    0.182 -9.99   1.27e-22
## 68 time2                                      -0.616   0.234 -2.64   8.54e- 3
## 69 time3                                      -0.912   0.257 -3.54   4.24e- 4
## 70 countryuk                                   1.59    0.425  3.75   1.90e- 4
## 71 countryusa                                  0.761   0.468  1.63   1.04e- 1
## 72 t1_elec_freq_diff_friend_z:t1_age_z        -0.199   0.182 -1.09   2.75e- 1
## 73 t1_elec_freq_diff_friend_z:time2            0.106   0.228  0.466  6.41e- 1
## 74 t1_elec_freq_diff_friend_z:time3            0.00273 0.266  0.0102 9.92e- 1
## 75 t1_age_z:time2                             -0.132   0.224 -0.591  5.55e- 1
## 76 t1_age_z:time3                             -0.281   0.246 -1.14   2.54e- 1
## 77 t1_elec_freq_diff_friend_z:t1_age_z:time2   0.0518  0.250  0.207  8.36e- 1
## 78 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.113   0.290  0.388  6.98e- 1
##    CI_Lower CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1  -0.392    0.334  f2f_freq_diff_family   ""    8.74e- 1 ""      
##  2  -1.96    -1.20   f2f_freq_diff_family   "*"   8.59e-15 "*"     
##  3  -1.00    -0.0507 f2f_freq_diff_family   "*"   6.56e- 2 ""      
##  4  -1.16    -0.132  f2f_freq_diff_family   "*"   4.50e- 2 "*"     
##  5   0.587    2.30   f2f_freq_diff_family   "*"   4.20e- 3 "*"     
##  6  -0.123    1.70   f2f_freq_diff_family   ""    1.67e- 1 ""      
##  7  -0.469    0.282  f2f_freq_diff_family   ""    6.83e- 1 ""      
##  8   0.433    1.46   f2f_freq_diff_family   "*"   2.12e- 3 "*"     
##  9   0.0605   1.21   f2f_freq_diff_family   "*"   6.56e- 2 ""      
## 10  -0.629    0.302  f2f_freq_diff_family   ""    6.83e- 1 ""      
## 11  -0.844    0.214  f2f_freq_diff_family   ""    3.95e- 1 ""      
## 12  -0.582    0.353  f2f_freq_diff_family   ""    6.83e- 1 ""      
## 13  -0.778    0.417  f2f_freq_diff_family   ""    6.83e- 1 ""      
## 14   0.204    0.928  phone_freq_diff_family "*"   9.58e- 3 "*"     
## 15  -1.96    -1.21   phone_freq_diff_family "*"   7.68e-15 "*"     
## 16  -1.00    -0.0525 phone_freq_diff_family "*"   5.48e- 2 ""      
## 17  -1.13    -0.103  phone_freq_diff_family "*"   4.05e- 2 "*"     
## 18   0.540    2.24   phone_freq_diff_family "*"   8.92e- 3 "*"     
## 19  -0.218    1.60   phone_freq_diff_family ""    2.21e- 1 ""      
## 20  -0.517    0.226  phone_freq_diff_family ""    5.22e- 1 ""      
## 21  -0.643    0.307  phone_freq_diff_family ""    5.27e- 1 ""      
## 22   0.164    1.27   phone_freq_diff_family "*"   2.87e- 2 "*"     
## 23  -0.710    0.220  phone_freq_diff_family ""    3.91e- 1 ""      
## 24  -0.831    0.201  phone_freq_diff_family ""    3.33e- 1 ""      
## 25  -0.422    0.484  phone_freq_diff_family ""    8.94e- 1 ""      
## 26  -1.40    -0.183  phone_freq_diff_family "*"   2.87e- 2 "*"     
## 27   0.0141   0.730  elec_freq_diff_family  "*"   1.08e- 1 ""      
## 28  -1.95    -1.20   elec_freq_diff_family  "*"   1.11e-14 "*"     
## 29  -1.02    -0.0634 elec_freq_diff_family  "*"   8.60e- 2 ""      
## 30  -1.16    -0.125  elec_freq_diff_family  "*"   6.48e- 2 ""      
## 31   0.593    2.29   elec_freq_diff_family  "*"   5.77e- 3 "*"     
## 32  -0.200    1.62   elec_freq_diff_family  ""    2.74e- 1 ""      
## 33  -0.685    0.124  elec_freq_diff_family  ""    3.22e- 1 ""      
## 34  -0.198    0.759  elec_freq_diff_family  ""    3.61e- 1 ""      
## 35  -0.702    0.568  elec_freq_diff_family  ""    8.35e- 1 ""      
## 36  -0.678    0.258  elec_freq_diff_family  ""    4.47e- 1 ""      
## 37  -0.781    0.262  elec_freq_diff_family  ""    4.28e- 1 ""      
## 38  -0.261    0.636  elec_freq_diff_family  ""    4.47e- 1 ""      
## 39  -1.03     0.224  elec_freq_diff_family  ""    3.37e- 1 ""      
## 40  -0.0762   0.670  f2f_freq_diff_friend   ""    2.57e- 1 ""      
## 41  -2.19    -1.45   f2f_freq_diff_friend   "*"   1.78e-20 "*"     
## 42  -1.11    -0.161  f2f_freq_diff_friend   "*"   2.81e- 2 "*"     
## 43  -1.52    -0.479  f2f_freq_diff_friend   "*"   1.18e- 3 "*"     
## 44   0.646    2.33   f2f_freq_diff_friend   "*"   2.35e- 3 "*"     
## 45  -0.242    1.60   f2f_freq_diff_friend   ""    2.75e- 1 ""      
## 46  -0.763   -0.0960 f2f_freq_diff_friend   "*"   3.03e- 2 "*"     
## 47  -0.429    0.532  f2f_freq_diff_friend   ""    9.02e- 1 ""      
## 48  -0.397    0.663  f2f_freq_diff_friend   ""    7.98e- 1 ""      
## 49  -0.557    0.361  f2f_freq_diff_friend   ""    7.98e- 1 ""      
## 50  -0.724    0.283  f2f_freq_diff_friend   ""    6.35e- 1 ""      
## 51  -0.426    0.409  f2f_freq_diff_friend   ""    9.69e- 1 ""      
## 52  -0.607    0.293  f2f_freq_diff_friend   ""    7.14e- 1 ""      
## 53   0.0915   0.808  phone_freq_diff_friend "*"   4.52e- 2 "*"     
## 54  -2.18    -1.46   phone_freq_diff_friend "*"   3.28e-21 "*"     
## 55  -1.02    -0.0903 phone_freq_diff_friend "*"   5.02e- 2 ""      
## 56  -1.41    -0.400  phone_freq_diff_friend "*"   2.02e- 3 "*"     
## 57   0.735    2.41   phone_freq_diff_friend "*"   1.56e- 3 "*"     
## 58  -0.136    1.70   phone_freq_diff_friend ""    1.55e- 1 ""      
## 59  -0.697    0.0266 phone_freq_diff_friend ""    1.50e- 1 ""      
## 60  -0.547    0.401  phone_freq_diff_friend ""    7.62e- 1 ""      
## 61  -0.745    0.232  phone_freq_diff_friend ""    3.94e- 1 ""      
## 62  -0.523    0.379  phone_freq_diff_friend ""    7.62e- 1 ""      
## 63  -0.774    0.200  phone_freq_diff_friend ""    3.59e- 1 ""      
## 64  -0.0650   0.819  phone_freq_diff_friend ""    1.55e- 1 ""      
## 65  -0.259    0.632  phone_freq_diff_friend ""    4.86e- 1 ""      
## 66   0.155    0.871  elec_freq_diff_friend  "*"   1.61e- 2 "*"     
## 67  -2.17    -1.46   elec_freq_diff_friend  "*"   1.65e-21 "*"     
## 68  -1.07    -0.157  elec_freq_diff_friend  "*"   2.22e- 2 "*"     
## 69  -1.42    -0.406  elec_freq_diff_friend  "*"   1.84e- 3 "*"     
## 70   0.759    2.43   elec_freq_diff_friend  "*"   1.23e- 3 "*"     
## 71  -0.157    1.68   elec_freq_diff_friend  ""    2.26e- 1 ""      
## 72  -0.557    0.158  elec_freq_diff_friend  ""    4.46e- 1 ""      
## 73  -0.342    0.555  elec_freq_diff_friend  ""    8.25e- 1 ""      
## 74  -0.520    0.526  elec_freq_diff_friend  ""    9.92e- 1 ""      
## 75  -0.573    0.308  elec_freq_diff_friend  ""    8.02e- 1 ""      
## 76  -0.765    0.202  elec_freq_diff_friend  ""    4.46e- 1 ""      
## 77  -0.440    0.544  elec_freq_diff_friend  ""    9.06e- 1 ""      
## 78  -0.457    0.683  elec_freq_diff_friend  ""    8.25e- 1 ""
Loneliness
h7_ucla_senresults <- list()
h7_ucla_senmodels <- list()

for (h7_diff_var in h7_diff_vars) {
  formula <- as.formula(paste0("ucla_loneliness_total ~ t1_", h7_diff_var, "_z * t1_age_z * time + country + (1 | ID)"))
  model <- lmer(formula, data = full_data_long)
  
  tidy_model <- tidy(model, conf.int = TRUE) %>%
    filter(!str_detect(term, "Intercept|sd")) %>%  # removes intercept terms
    rename(
      Variable = term,
      B = estimate,
      SE = std.error,
      t = statistic,
      p = p.value,
      CI_Lower = conf.low,
      CI_Upper = conf.high
    ) %>%
    dplyr::select(Variable, B, SE, t, p, CI_Lower, CI_Upper) %>%
    mutate(predictor = h7_diff_var)
  
  h7_ucla_senresults[[h7_diff_var]] <- tidy_model
  h7_ucla_senmodels[[h7_diff_var]] <- model
  
  h7_ucla_senresults_df <- bind_rows(h7_ucla_senresults) %>%
    mutate(p.sig = ifelse(p < 0.05, "*", ""))
}

h7_ucla_fdr_senresults_df <- h7_ucla_senresults_df %>%
  group_by(predictor) %>%
  mutate(
    FDRp = p.adjust(p, method = "fdr"),
    FDRp.sig = ifelse(FDRp < 0.05, "*", "")
  ) %>%
  ungroup() #%>% 
  #filter(str_detect(Variable, ":"))

print(h7_ucla_fdr_senresults_df)
## # A tibble: 78 × 11
##    Variable                                          B    SE        t        p
##    <chr>                                         <dbl> <dbl>    <dbl>    <dbl>
##  1 t1_f2f_freq_diff_family_z                   0.107   0.477  0.225   8.22e- 1
##  2 t1_age_z                                   -3.13    0.498 -6.29    4.38e-10
##  3 time2                                       0.345   0.654  0.528   5.98e- 1
##  4 time3                                       2.30    0.710  3.24    1.26e- 3
##  5 countryuk                                   2.91    1.12   2.60    9.35e- 3
##  6 countryusa                                  2.79    1.19   2.34    1.95e- 2
##  7 t1_f2f_freq_diff_family_z:t1_age_z         -0.109   0.494 -0.221   8.25e- 1
##  8 t1_f2f_freq_diff_family_z:time2             0.506   0.710  0.712   4.76e- 1
##  9 t1_f2f_freq_diff_family_z:time3             0.111   0.789  0.140   8.88e- 1
## 10 t1_age_z:time2                             -0.295   0.642 -0.459   6.47e- 1
## 11 t1_age_z:time3                             -0.359   0.730 -0.492   6.23e- 1
## 12 t1_f2f_freq_diff_family_z:t1_age_z:time2    0.392   0.645  0.608   5.44e- 1
## 13 t1_f2f_freq_diff_family_z:t1_age_z:time3    0.500   0.824  0.607   5.44e- 1
## 14 t1_phone_freq_diff_family_z                 0.887   0.477  1.86    6.31e- 2
## 15 t1_age_z                                   -3.13    0.498 -6.28    4.64e-10
## 16 time2                                       0.285   0.648  0.439   6.61e- 1
## 17 time3                                       2.25    0.704  3.19    1.47e- 3
## 18 countryuk                                   2.73    1.11   2.45    1.43e- 2
## 19 countryusa                                  2.60    1.19   2.18    2.98e- 2
## 20 t1_phone_freq_diff_family_z:t1_age_z       -0.202   0.489 -0.414   6.79e- 1
## 21 t1_phone_freq_diff_family_z:time2           0.607   0.650  0.933   3.51e- 1
## 22 t1_phone_freq_diff_family_z:time3           2.26    0.754  2.99    2.87e- 3
## 23 t1_age_z:time2                             -0.342   0.637 -0.537   5.92e- 1
## 24 t1_age_z:time3                             -0.510   0.706 -0.722   4.71e- 1
## 25 t1_phone_freq_diff_family_z:t1_age_z:time2 -0.541   0.620 -0.872   3.83e- 1
## 26 t1_phone_freq_diff_family_z:t1_age_z:time3 -1.16    0.836 -1.38    1.67e- 1
## 27 t1_elec_freq_diff_family_z                  0.303   0.471  0.644   5.20e- 1
## 28 t1_age_z                                   -3.13    0.497 -6.29    4.47e-10
## 29 time2                                       0.209   0.648  0.323   7.47e- 1
## 30 time3                                       2.29    0.702  3.26    1.17e- 3
## 31 countryuk                                   2.80    1.11   2.52    1.20e- 2
## 32 countryusa                                  2.59    1.19   2.17    3.02e- 2
## 33 t1_elec_freq_diff_family_z:t1_age_z        -0.434   0.531 -0.817   4.14e- 1
## 34 t1_elec_freq_diff_family_z:time2            1.67    0.650  2.57    1.03e- 2
## 35 t1_elec_freq_diff_family_z:time3            0.958   0.862  1.11    2.67e- 1
## 36 t1_age_z:time2                             -0.288   0.636 -0.454   6.50e- 1
## 37 t1_age_z:time3                             -0.341   0.709 -0.480   6.31e- 1
## 38 t1_elec_freq_diff_family_z:t1_age_z:time2  -0.854   0.610 -1.40    1.62e- 1
## 39 t1_elec_freq_diff_family_z:t1_age_z:time3  -1.08    0.852 -1.27    2.06e- 1
## 40 t1_f2f_freq_diff_friend_z                   0.933   0.490  1.90    5.70e- 2
## 41 t1_age_z                                   -3.44    0.482 -7.14    1.56e-12
## 42 time2                                       0.211   0.615  0.343   7.32e- 1
## 43 time3                                       1.89    0.679  2.78    5.59e- 3
## 44 countryuk                                   2.88    1.11   2.60    9.36e- 3
## 45 countryusa                                  2.46    1.21   2.03    4.22e- 2
## 46 t1_f2f_freq_diff_friend_z:t1_age_z         -1.15    0.438 -2.62    8.97e- 3
## 47 t1_f2f_freq_diff_friend_z:time2             0.196   0.625  0.313   7.54e- 1
## 48 t1_f2f_freq_diff_friend_z:time3             0.270   0.689  0.392   6.95e- 1
## 49 t1_age_z:time2                             -0.836   0.597 -1.40    1.62e- 1
## 50 t1_age_z:time3                             -0.628   0.655 -0.959   3.38e- 1
## 51 t1_f2f_freq_diff_friend_z:t1_age_z:time2   -0.168   0.543 -0.310   7.57e- 1
## 52 t1_f2f_freq_diff_friend_z:t1_age_z:time3    0.00342 0.586  0.00583 9.95e- 1
## 53 t1_phone_freq_diff_friend_z                 1.15    0.471  2.45    1.45e- 2
## 54 t1_age_z                                   -3.42    0.473 -7.23    8.37e-13
## 55 time2                                       0.180   0.606  0.298   7.66e- 1
## 56 time3                                       1.97    0.659  2.99    2.86e- 3
## 57 countryuk                                   3.22    1.10   2.93    3.50e- 3
## 58 countryusa                                  2.77    1.21   2.29    2.25e- 2
## 59 t1_phone_freq_diff_friend_z:t1_age_z        0.0317  0.476  0.0667  9.47e- 1
## 60 t1_phone_freq_diff_friend_z:time2           0.420   0.617  0.680   4.97e- 1
## 61 t1_phone_freq_diff_friend_z:time3          -0.105   0.636 -0.165   8.69e- 1
## 62 t1_age_z:time2                             -0.907   0.588 -1.54    1.23e- 1
## 63 t1_age_z:time3                             -0.747   0.635 -1.18    2.39e- 1
## 64 t1_phone_freq_diff_friend_z:t1_age_z:time2 -0.657   0.576 -1.14    2.54e- 1
## 65 t1_phone_freq_diff_friend_z:t1_age_z:time3  0.0466  0.581  0.0803  9.36e- 1
## 66 t1_elec_freq_diff_friend_z                  1.28    0.471  2.73    6.47e- 3
## 67 t1_age_z                                   -3.48    0.469 -7.43    2.05e-13
## 68 time2                                       0.331   0.595  0.557   5.78e- 1
## 69 time3                                       2.02    0.655  3.08    2.16e- 3
## 70 countryuk                                   3.20    1.10   2.91    3.67e- 3
## 71 countryusa                                  2.71    1.21   2.24    2.51e- 2
## 72 t1_elec_freq_diff_friend_z:t1_age_z        -0.210   0.471 -0.445   6.56e- 1
## 73 t1_elec_freq_diff_friend_z:time2            0.106   0.581  0.182   8.55e- 1
## 74 t1_elec_freq_diff_friend_z:time3            0.338   0.678  0.498   6.19e- 1
## 75 t1_age_z:time2                             -0.936   0.571 -1.64    1.01e- 1
## 76 t1_age_z:time3                             -0.753   0.627 -1.20    2.30e- 1
## 77 t1_elec_freq_diff_friend_z:t1_age_z:time2  -0.789   0.638 -1.24    2.16e- 1
## 78 t1_elec_freq_diff_friend_z:t1_age_z:time3   0.382   0.739  0.517   6.06e- 1
##    CI_Lower CI_Upper predictor              p.sig     FDRp FDRp.sig
##       <dbl>    <dbl> <chr>                  <chr>    <dbl> <chr>   
##  1  -0.829     1.04  f2f_freq_diff_family   ""    8.88e- 1 ""      
##  2  -4.11     -2.16  f2f_freq_diff_family   "*"   5.69e- 9 "*"     
##  3  -0.940     1.63  f2f_freq_diff_family   ""    8.41e- 1 ""      
##  4   0.905     3.69  f2f_freq_diff_family   "*"   8.22e- 3 "*"     
##  5   0.718     5.11  f2f_freq_diff_family   "*"   4.05e- 2 "*"     
##  6   0.450     5.13  f2f_freq_diff_family   "*"   6.34e- 2 ""      
##  7  -1.08      0.859 f2f_freq_diff_family   ""    8.88e- 1 ""      
##  8  -0.888     1.90  f2f_freq_diff_family   ""    8.41e- 1 ""      
##  9  -1.44      1.66  f2f_freq_diff_family   ""    8.88e- 1 ""      
## 10  -1.56      0.967 f2f_freq_diff_family   ""    8.41e- 1 ""      
## 11  -1.79      1.07  f2f_freq_diff_family   ""    8.41e- 1 ""      
## 12  -0.875     1.66  f2f_freq_diff_family   ""    8.41e- 1 ""      
## 13  -1.12      2.12  f2f_freq_diff_family   ""    8.41e- 1 ""      
## 14  -0.0485    1.82  phone_freq_diff_family ""    1.37e- 1 ""      
## 15  -4.11     -2.15  phone_freq_diff_family "*"   6.04e- 9 "*"     
## 16  -0.989     1.56  phone_freq_diff_family ""    6.79e- 1 ""      
## 17   0.867     3.63  phone_freq_diff_family "*"   9.55e- 3 "*"     
## 18   0.547     4.92  phone_freq_diff_family "*"   4.66e- 2 "*"     
## 19   0.254     4.94  phone_freq_diff_family "*"   7.76e- 2 ""      
## 20  -1.16      0.757 phone_freq_diff_family ""    6.79e- 1 ""      
## 21  -0.670     1.88  phone_freq_diff_family ""    5.54e- 1 ""      
## 22   0.776     3.74  phone_freq_diff_family "*"   1.25e- 2 "*"     
## 23  -1.59      0.909 phone_freq_diff_family ""    6.79e- 1 ""      
## 24  -1.90      0.877 phone_freq_diff_family ""    6.12e- 1 ""      
## 25  -1.76      0.677 phone_freq_diff_family ""    5.54e- 1 ""      
## 26  -2.80      0.485 phone_freq_diff_family ""    3.10e- 1 ""      
## 27  -0.621     1.23  elec_freq_diff_family  ""    6.76e- 1 ""      
## 28  -4.10     -2.15  elec_freq_diff_family  "*"   5.81e- 9 "*"     
## 29  -1.06      1.48  elec_freq_diff_family  ""    7.47e- 1 ""      
## 30   0.910     3.67  elec_freq_diff_family  "*"   7.63e- 3 "*"     
## 31   0.617     4.98  elec_freq_diff_family  "*"   3.89e- 2 "*"     
## 32   0.248     4.93  elec_freq_diff_family  "*"   7.86e- 2 ""      
## 33  -1.48      0.608 elec_freq_diff_family  ""    5.98e- 1 ""      
## 34   0.397     2.95  elec_freq_diff_family  "*"   3.89e- 2 "*"     
## 35  -0.735     2.65  elec_freq_diff_family  ""    4.34e- 1 ""      
## 36  -1.54      0.960 elec_freq_diff_family  ""    7.04e- 1 ""      
## 37  -1.73      1.05  elec_freq_diff_family  ""    7.04e- 1 ""      
## 38  -2.05      0.344 elec_freq_diff_family  ""    3.51e- 1 ""      
## 39  -2.75      0.594 elec_freq_diff_family  ""    3.82e- 1 ""      
## 40  -0.0280    1.89  f2f_freq_diff_friend   ""    1.24e- 1 ""      
## 41  -4.39     -2.50  f2f_freq_diff_friend   "*"   2.03e-11 "*"     
## 42  -0.997     1.42  f2f_freq_diff_friend   ""    8.20e- 1 ""      
## 43   0.555     3.22  f2f_freq_diff_friend   "*"   3.04e- 2 "*"     
## 44   0.709     5.05  f2f_freq_diff_friend   "*"   3.04e- 2 "*"     
## 45   0.0872    4.84  f2f_freq_diff_friend   "*"   1.10e- 1 ""      
## 46  -2.01     -0.287 f2f_freq_diff_friend   "*"   3.04e- 2 "*"     
## 47  -1.03      1.42  f2f_freq_diff_friend   ""    8.20e- 1 ""      
## 48  -1.08      1.62  f2f_freq_diff_friend   ""    8.20e- 1 ""      
## 49  -2.01      0.336 f2f_freq_diff_friend   ""    3.01e- 1 ""      
## 50  -1.91      0.658 f2f_freq_diff_friend   ""    5.49e- 1 ""      
## 51  -1.24      0.899 f2f_freq_diff_friend   ""    8.20e- 1 ""      
## 52  -1.15      1.15  f2f_freq_diff_friend   ""    9.95e- 1 ""      
## 53   0.230     2.08  phone_freq_diff_friend "*"   4.70e- 2 "*"     
## 54  -4.35     -2.49  phone_freq_diff_friend "*"   1.09e-11 "*"     
## 55  -1.01      1.37  phone_freq_diff_friend ""    9.47e- 1 ""      
## 56   0.679     3.27  phone_freq_diff_friend "*"   1.52e- 2 "*"     
## 57   1.06      5.39  phone_freq_diff_friend "*"   1.52e- 2 "*"     
## 58   0.392     5.14  phone_freq_diff_friend "*"   5.84e- 2 ""      
## 59  -0.903     0.966 phone_freq_diff_friend ""    9.47e- 1 ""      
## 60  -0.792     1.63  phone_freq_diff_friend ""    7.17e- 1 ""      
## 61  -1.35      1.14  phone_freq_diff_friend ""    9.47e- 1 ""      
## 62  -2.06      0.247 phone_freq_diff_friend ""    2.67e- 1 ""      
## 63  -1.99      0.499 phone_freq_diff_friend ""    4.13e- 1 ""      
## 64  -1.79      0.474 phone_freq_diff_friend ""    4.13e- 1 ""      
## 65  -1.09      1.19  phone_freq_diff_friend ""    9.47e- 1 ""      
## 66   0.361     2.21  elec_freq_diff_friend  "*"   2.10e- 2 "*"     
## 67  -4.40     -2.56  elec_freq_diff_friend  "*"   2.66e-12 "*"     
## 68  -0.836     1.50  elec_freq_diff_friend  ""    7.11e- 1 ""      
## 69   0.731     3.30  elec_freq_diff_friend  "*"   1.40e- 2 "*"     
## 70   1.04      5.36  elec_freq_diff_friend  "*"   1.59e- 2 "*"     
## 71   0.339     5.09  elec_freq_diff_friend  "*"   6.53e- 2 ""      
## 72  -1.13      0.714 elec_freq_diff_friend  ""    7.11e- 1 ""      
## 73  -1.04      1.25  elec_freq_diff_friend  ""    8.55e- 1 ""      
## 74  -0.994     1.67  elec_freq_diff_friend  ""    7.11e- 1 ""      
## 75  -2.06      0.185 elec_freq_diff_friend  ""    2.20e- 1 ""      
## 76  -1.99      0.478 elec_freq_diff_friend  ""    3.74e- 1 ""      
## 77  -2.04      0.463 elec_freq_diff_friend  ""    3.74e- 1 ""      
## 78  -1.07      1.83  elec_freq_diff_friend  ""    7.11e- 1 ""