I. Meta-data

In order to replicate this code file, two files are needed in the directory data/ttp/ found within the project directory: TTP Data Request.xlsx, TTP_Measure Summary.xlsx, and Phase 1 All Items.sav. R code associated with each code chunk can be viewed and hidden by toggling on Code on the top right of each output.

knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE)
options(digits = 3)

libraries <- c("apaTables",    # for cor table
               "here",         # directory access
               "psych",        # for scale alphas
               "tidyr",        # pivot_wider
               "rio",          # import export
               "summarytools", # descriptives
               "ggtext",       # for custom css title
               "ggplot2",      # plots
               "kableExtra",   # scroll box
               "forcats",      # fct_reorder for barplot
               "sjPlot",       # plot_grid
               "dplyr",        # general wrangling
               "lmerTest")     # linear mixed models

lapply(libraries, require, character.only = TRUE)

source("00_helpers.R")
# list of loaded packages and versions
si <- devtools::session_info()[[2]]
rownames(si) <- NULL
si %>% 
  select(package, loadedversion, date, source) %>% 
  
  #red bold the called packages
  mutate(package = 
           cell_spec(package, 
                     color = ifelse(package %in% libraries, "red", "black"),
                     bold = ifelse(package %in% libraries, TRUE, FALSE))) %>% 
  knitr::kable(escape = F, caption = "All loaded packages. 
               Bolded in red are those loaded explicitly 
               with <code>library()</code>") %>% 
  kable_styling() %>% 
  scroll_box(height = "300px")
All loaded packages. Bolded in red are those loaded explicitly with library()
package loadedversion date source
apaTables 2.0.8 2021-01-04 CRAN (R 4.2.3)
backports 1.4.1 2021-12-13 CRAN (R 4.2.0)
base64enc 0.1-3 2015-07-28 CRAN (R 4.2.0)
bayestestR 0.13.1 2023-04-07 CRAN (R 4.2.3)
boot 1.3-28.1 2022-11-22 CRAN (R 4.2.3)
broom 1.0.5 2023-06-09 CRAN (R 4.2.3)
bslib 0.6.1 2023-11-28 CRAN (R 4.2.3)
cachem 1.0.8 2023-05-01 CRAN (R 4.2.3)
checkmate 2.3.1 2023-12-04 CRAN (R 4.2.3)
cli 3.6.2 2023-12-11 CRAN (R 4.2.3)
coda 0.19-4 2020-09-30 CRAN (R 4.2.3)
codetools 0.2-18 2020-11-04 CRAN (R 4.2.2)
colorspace 2.1-0 2023-01-23 CRAN (R 4.2.3)
devtools 2.4.5 2022-10-11 CRAN (R 4.2.1)
digest 0.6.33 2023-07-07 CRAN (R 4.2.3)
dplyr 1.1.4 2023-11-17 CRAN (R 4.2.3)
ellipsis 0.3.2 2021-04-29 CRAN (R 4.2.3)
emmeans 1.8.9 2023-10-17 CRAN (R 4.2.3)
estimability 1.4.1 2022-08-05 CRAN (R 4.2.1)
evaluate 0.23 2023-11-01 CRAN (R 4.2.3)
fansi 1.0.6 2023-12-08 CRAN (R 4.2.3)
fastmap 1.1.1 2023-02-24 CRAN (R 4.2.3)
forcats 1.0.0 2023-01-29 CRAN (R 4.2.3)
fs 1.6.3 2023-07-20 CRAN (R 4.2.3)
generics 0.1.3 2022-07-05 CRAN (R 4.2.3)
ggeffects 1.3.2 2023-10-17 CRAN (R 4.2.3)
ggplot2 3.4.4 2023-10-12 CRAN (R 4.2.3)
ggtext 0.1.2 2022-09-16 CRAN (R 4.2.3)
glue 1.6.2 2022-02-24 CRAN (R 4.2.3)
gridtext 0.1.5 2022-09-16 CRAN (R 4.2.3)
gtable 0.3.4 2023-08-21 CRAN (R 4.2.3)
here 1.0.1 2020-12-13 CRAN (R 4.2.3)
htmltools 0.5.7 2023-11-03 CRAN (R 4.2.3)
htmlwidgets 1.6.4 2023-12-06 CRAN (R 4.2.3)
httpuv 1.6.13 2023-12-06 CRAN (R 4.2.3)
httr 1.4.7 2023-08-15 CRAN (R 4.2.3)
insight 0.19.6 2023-10-12 CRAN (R 4.2.3)
jquerylib 0.1.4 2021-04-26 CRAN (R 4.2.3)
jsonlite 1.8.8 2023-12-04 CRAN (R 4.2.3)
kableExtra 1.3.4 2021-02-20 CRAN (R 4.2.3)
knitr 1.45 2023-10-30 CRAN (R 4.2.3)
later 1.3.2 2023-12-06 CRAN (R 4.2.3)
lattice 0.21-8 2023-04-05 CRAN (R 4.2.2)
lifecycle 1.0.4 2023-11-07 CRAN (R 4.2.3)
lme4 1.1-35.1 2023-11-05 CRAN (R 4.2.3)
lmerTest 3.1-3 2020-10-23 CRAN (R 4.2.3)
lubridate 1.9.3 2023-09-27 CRAN (R 4.2.3)
magick 2.8.1 2023-10-22 CRAN (R 4.2.3)
magrittr 2.0.3 2022-03-30 CRAN (R 4.2.3)
MASS 7.3-60 2023-05-04 CRAN (R 4.2.3)
Matrix 1.6-4 2023-11-30 CRAN (R 4.2.3)
matrixStats 1.1.0 2023-11-07 CRAN (R 4.2.3)
memoise 2.0.1 2021-11-26 CRAN (R 4.2.3)
mime 0.12 2021-09-28 CRAN (R 4.2.0)
miniUI 0.1.1.1 2018-05-18 CRAN (R 4.2.1)
minqa 1.2.6 2023-09-11 CRAN (R 4.2.3)
mnormt 2.1.1 2022-09-26 CRAN (R 4.2.1)
modelr 0.1.11 2023-03-22 CRAN (R 4.2.3)
munsell 0.5.0 2018-06-12 CRAN (R 4.2.1)
mvtnorm 1.2-4 2023-11-27 CRAN (R 4.2.3)
nlme 3.1-162 2023-01-31 CRAN (R 4.2.2)
nloptr 2.0.3 2022-05-26 CRAN (R 4.2.3)
numDeriv 2016.8-1.1 2019-06-06 CRAN (R 4.2.0)
pander 0.6.5 2022-03-18 CRAN (R 4.2.3)
performance 0.10.8 2023-10-30 CRAN (R 4.2.3)
pillar 1.9.0 2023-03-22 CRAN (R 4.2.3)
pkgbuild 1.4.3 2023-12-10 CRAN (R 4.2.3)
pkgconfig 2.0.3 2019-09-22 CRAN (R 4.2.3)
pkgload 1.3.3 2023-09-22 CRAN (R 4.2.3)
plyr 1.8.9 2023-10-02 CRAN (R 4.2.3)
profvis 0.3.8 2023-05-02 CRAN (R 4.2.3)
promises 1.2.1 2023-08-10 CRAN (R 4.2.3)
pryr 0.1.6 2023-01-17 CRAN (R 4.2.3)
psych 2.3.12 2023-12-20 CRAN (R 4.2.2)
purrr 1.0.2 2023-08-10 CRAN (R 4.2.3)
R6 2.5.1 2021-08-19 CRAN (R 4.2.3)
rapportools 1.1 2022-03-22 CRAN (R 4.2.3)
Rcpp 1.0.11 2023-07-06 CRAN (R 4.2.3)
remotes 2.4.2.1 2023-07-18 CRAN (R 4.2.3)
reshape2 1.4.4 2020-04-09 CRAN (R 4.2.3)
rio 1.0.1 2023-09-19 CRAN (R 4.2.3)
rlang 1.1.4 2024-06-04 CRAN (R 4.2.2)
rmarkdown 2.25 2023-09-18 CRAN (R 4.2.3)
rprojroot 2.0.4 2023-11-05 CRAN (R 4.2.3)
rstudioapi 0.15.0 2023-07-07 CRAN (R 4.2.3)
rvest 1.0.3 2022-08-19 CRAN (R 4.2.3)
sass 0.4.8 2023-12-06 CRAN (R 4.2.3)
scales 1.3.0 2023-11-28 CRAN (R 4.2.3)
sessioninfo 1.2.2 2021-12-06 CRAN (R 4.2.3)
shiny 1.8.0 2023-11-17 CRAN (R 4.2.3)
sjlabelled 1.2.0 2022-04-10 CRAN (R 4.2.3)
sjmisc 2.8.9 2021-12-03 CRAN (R 4.2.3)
sjPlot 2.8.15 2023-08-17 CRAN (R 4.2.3)
sjstats 0.18.2 2022-11-19 CRAN (R 4.2.3)
stringi 1.8.3 2023-12-11 CRAN (R 4.2.3)
stringr 1.5.1 2023-11-14 CRAN (R 4.2.3)
summarytools 1.0.1 2022-05-20 CRAN (R 4.2.3)
svglite 2.1.3 2023-12-08 CRAN (R 4.2.3)
systemfonts 1.0.5 2023-10-09 CRAN (R 4.2.3)
tibble 3.2.1 2023-03-20 CRAN (R 4.2.3)
tidyr 1.3.0 2023-01-24 CRAN (R 4.2.3)
tidyselect 1.2.0 2022-10-10 CRAN (R 4.2.1)
timechange 0.2.0 2023-01-11 CRAN (R 4.2.3)
urlchecker 1.0.1 2021-11-30 CRAN (R 4.2.3)
usethis 2.2.2 2023-07-06 CRAN (R 4.2.3)
utf8 1.2.4 2023-10-22 CRAN (R 4.2.3)
vctrs 0.6.5 2023-12-01 CRAN (R 4.2.3)
viridisLite 0.4.2 2023-05-02 CRAN (R 4.2.3)
webshot 0.5.5 2023-06-26 CRAN (R 4.2.3)
withr 2.5.2 2023-10-30 CRAN (R 4.2.3)
xfun 0.41 2023-11-01 CRAN (R 4.2.3)
xml2 1.3.6 2023-12-04 CRAN (R 4.2.3)
xtable 1.8-4 2019-04-21 CRAN (R 4.2.3)
yaml 2.3.8 2023-12-11 CRAN (R 4.2.3)

II. Basic Descriptives

# data and dictionary
data <- rio::import(file = paste0(here(), "/data/ttp/TTP Data Request.xlsx"))
wave_1 <- rio::import(file = paste0(here(), "/data/ttp/Phase 1 All Items.sav")) %>%
  filter(ID %in% data$ID) %>%
  mutate(ID = as.character(ID))
dict <- rio::import(file = paste0(here(), "/data/ttp/TTP_Measure Summary.xlsx"), 
                    sheet = "Scale Specfications") %>% 
  select(c("Measure", "Variable Name", "Scaling")) %>% 
  filter(!is.na(Measure))
codebook <- rio::import(file = paste0(here(), "/data/ttp/Dictionary.xlsx"))

# variable type
data <- data %>%
  # each ID refers to a dyad. 5 first rows are P1 then P2
  mutate(ID = as.character(ID),
         Asex = as.factor(Asex),
         Ababysex = as.factor(Ababysex),
         P1Arace = as.factor(P1Arace),
         P1Aeducate = as.factor(P1Aeducate),
         P1Aincome = as.factor(P1Aincome))

# add time variable
data <- data %>%
  # time in months from first assessment
  # pre-natal is roughly 6 weeks prior
  # add 1 month to each subsequent time
  mutate(time = rep(c(0,7,13,19,25),
                    times = 168*2)) %>%
  relocate(time, .after = ID)

# check var names in dictionary
var_name <- names(data)[-c(1,2)]
var_missing <- c()
for (var in var_name){
  if(!var %in% dict$`Variable Name`){
    var_missing <- append(x = var_missing, var)
  }
}

# save only variables of interest in dict
dict <- dict %>%
  filter(`Variable Name` %in% var_name)

# difference between P1Ammonths and P1Amtotalmo
# P1Ammonths includes additional months beyond P1Amyears
# same for P1Altmon1 and P1Altotalmo
# for relationship length: only use P1Amtotalmo and P1Altotalmo
data %>%
  filter(time == 0) %>%
  select(P1Ammonths, P1Amtotalmo) %>%
  summary()

# add a unique variable per participant = ID + Sex (0)
data <- data %>% 
  mutate(IDg = paste0(ID, "_", as.numeric(Asex == 1)))

# wide-ish data with 1 row representing 1 couple at 1 timepoint
#   needed for analyses
data_wide <- data %>%
  # remove unnecessary variables
  select(-c("IDg", "Ababysex", matches("LA"))) %>%
  # rename variables for more readability
  rename(couple = ID,
         ecr_avoid = ABAvoid,
         ecr_anx   = ABAnx,
         ss_partner = Assp,
         ss_self    = Assind,
         sp_partner = Aspsp,
         sp_self    = Aisps,
         ks_prox_partner = ApProx,
         ks_sens_partner = Appsens,
         ks_coop_partner = ApCoop,
         ks_comp_partner = ApComp,
         ks_prox_self    = AiProx,
         ks_sens_self    = AiSens,
         ks_coop_self    = AiCoop,
         ks_comp_self    = AiComp,
         con_collab_partner = Apkrcll,
         con_capit_partner  = Apkrac,
         con_stale_partner  = Apkrs,
         con_verba_partner  = Apkrva,
         con_collab_self    = Aikrcll,
         con_capit_self     = Aikrac,
         con_stale_self     = Aikrs,
         con_verba_self     = Aikrva,
         das_satis = Asatis,
         das_coh   = Acohes,
         bfi_e = P1AbfiE,
         bfi_a = P1AbfiA,
         bfi_c = P1AbfiC,
         bfi_n = P1AbfiN,
         bfi_o = P1AbfiO) %>%
  # old code: male = 1, female = -1
  # new code: male = 0, female = 1
  mutate(Asex = ifelse(Asex == 1, 2, 1))
data_wide <- data_wide %>%
  pivot_wider(id_cols = c("couple", "time"),
              names_from = "Asex",
              values_from = names(data_wide)[!names(data_wide)%in%
                                          c("couple", "Asex", "time")])

# check that all IDs appear exactly 5 times
#sum(table(data$couple)!=5)

# impute ss variables for female at wave 1 from raw data
#   sort wave_1 ID using data_wide$couple to cbind easily
order_ID <- match(data_wide[data_wide$time==0,]$couple, wave_1$ID)
wave_1 <- wave_1[order_ID, ]
#   grab items specific to ss_self_1
ss_self_1_items <- wave_1 %>%
  select(names(wave_1)[grepl("^P1Fssind[0-9]+$", names(wave_1))])
#   grab items specific to ss_partner_2
ss_partner_1_items <- wave_1 %>%
  select(names(wave_1)[grepl("^P1Fssp[0-9]+$", names(wave_1))])
#   store scale scores in data_wide for time 1
data_wide[data_wide$time == 0,]$ss_self_1 <- rowMeans(ss_self_1_items, na.rm = T)
data_wide[data_wide$time == 0,]$ss_partner_1 <- rowMeans(ss_partner_1_items, na.rm = T)
#   store scale scores in data for time 1
data[data$time == 0 & data$Asex == -1,]$Assind <- rowMeans(ss_self_1_items, na.rm = T)
data[data$time == 0 & data$Asex == -1,]$Assp <- rowMeans(ss_partner_1_items, na.rm = T)

# fix character ID and standardize 1 -> length
data_wide <- data_wide %>%
  mutate(couple = as.numeric(couple)) %>%
  arrange(couple)
data_wide$couple <- rep(1:length(unique(data_wide$couple)), each = 5)

# save data files
# to be used in the analyses
#rio::export(data_wide, 
#            paste0(here(), "/data/cleaned_data_ttp.RDS"))
# print dictionary for easy viewing
dict %>%
  knitr::kable(escape = F, caption = "All variables in analytic dataset") %>% 
  kable_styling() %>% 
  scroll_box(height = "300px")
All variables in analytic dataset
Measure Variable Name Scaling
Experienes in Close Relationships - Global Avoidance ABAvoid 1 to 7
Experienes in Close Relationships - Global Anxiety ABAnx 1 to 7
Sarason’s Social Support - Perceived Partner Assp 1 to 7
Sarason’s Social Support - Self-Reported Given to Partner Assind 1 to 7
Cutrona’s Social Provisions - Perceived from Partner Aspsp -1 to +1
Cutrona’s Social Provisions - Self-Reported Given to Partner Aisps -1 to +1
Kunce & Shaver - Perceived Partner Proximity v. Distance ApProx 1 to 7
Kunce & Shaver - Perceived Partner Sensitivity v. Insensitivity Appsens 1 to 7
Kunce & Shaver - Perceived Partner Cooperation v. Control ApCoop 1 to 7
Kunce & Shaver - Perceived Partner Compulsive Caregiving ApComp 1 to 7
Kunce & Shaver - Self-Reported Proximity v. Distance AiProx 1 to 7
Kunce & Shaver - Self-Reported Sensitivity v. Insensitivity AiSens 1 to 7
Kunce & Shaver - Self-Reported Cooperation v. Control AiCoop 1 to 7
Kunce & Shaver - Self-Reported Compulsive Caregiving AiComp 1 to 7
Kerig Conflict Strategies - Perceived Partner Collaboration Apkrcll 1 to 7
Kerig Conflict Strategies - Perceived Partner Avoidance - Capitulation Apkrac 1 to 7
Kerig Conflict Strategies - Perceived Partner Stalemate Apkrs 1 to 7
Kerig Conflict Strategies - Perceived Partner Verbal Aggression Apkrva 1 to 7
Kerig Conflict Strategies - Self-Reported Collaboration Aikrcll 1 to 7
Kerig Conflict Strategies - Self-Reported Avoidance - Capitulation Aikrac 1 to 7
Kerig Conflict Strategies - Self-Reported Stalemate Aikrs 1 to 7
Kerig Conflict Strategies - Self-Reported Verbal Aggression Aikrva 1 to 7
Dyadic Satisfaction (DAS) Asatis 1 to 50
Dyadic Cohesion (DAS) Acohes 1 to 25
Marriage Length in Years P1Amyears in years
Marriage Length in Months P1Ammonths in months
Marriage Length in Months Total P1Amtotalmo total months
Relationship Length in Years P1Altyears in years
Relationship Length in Months P1Altmon1 in months
Relationship Length in Months Total P1Altotalmo total months
Age P1Aage in years
Race reported P1Arace categorical
Level of Education P1Aeducate categorical
Current Household Yearly Income P1Aincome categorical
Big Five Inventory (BFI) - Extraversion P1AbfiE 1 to 5
Big Five Inventory (BFI) - Agreeableness P1AbfiA 1 to 5
Big Five Inventory (BFI) - Conscientiousness P1AbfiC 1 to 5
Big Five Inventory (BFI) - Neuroticism P1AbfiN 1 to 5
Big Five Inventory (BFI) - Openness P1AbfiO 1 to 5
Lab - Mood Measure A - Positive LAmoodAP 0 to 120
Lab - Mood Measure A - Negative LAmoodAN 0 to 100
Lab - Mood Measure B - Positive LAmoodBP 0 to 120
Lab - Mood Measure B - Negative LAmoodBN 0 to 100
Lab - Mood Measure C - Positive LAmoodCP 0 to 120
Lab - Mood Measure C - Negative LAmoodCN 0 to 100
Lab - Postive Social Exchange - Partner acted towards me LAppse 1 to 7
Lab - Negative Social Exchange - Partner acted towards me LApnse 1 to 7
Lab - Kerig Collaboration LApkrcll 1 to 7
Lab - Kerig Avoidance-Capitulation LApkrac 1 to 7
Lab - Kerig Stalemate LApkrs 1 to 7
Lab - Kerig Verbal Aggression LApkrva 1 to 7

There are a total of 168 couples at time 1, 153 couples at time 2, 144 couples at time 3, 142 couples at time 4, and 129 couples at time 5, using the ECR Avoidance variable to assess missingness.

Baseline demographics

for(trait in c("Agreeableness", "Conscientiousness", "Extraversion",
               "Neuroticism", "Openness",
               "Attachment Anxiety", "Attachment Avoidance",
               "Social Support - Self", "Social Support - Partner",
               "Social Provision - Self", "Social Provision - Partner",
               "Sensitivity Caregiving - Self", "Sensitivity Caregiving - Partner",
               "Proximity Caregiving - Self", "Proximity Caregiving - Partner",
               "Cooperation Caregiving - Self", "Cooperation Caregiving - Partner",
               "Compulsive Caregiving - Self", "Compulsive Caregiving - Partner",
               "Collaboration - Self", "Collaboration - Partner", 
               "Stalemate - Self", "Stalemate - Partner",
               "Avoidance-Capitulation - Self", "Avoidance-Capitulation - Partner",
               "Verbal Aggression - Self", "Verbal Aggression - Partner",
               "Dyadic Satisfaction", "Dyadic Cohesion")) {
  # extract male and female items in codebook
  items_male <- codebook %>% 
    filter(scale == trait & partner == "male") %>%
    pull(variable)
  items_female <- codebook %>% 
    filter(scale == trait & partner == "female") %>%
    pull(variable)
  
  # extract dataframes and combine
  df_male <- wave_1 %>%
    select(all_of(items_male))
  names(df_male) <- paste0("item_", 1:ncol(df_male))
  df_female <- wave_1 %>%
    select(all_of(items_female))
  names(df_female) <- paste0("item_", 1:ncol(df_female))
  df_trait <- rbind(df_male, df_female)
  
  # reverse items
  reverse_items <- codebook %>% 
    filter(scale == trait & partner == "male")
  reverse_items <- which(reverse_items$key == -1)
  df_trait[, reverse_items] <- codebook[codebook$scale == trait, "max"][1] + 1 - 
                               df_trait[, reverse_items]

  # output alphas
  cat(paste(trait, "Cronbach's alpha =", 
            round(psych::alpha(df_trait)$total["raw_alpha"], 2), "\n"))
}
## Agreeableness Cronbach's alpha = 0.68 
## Conscientiousness Cronbach's alpha = 0.73 
## Extraversion Cronbach's alpha = 0.86 
## Neuroticism Cronbach's alpha = 0.85 
## Openness Cronbach's alpha = 0.7 
## Attachment Anxiety Cronbach's alpha = 0.9 
## Attachment Avoidance Cronbach's alpha = 0.91 
## Social Support - Self Cronbach's alpha = 0.88 
## Social Support - Partner Cronbach's alpha = 0.9 
## Social Provision - Self Cronbach's alpha = 0.69 
## Some items ( item_11 ) were negatively correlated with the first principal component and 
## probably should be reversed.  
## To do this, run the function again with the 'check.keys=TRUE' optionSocial Provision - Partner Cronbach's alpha = 0.59 
## Sensitivity Caregiving - Self Cronbach's alpha = 0.85 
## Sensitivity Caregiving - Partner Cronbach's alpha = 0.86 
## Proximity Caregiving - Self Cronbach's alpha = 0.9 
## Proximity Caregiving - Partner Cronbach's alpha = 0.92 
## Cooperation Caregiving - Self Cronbach's alpha = 0.88 
## Cooperation Caregiving - Partner Cronbach's alpha = 0.9 
## Compulsive Caregiving - Self Cronbach's alpha = 0.83 
## Compulsive Caregiving - Partner Cronbach's alpha = 0.76 
## Collaboration - Self Cronbach's alpha = 0.9 
## Collaboration - Partner Cronbach's alpha = 0.89 
## Stalemate - Self Cronbach's alpha = 0.72 
## Stalemate - Partner Cronbach's alpha = 0.72 
## Avoidance-Capitulation - Self Cronbach's alpha = 0.82 
## Avoidance-Capitulation - Partner Cronbach's alpha = 0.72 
## Verbal Aggression - Self Cronbach's alpha = 0.86 
## Verbal Aggression - Partner Cronbach's alpha = 0.89 
## Dyadic Satisfaction Cronbach's alpha = 0.81 
## Dyadic Cohesion Cronbach's alpha = 0.72
data %>% 
  filter(time == 0) %>%
  select("P1Aage", "P1Amtotalmo", "P1Altotalmo") %>%
  descr(stats = "common", order = "p")

Descriptive Statistics

P1Aage P1Amtotalmo P1Altotalmo
Mean 27.67 39.52 42.21
Std.Dev 4.26 31.48 32.95
Min 19.00 0.00 7.00
Median 27.00 32.50 32.50
Max 45.00 208.00 120.00
N.Valid 335.00 330.00 28.00
Pct.Valid 99.70 98.21 8.33
# age
p <- plot_hist(var = "P1Aage", var_name = "age in years", data = data, bin_width = 1, 
          var_sex = "Asex", female_male = c("-1", "1"))


if(signif(var = "P1Aage",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# relationship length 
plot_hist(var = "P1Amtotalmo", var_name = "marriage length in months", data = data,
          bin_width = 1, 
          var_sex = "Asex", female_male = c("-1", "1"))

# sex
ggplot(data[which(data$time == 0),], 
       aes(factor(Asex,
                  levels = c(-1, 1),
                  labels = c("-1", "1")))) + 
  geom_bar(fill = c("#f1c232", "#710c0c")) + 
  geom_text(stat='count', aes(label=..count..), vjust = -1) + 
  labs(
    title = "Count of Sex of the Partners",
    subtitle = "All couples are heterosexual",
    x = NULL
  ) +
  ylim(0, 200) +
  theme_classic()

# baby sex
ggplot(data[which(data$time == 0),], 
       aes(factor(Ababysex,
                  levels = c(-1, 1),
                  labels = c("-1", "1")))) + 
  geom_bar(fill = c("#f1c232", "#710c0c")) + 
  geom_text(stat='count', aes(label=..count..), vjust = -1) + 
  labs(
    title = "Count of Sex of the Baby",
    x = NULL
  ) +
  ylim(0, 200) +
  theme_classic()

# count of race
ggplot(data[which(data$time == 0 & !is.na(data$P1Arace)),], 
       aes(factor(P1Arace,
                  levels = 1:4,
                  labels = c("white", "2","3","4")))) + 
  geom_bar(fill = c("#710c0c")) + 
  geom_text(stat='count', aes(label=..count..), vjust = -1) + 
  labs(
    title = "Count of race",
    x = NULL
  ) +
  ylim(0, 300) +
  theme_classic()

# count of level of education
ggplot(data[which(data$time == 0 & !is.na(data$P1Aeducate)),], 
       aes(factor(P1Aeducate,
                  levels = c(-1, 2:7),
                  labels = as.character(c(1:7))))) + 
  geom_bar(fill = c("#710c0c")) + 
  geom_text(stat='count', aes(label=..count..), vjust = -1) + 
  labs(
    title = "Count of education levels",
    x = NULL
  ) +
  ylim(0, 175) +
  theme_classic()

# count of income
ggplot(data[which(data$time == 0 & !is.na(data$P1Aincome)),], 
       aes(factor(P1Aincome,
                  levels = 1:7,
                  labels = as.character(c(1:7))))) + 
  geom_bar(fill = c("#710c0c")) + 
  geom_text(stat='count', aes(label=..count..), vjust = -1) + 
  labs(
    title = "Count of income levels",
    x = NULL
  ) +
  ylim(0, 120) +
  theme_classic()

Baseline personality

data_wide %>%
  filter(time == 0) %>%
  select(bfi_e_1:bfi_o_2) %>%
  descr(stats = "common") %>%
  knitr::kable(
    caption = "Baseline Big Five descriptives for all participants"
  ) %>%
  kable_styling() %>%
  scroll_box(height = "300px")
Baseline Big Five descriptives for all participants
bfi_a_1 bfi_a_2 bfi_c_1 bfi_c_2 bfi_e_1 bfi_e_2 bfi_n_1 bfi_n_2 bfi_o_1 bfi_o_2
Mean 3.780 3.809 3.84 3.598 3.278 3.392 2.810 2.190 3.395 3.649
Std.Dev 0.594 0.554 0.60 0.585 0.892 0.764 0.805 0.652 0.686 0.621
Min 1.714 2.143 2.14 1.714 1.286 1.714 1.143 1.000 1.714 2.143
Median 3.857 3.857 3.79 3.571 3.286 3.429 2.857 2.143 3.310 3.571
Max 4.857 4.857 5.00 5.000 5.000 5.000 4.857 4.429 5.000 5.000
N.Valid 168.000 168.000 168.00 168.000 168.000 168.000 168.000 168.000 168.000 168.000
Pct.Valid 100.000 100.000 100.00 100.000 100.000 100.000 100.000 100.000 100.000 100.000
# agreeableness
p <- plot_hist(var = "P1AbfiA", var_name = "BFI Agreeableness", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,5)

if(signif(var = "P1AbfiA",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# conscientiousness
p <- plot_hist(var = "P1AbfiC", var_name = "BFI Conscientiousness", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,5)

if(signif(var = "P1AbfiC",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# extraversion
p <- plot_hist(var = "P1AbfiE", var_name = "BFI Extraversion", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,5)

if(signif(var = "P1AbfiE",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# neuroticism
p <- plot_hist(var = "P1AbfiN", var_name = "BFI Neuroticism", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,5)

if(signif(var = "P1AbfiN",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# openness
p <- plot_hist(var = "P1AbfiO", var_name = "BFI Openness", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,5)

if(signif(var = "P1AbfiO",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Baseline relationship

data_wide %>%
  filter(time == 0) %>%
  select(ecr_avoid_1:con_verba_self_2, das_satis_1:das_coh_2) %>%
  descr(stats = "common") %>%
  knitr::kable(
    caption = "Baseline relationship CAs descriptives for all participants"
  ) %>%
  kable_styling() %>%
  scroll_box(height = "300px")
Baseline relationship CAs descriptives for all participants
con_capit_partner_1 con_capit_partner_2 con_capit_self_1 con_capit_self_2 con_collab_partner_1 con_collab_partner_2 con_collab_self_1 con_collab_self_2 con_stale_partner_1 con_stale_partner_2 con_stale_self_1 con_stale_self_2 con_verba_partner_1 con_verba_partner_2 con_verba_self_1 con_verba_self_2 das_coh_1 das_coh_2 das_satis_1 das_satis_2 ecr_anx_1 ecr_anx_2 ecr_avoid_1 ecr_avoid_2 ks_comp_partner_1 ks_comp_partner_2 ks_comp_self_1 ks_comp_self_2 ks_coop_partner_1 ks_coop_partner_2 ks_coop_self_1 ks_coop_self_2 ks_prox_partner_1 ks_prox_partner_2 ks_prox_self_1 ks_prox_self_2 ks_sens_partner_1 ks_sens_partner_2 ks_sens_self_1 ks_sens_self_2 sp_partner_1 sp_partner_2 sp_self_1 sp_self_2 ss_partner_1 ss_partner_2 ss_self_1 ss_self_2
Mean 2.023 2.082 1.854 2.28 4.77 4.47 5.13 4.76 1.285 1.626 1.611 1.44 1.805 2.019 2.030 2.035 18.67 18.21 43.20 42.62 3.29 2.710 2.316 2.432 5.449 5.019 4.51 4.789 5.63 5.474 5.21 4.96 6.21 6.269 6.545 6.071 5.23 5.39 5.32 5.11 0.809 0.816 0.825 0.819 6.212 6.027 6.340 6.23
Std.Dev 0.855 0.761 0.879 1.01 1.16 1.23 1.12 1.31 0.557 0.691 0.783 0.63 0.882 0.989 0.979 0.842 2.58 3.16 4.29 4.75 1.04 0.885 0.906 0.878 0.785 0.897 1.19 0.925 1.06 0.974 1.09 1.03 1.01 0.702 0.648 0.833 1.23 1.02 1.03 1.03 0.209 0.177 0.172 0.169 0.764 0.814 0.625 0.64
Min 1.000 1.000 1.000 1.00 1.25 1.00 1.25 1.00 1.000 1.000 1.000 1.00 1.000 1.000 1.000 1.000 9.00 5.00 20.00 18.00 1.00 1.056 1.000 1.000 3.125 3.000 1.25 2.125 2.38 2.625 2.25 2.00 2.25 4.000 3.750 2.500 1.12 2.50 2.00 2.50 -0.357 0.143 0.214 0.143 2.286 2.857 4.143 3.86
Median 1.857 1.857 1.714 2.00 5.00 4.54 5.38 4.88 1.000 1.400 1.400 1.20 1.500 1.750 1.750 1.875 19.00 19.00 44.00 43.00 3.22 2.694 2.083 2.278 5.500 5.000 4.62 4.812 5.88 5.500 5.38 5.00 6.62 6.500 6.875 6.250 5.38 5.50 5.38 5.25 0.857 0.857 0.857 0.857 6.429 6.143 6.429 6.29
Max 4.714 4.000 5.714 5.43 6.75 6.62 7.00 7.00 5.600 4.000 5.600 4.40 4.750 5.375 5.375 4.875 24.00 24.00 50.00 50.00 5.67 5.056 5.333 5.611 7.000 7.000 7.00 7.000 7.00 7.000 7.00 7.00 7.00 7.000 7.000 7.000 7.00 7.00 7.00 7.00 1.000 1.000 1.000 1.000 7.000 7.000 7.000 7.00
N.Valid 168.000 168.000 168.000 168.00 168.00 168.00 168.00 168.00 168.000 168.000 168.000 168.00 168.000 168.000 168.000 168.000 168.00 168.00 168.00 168.00 168.00 168.000 168.000 168.000 168.000 168.000 168.00 168.000 168.00 168.000 168.00 168.00 168.00 168.000 168.000 167.000 168.00 168.00 168.00 167.00 168.000 166.000 168.000 168.000 168.000 167.000 168.000 168.00
Pct.Valid 100.000 100.000 100.000 100.00 100.00 100.00 100.00 100.00 100.000 100.000 100.000 100.00 100.000 100.000 100.000 100.000 100.00 100.00 100.00 100.00 100.00 100.000 100.000 100.000 100.000 100.000 100.00 100.000 100.00 100.000 100.00 100.00 100.00 100.000 100.000 99.405 100.00 100.00 100.00 99.41 100.000 98.810 100.000 100.000 100.000 99.405 100.000 100.00

Experiences in Close Relationships

# global avoidance
p <- plot_hist(var = "ABAvoid", var_name = "ECR Global Avoidance", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "ABAvoid",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# global anxiety
p <- plot_hist(var = "ABAnx", var_name = "ECR Global Anxiety", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "ABAnx",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Sarason’s Social Support

# perceived from partner
p <- plot_hist(var = "Assp", var_name = "Social Support - Perceived from Partner", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Assp",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported given to partner
p <- plot_hist(var = "Assind", var_name = "Social Support - Social Support - Self to Partner", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Assind",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Cutrona’s Procial Provisions

# perceived from partner
p <- plot_hist(var = "Aspsp", var_name = "Social Provisions - Perceived from Partner", 
               data = data, bin_width = 0.1,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(-1,1)

if(signif(var = "Aspsp",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported given to partner
p <- plot_hist(var = "Aisps", var_name = "Social Provisions - Self to Partner", 
               data = data, bin_width = 0.1,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(-1,1)

if(signif(var = "Aisps",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Kunce and Shaver

# self-reported Proximity v. Distance
p <- plot_hist(var = "AiProx", var_name = "Self-Reported Proximity v. Distance", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,60)

if(signif(var = "AiProx",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Proximity v. Distance
p <- plot_hist(var = "ApProx", var_name = "Perceived-Partner's Proximity v. Distance", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,60)

if(signif(var = "ApProx",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Sensitivity v. Insensitivity
p <- plot_hist(var = "AiSens", var_name = "Self-Reported Sensitivity v. Insensitivity", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "AiSens",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Sensitivity v. Insensitivity
p <- plot_hist(var = "Appsens", var_name = "Perceived-Partner's Sensitivity v. Insensitivity", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Appsens",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Cooperation v. Control
p <- plot_hist(var = "AiCoop", var_name = "Self-Reported Cooperation v. Control", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "AiCoop",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Cooperation v. Control
p <- plot_hist(var = "ApCoop", var_name = "Perceived-Partner's Cooperation v. Control", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "ApCoop",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Compulsive Caregiving
p <- plot_hist(var = "AiComp", var_name = "Self-Reported Compulsive Caregiving", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "AiComp",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Compulsive Caregiving
p <- plot_hist(var = "ApComp", var_name = "Perceived-Partner's Compulsive Caregiving", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "ApComp",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Kerig Conflict Strategies

# self-reported Collaboration
p <- plot_hist(var = "Aikrcll", var_name = "Self-Reported Collaboration", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,50)

if(signif(var = "Aikrcll",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Collaboration
p <- plot_hist(var = "Apkrcll", var_name = "Perceived-Partner's Collaboration", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,50)

if(signif(var = "Apkrcll",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Avoidance - Capitulation
p <- plot_hist(var = "Aikrac", var_name = "Self-Reported Avoidance - Capitulation", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Aikrac",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Avoidance - Capitulation
p <- plot_hist(var = "Apkrac", var_name = "Perceived-Partner's Avoidance - Capitulation", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Apkrac",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Stalemate
p <- plot_hist(var = "Aikrs", var_name = "Self-Reported Stalemate", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,50)

if(signif(var = "Aikrs",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Stalemate
p <- plot_hist(var = "Apkrs", var_name = "Perceived-Partner's Stalemate", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)+
  ylim(0,50)

if(signif(var = "Apkrs",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# self-reported Verbal Aggression
p <- plot_hist(var = "Aikrva", var_name = "Self-Reported Verbal Aggression", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Aikrva",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# perceived-partner Verbal Aggression
p <- plot_hist(var = "Apkrva", var_name = "Perceived-Partner's Verbal Aggression", 
               data = data, bin_width = 0.2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,7)

if(signif(var = "Apkrva",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

Dyadic Satisfaction and Cohesion

# dyadic satisfaction
p <- plot_hist(var = "Asatis", var_name = "Dyadic Satisfaction", 
               data = data, bin_width = 2,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,50)

if(signif(var = "Asatis",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

# dyadic cohesion
p <- plot_hist(var = "Acohes", var_name = "Dyadic Cohesion", 
               data = data, bin_width = 1,
               var_sex = "Asex", female_male = c("-1", "1")) +
  xlim(1,25)

if(signif(var = "Acohes",
          var_sex = "Asex",
          data = data,
          female_male = c("-1", "1"))) {
  p <- p + labs(subtitle = "Significant sex difference (p < 0.05)")
}
p

III. Longitudinal Descriptives

For ease of presentation, all longitudinal plots are shown with a random sample of 100 participants.

set.seed(202211)
sample <- sample(unique(data$IDg), size = 100)
sample <- data %>% filter(IDg %in% c(sample))

Experiences in Close Relationships

# global avoidance
p <- ggplot(data = sample,
             aes(x = time, y = ABAvoid, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$ABAvoid, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Global Avoidance") +
  theme_classic()

if(signifc("ABAvoid", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

#global anxiety
p <- ggplot(data = sample,
             aes(x = time, y = ABAnx, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$ABAnx, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Global Anxiety") +
  theme_classic()

if(signifc("ABAnx", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Sarason’s Social Support

# perceived from partner
p <- ggplot(data = sample,
             aes(x = time, y = Assp, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Assp, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived social support from partner") +
  theme_classic()

if(signifc("Assp", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported given to partner
p <- ggplot(data = sample,
             aes(x = time, y = Assind, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Assind, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported social support given to partner") +
  theme_classic()

if(signifc("Assind", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Cutrona’s Procial Provisions

# perceived from partner
p <- ggplot(data = sample,
             aes(x = time, y = Aspsp, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aspsp, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived social provisions from partner") +
  theme_classic()

if(signifc("Aspsp", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported given to partner
p <- ggplot(data = sample,
             aes(x = time, y = Aisps, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aisps, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported social provisions given to partner") +
  theme_classic()

if(signifc("Aisps", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Kunce and Shaver

# self-reported Proximity v. Distance
p <- ggplot(data = sample,
             aes(x = time, y = AiProx, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$AiProx, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Proximity v. Distance") +
  theme_classic()

if(signifc("AiProx", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Proximity v. Distance
p <- ggplot(data = sample,
             aes(x = time, y = ApProx, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$ApProx, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Proximity v. Distance") +
  theme_classic()

if(signifc("ApProx", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Sensitivity v. Insensitivity
p <- ggplot(data = sample,
             aes(x = time, y = AiSens, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$AiSens, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Sensitivity v. Insensitivity") +
  theme_classic()

if(signifc("AiSens", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Sensitivity v. Insensitivity
p <- ggplot(data = sample,
             aes(x = time, y = Appsens, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Appsens, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Sensitivity v. Insensitivity") +
  theme_classic()

if(signifc("Appsens", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Cooperation v. Control
p <- ggplot(data = sample,
             aes(x = time, y = AiCoop, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$AiCoop, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Cooperation v. Control") +
  theme_classic()

if(signifc("AiCoop", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Cooperation v. Control
p <- ggplot(data = sample,
             aes(x = time, y = ApCoop, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$ApCoop, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Cooperation v. Control") +
  theme_classic()

if(signifc("ApCoop", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Compulsive Caregiving
p <- ggplot(data = sample,
             aes(x = time, y = AiComp, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$AiComp, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Compulsive Caregiving") +
  theme_classic()

if(signifc("AiComp", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Compulsive Caregiving
p <- ggplot(data = sample,
             aes(x = time, y = ApComp, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$ApComp, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Compulsive Caregiving") +
  theme_classic()

if(signifc("ApComp", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Kerig Conflict Strategies

# self-reported Collaboration
p <- ggplot(data = sample,
             aes(x = time, y = Aikrcll, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aikrcll, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Collaboration") +
  theme_classic()

if(signifc("Aikrcll", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Collaboration
p <- ggplot(data = sample,
             aes(x = time, y = Apkrcll, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Apkrcll, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Collaboration") +
  theme_classic()

if(signifc("Apkrcll", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Avoidance - Capitulation
p <- ggplot(data = sample,
             aes(x = time, y = Aikrac, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aikrac, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Avoidance - Capitulation") +
  theme_classic()

if(signifc("Aikrac", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Avoidance - Capitulation
p <- ggplot(data = sample,
             aes(x = time, y = Apkrac, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Apkrac, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Perceived-partner Avoidance - Capitulation") +
  theme_classic()

if(signifc("Apkrac", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Stalemate
p <- ggplot(data = sample,
             aes(x = time, y = Aikrs, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aikrs, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Stalemate") +
  theme_classic()

if(signifc("Aikrs", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Stalemate
p <- ggplot(data = sample,
             aes(x = time, y = Apkrs, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Apkrs, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Stalemate") +
  theme_classic()

if(signifc("Apkrs", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# self-reported Verbal Aggression
p <- ggplot(data = sample,
             aes(x = time, y = Aikrva, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Aikrva, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Verbal Aggression") +
  theme_classic()

if(signifc("Aikrva", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# perceived-partner Verbal Aggression
p <- ggplot(data = sample,
             aes(x = time, y = Apkrva, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Apkrva, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Self-reported Verbal Aggression") +
  theme_classic()

if(signifc("Apkrva", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Dyadic Satisfaction and Cohesion

# dyadic satisfaction
p <- ggplot(data = sample,
             aes(x = time, y = Asatis, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Asatis, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Dyadic Satisfaction") +
  theme_classic()

if(signifc("Asatis", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

# dyadic cohesion
p <- ggplot(data = sample,
             aes(x = time, y = Acohes, group = IDg)) + 
  geom_line(linetype = "dashed") +
  stat_smooth(aes(data = sample$Acohes, group = 1),
              method = "lm",
              formula = y ~ poly(x, 2),
              lwd = 1.5, color = "red") +
  labs(x = "Time in months",
       y = "Dyadic Cohesion") +
  theme_classic()

if(signifc("Acohes", data = data)) {
  p <- p +
    labs(subtitle = "Significant linear slope (p < .05)")
}
p

Test-retest reliabilities

# create list of all variables
base_vars <- c(
  # CA
  "ecr_avoid", "ecr_anx", 
  "ss_self", "sp_self",
  "ks_prox_self", "ks_sens_self",
  "ks_coop_self", "ks_comp_self",
  "con_collab_self", "con_capit_self",
  "con_stale_self",  "con_verba_self",
  
  # quality
  "das_satis", "das_coh"
)

var_list <- rep(
  paste0(rep(base_vars, each = 2), c("_1", "_2")), 
  each = 1
)

# calculate ICC for all longitudinal variables
ICC_df <- data.frame(matrix(ncol=9,nrow=0))
names(ICC_df) <- c("variable", "type", "ICC", "F", "df1", "df2", 
                   "p", "lower bound", "upper bound")
for(var in var_list){
  # find ICC
  result <- icc_function(ID = "couple", var = var, time_var = "time",
                         df = data_wide) %>% as.data.frame()
  result <- cbind(variable = var, result)

  # append to df
  ICC_df <- rbind(ICC_df, result)
}
rownames(ICC_df) <- NULL

# print
ICC_df %>%
  knitr::kable(caption = "Test-retest reliabilities") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Test-retest reliabilities
variable type ICC F df1 df2 p lower bound upper bound
ecr_avoid_1 ICC1k 0.918 12.18 167 672 0 0.896 0.936
ecr_avoid_2 ICC1k 0.905 10.57 167 672 0 0.881 0.926
ecr_anx_1 ICC1k 0.932 14.61 167 672 0 0.914 0.947
ecr_anx_2 ICC1k 0.898 9.82 167 672 0 0.872 0.921
ss_self_1 ICC1k 0.896 9.62 167 672 0 0.869 0.919
ss_self_2 ICC1k 0.813 5.35 167 672 0 0.764 0.854
sp_self_1 ICC1k 0.850 6.68 167 672 0 0.811 0.883
sp_self_2 ICC1k 0.829 5.84 167 672 0 0.784 0.866
ks_prox_self_1 ICC1k 0.893 9.31 167 672 0 0.865 0.916
ks_prox_self_2 ICC1k 0.875 7.98 167 672 0 0.842 0.902
ks_sens_self_1 ICC1k 0.898 9.80 167 672 0 0.871 0.920
ks_sens_self_2 ICC1k 0.872 7.79 167 672 0 0.838 0.900
ks_coop_self_1 ICC1k 0.925 13.31 167 672 0 0.905 0.941
ks_coop_self_2 ICC1k 0.907 10.75 167 672 0 0.883 0.927
ks_comp_self_1 ICC1k 0.886 8.80 167 672 0 0.857 0.911
ks_comp_self_2 ICC1k 0.876 8.08 167 672 0 0.844 0.904
con_collab_self_1 ICC1k 0.830 5.87 167 672 0 0.785 0.867
con_collab_self_2 ICC1k 0.880 8.36 167 672 0 0.849 0.907
con_capit_self_1 ICC1k 0.881 8.38 167 672 0 0.850 0.907
con_capit_self_2 ICC1k 0.864 7.36 167 672 0 0.829 0.894
con_stale_self_1 ICC1k 0.877 8.16 167 672 0 0.845 0.904
con_stale_self_2 ICC1k 0.845 6.46 167 672 0 0.805 0.879
con_verba_self_1 ICC1k 0.883 8.56 167 672 0 0.853 0.909
con_verba_self_2 ICC1k 0.891 9.14 167 672 0 0.862 0.915
das_satis_1 ICC1k 0.869 7.66 167 672 0 0.835 0.898
das_satis_2 ICC1k 0.862 7.26 167 672 0 0.826 0.893
das_coh_1 ICC1k 0.857 6.99 167 672 0 0.820 0.888
das_coh_2 ICC1k 0.859 7.07 167 672 0 0.822 0.890