library(dplyr)       # general wrangling
library(tidyr)       # pivot_wider
library(Hmisc)       # correlation matrix
library(psych)       # fisher's z transformation
library(lme4)        # linear mixed model   
library(lmerTest)    # linear mixed model significance test
library(lavaan)      # RI-CLPM
library(semPlot)     # semPaths
library(kableExtra)  # for styling and scroll_box

# source the helper file
source("00_helpers.R")

This preregistration document is published on Rpubs.

Simulated Data

For the preregistration, we are simulating purely random data with 3 waves of 60 couples X 2 = 120 participants to mimic the shorter design of study one. We will simulate a few variables:

Important: Our dyads are distinguishable because both studies have only heterosexual couples for which one member is male and the other is female. Data for female participants are under columns with the suffix _1 and data for male participants are _2

# set seed
set.seed(202309)

# simulate long dataset
long_dat <- data.frame(
  couple = rep(1:60, each = 2*3),
  partner = rep(c(1,1,1,2,2,2)),
  time   = rep(1:3),
  satis  = rnorm(n = 120*3, mean = 43, sd = 4),
  open   = rnorm(n = 120*3, mean = 3.4, sd = 0.6),
  consci = rnorm(n = 120*3, mean = 3.8, sd = 0.6),
  extra  = rnorm(n = 120*3, mean = 3.3, sd = 0.9),
  agree  = rnorm(n = 120*3, mean = 3.8, sd = 0.6),
  neuro  = rnorm(n = 120*3, mean = 2.5, sd = 0.7),
  care_self    = rnorm(n = 120*3, mean = 5.2, sd = 1),
  care_partner = rnorm(n = 120*3, mean = 5.2, sd = 1)
)

# add random missingness ~ 10%
n_rows <- nrow(long_dat)
n_cols <- which(!names(long_dat) %in% c("couple", "partner", "time"))
row_missing <- matrix(
  sample(1:n_rows, 
         # 10% missingness across all rows and specified columns
         round(10/100 *n_rows*length(n_cols),0)),
  ncol = length(n_cols))
for(col in 1:length(n_cols)) {
  long_dat[row_missing[,col], n_cols[col]] <- NA
}

head(long_dat) %>% 
  knitr::kable(
    caption = "Long data structure: nrow = # participants x # time points"
    ) %>%
  kableExtra::kable_styling()
Long data structure: nrow = # participants x # time points
couple partner time satis open consci extra agree neuro care_self care_partner
1 1 1 40.15540 4.107169 3.542920 3.238459 4.169353 3.259467 6.337092 4.918679
1 1 2 42.27489 NA 4.727791 2.769023 4.238659 1.335166 4.631444 5.680176
1 1 3 44.67430 3.380948 3.720921 1.960166 4.722801 NA 3.108694 5.081888
1 2 1 47.42104 3.039429 4.134580 4.250399 3.715369 2.359845 5.945472 4.196117
1 2 2 40.53377 4.228449 3.729844 2.771892 4.401235 2.981669 4.632316 2.444354
1 2 3 41.12975 2.882006 3.269303 3.233976 NA 1.574657 5.504476 3.648827
# simulate wide dataset with side-by-side partners
dat <- long_dat %>%
  pivot_wider(names_from = partner,
              values_from = satis:care_partner)

head(dat) %>% 
  knitr::kable(
    caption = "Wide-ish data structure: nrow = # couples x # time points"
  ) %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Wide-ish data structure: nrow = # couples x # time points
couple time satis_1 satis_2 open_1 open_2 consci_1 consci_2 extra_1 extra_2 agree_1 agree_2 neuro_1 neuro_2 care_self_1 care_self_2 care_partner_1 care_partner_2
1 1 40.15540 47.42104 4.107169 3.039429 3.542920 4.134580 3.238459 4.250399 4.169353 3.715369 3.259467 2.359845 6.337092 5.945472 4.918679 4.196117
1 2 42.27489 40.53377 NA 4.228449 4.727791 3.729844 2.769023 2.771892 4.238659 4.401235 1.335166 2.981669 4.631444 4.632316 5.680176 2.444354
1 3 44.67430 41.12975 3.380948 2.882006 3.720921 3.269303 1.960166 3.233976 4.722801 NA NA 1.574657 3.108694 5.504476 5.081888 3.648827
2 1 44.93158 37.70957 3.770625 2.809172 NA 3.509657 2.887636 2.146323 4.984539 NA 2.944746 2.270775 4.752304 5.358629 7.537746 5.981766
2 2 45.80569 46.13427 2.708207 3.187857 4.343996 NA 2.903377 3.158886 3.693986 4.248502 1.770387 1.444403 5.891629 4.842329 4.552920 6.479968
2 3 35.79426 46.77148 2.575654 NA 4.220857 4.390367 4.509154 2.604352 3.972045 3.738318 NA 4.680392 7.491243 6.292535 7.104869 4.718923

Research Question 1. Evidence of Assortative Mating

H1. Baseline similarity

At baseline, romantic partners are similar in their personality such that their scale scores are significantly and positively correlated

I will examine the bivariate Pearson’s \(r\) correlations between dyadic member’s self-reported scale scores at Time 1. Because all dyads are distinguishable (heterosexual couples with one female and one male partner), we are not computing the intraclass correlation but instead rely on \(r\). In addition, profile correlations (Humbad et al., 2013) will be computed for the self-reported scale scores of the BFAS in study one and the BFI, CQ, and CPS in study two as an index of multivariate similarity in personality traits, caregiving styles, and conflict strategies. The unit of analysis will be at the dyad level: for each of these scales, a bivariate Pearson’s r correlation is computed between two partners’ score vectors. For each scale, three sets of models will be run with profile correlations calculated by raw, gender-mean-centered, and standardized scores.

var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

prof_list <- data.frame(
  bigfive = c("open", "consci", "extra", "agree", "neuro")
)

h1_results <- h1_function(var_list = var_list, prof_list = prof_list, df = dat)

h1_results$bivariate %>% 
  knitr::kable(caption = "Bivariate between-partner correlation") %>% 
  kableExtra::kable_styling()
Bivariate between-partner correlation
variable n correlation p_value LL UL
open 48 0.019 0.897 -0.266 0.302
consci 47 -0.264 0.072 -0.513 0.025
extra 53 -0.082 0.560 -0.345 0.193
agree 48 0.065 0.659 -0.223 0.343
neuro 48 0.062 0.676 -0.226 0.340
care_self 51 -0.057 0.690 -0.328 0.222
care_partner 51 0.232 0.102 -0.047 0.477
h1_results$profile %>% 
  knitr::kable(caption = "Proportion of signficant between-partner profile correlations") %>% kableExtra::kable_styling()
Proportion of signficant between-partner profile correlations
time profile raw centered standardized
1 bigfive 0.05 0.06667 0.06667
2 bigfive 0.05 0.05 0.03333
3 bigfive 0.08333 0.11667 0.13333
dat <- merge(dat, h1_results$profile_df)
summary(dat %>% select(bigfive_raw_r,
                       bigfive_centered_r,
                       bigfive_std_r)) %>% 
  knitr::kable(caption = "Descriptive summary of profile correlations") %>% 
  kableExtra::kable_styling()
Descriptive summary of profile correlations
bigfive_raw_r bigfive_centered_r bigfive_std_r
Min. :-0.9969 Min. :-0.99988 Min. :-0.99664
1st Qu.:-0.1596 1st Qu.:-0.62761 1st Qu.:-0.61145
Median : 0.3563 Median :-0.10451 Median :-0.14580
Mean : 0.2562 Mean :-0.07756 Mean :-0.08571
3rd Qu.: 0.7414 3rd Qu.: 0.47461 3rd Qu.: 0.40546
Max. : 0.9998 Max. : 0.99935 Max. : 0.99871

H2. Difference in correlations

At baseline, romantic partners are more similar in their characteristic adaptations than in their personality traits.

I will conduct a \(z\)-difference test using Fisher’s \(z\)-transformed bivariate correlations calculated in H1 to test the significance of the difference between each trait correlation and each CA correlation. A significant difference is when the two confidence intervals do not overlap. The hypothesis is fully confirmed if all CA correlations are significantly larger than all trait correlations; it is partially confirmed if all CA correlations are significantly larger or statistically equivalent to all trait correlations; it is rejected if at least one CA correlation is significantly smaller than at least one trait correlation. There is no hypothesized difference in similarity among the CAs.

\[ z_{\text{difference}} = \frac{z_1 - z_2}{\sqrt{\frac{1}{n_1-3} + \frac{1}{n_2-3}}} \]

# run function on simulated data
h2_function(cor_tab = h1_results$bivariate) %>% 
  knitr::kable(caption = "Comparisons of bivariate correlations of personality traits vs CAs") %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Comparisons of bivariate correlations of personality traits vs CAs
V1 V2 V1_cor V2_cor z_stat sig
open consci 0.019 [-0.266 - 0.302] -0.264 [-0.513 - 0.025] 1.365 FALSE
open extra 0.019 [-0.266 - 0.302] -0.082 [-0.345 - 0.193] 0.492 FALSE
open agree 0.019 [-0.266 - 0.302] 0.065 [-0.223 - 0.343] -0.219 FALSE
open neuro 0.019 [-0.266 - 0.302] 0.062 [-0.226 - 0.34] -0.204 FALSE
open care_self 0.019 [-0.266 - 0.302] -0.057 [-0.328 - 0.222] 0.367 FALSE
open care_partner 0.019 [-0.266 - 0.302] 0.232 [-0.047 - 0.477] -1.047 FALSE
consci extra -0.264 [-0.513 - 0.025] -0.082 [-0.345 - 0.193] -0.911 FALSE
consci agree -0.264 [-0.513 - 0.025] 0.065 [-0.223 - 0.343] -1.582 FALSE
consci neuro -0.264 [-0.513 - 0.025] 0.062 [-0.226 - 0.34] -1.568 FALSE
consci care_self -0.264 [-0.513 - 0.025] -0.057 [-0.328 - 0.222] -1.022 FALSE
consci care_partner -0.264 [-0.513 - 0.025] 0.232 [-0.047 - 0.477] -2.428 FALSE
extra agree -0.082 [-0.345 - 0.193] 0.065 [-0.223 - 0.343] -0.717 FALSE
extra neuro -0.082 [-0.345 - 0.193] 0.062 [-0.226 - 0.34] -0.702 FALSE
extra care_self -0.082 [-0.345 - 0.193] -0.057 [-0.328 - 0.222] -0.124 FALSE
extra care_partner -0.082 [-0.345 - 0.193] 0.232 [-0.047 - 0.477] -1.576 FALSE
agree neuro 0.065 [-0.223 - 0.343] 0.062 [-0.226 - 0.34] 0.014 FALSE
agree care_self 0.065 [-0.223 - 0.343] -0.057 [-0.328 - 0.222] 0.589 FALSE
agree care_partner 0.065 [-0.223 - 0.343] 0.232 [-0.047 - 0.477] -0.825 FALSE
neuro care_self 0.062 [-0.226 - 0.34] -0.057 [-0.328 - 0.222] 0.574 FALSE
neuro care_partner 0.062 [-0.226 - 0.34] 0.232 [-0.047 - 0.477] -0.840 FALSE
care_self care_partner -0.057 [-0.328 - 0.222] 0.232 [-0.047 - 0.477] -1.437 FALSE

H3. Longitudinal similarity

Longitudinally, romantic partners show a similar change trajectory in self-reported personality across the first two years of parenthood such that their slopes are significantly and positively correlated.

I will fit a linear mixed model for each measured personality variable with random intercepts and random slopes at the individual level, with a separate model for each gender. I will extract the fitted slope for each individual and examine the bivariate Pearson’s \(r\) correlations between dyadic member’s slopes for each personality variable.

var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

# run function
h3_results <- h3_function(var_list = var_list, df = dat)
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## Warning: Model failed to converge with 1 negative eigenvalue: -9.9e-01
## boundary (singular) fit: see help('isSingular')
## Warning: Model failed to converge with 1 negative eigenvalue: -6.4e-02
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
## boundary (singular) fit: see help('isSingular')
# view longitudinal trends
h3_results$slopes_tab %>% 
  knitr::kable(caption = "Longitudinal trends in personality variables") %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Longitudinal trends in personality variables
gender variable slope SE df t_value p_value
female open 0.013 0.06 135.028 0.209 0.835
male open 0.081 0.059 66.631 1.385 0.171
female consci 0.009 0.065 59.268 0.141 0.888
male consci 0.087 0.065 61.168 1.328 0.189
female extra 0.133 0.088 52.562 1.502 0.139
male extra -0.056 0.081 100.004 -0.697 0.487
female agree 0.029 0.058 63.067 0.504 0.616
male agree 0.028 0.06 55.369 0.47 0.64
female neuro 0.086 0.073 124.765 1.171 0.244
male neuro 0.017 0.067 111.242 0.248 0.805
female care_self -0.007 0.104 60.23 -0.068 0.946
male care_self -0.006 0.09 99.114 -0.072 0.943
female care_partner -0.037 0.094 107.201 -0.391 0.696
male care_partner -0.055 0.09 55.886 -0.608 0.545
# view longitudinal similarity 
h3_results$cor_tab %>% 
  knitr::kable(caption = "Bivariate between-partner slope correlations") %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Bivariate between-partner slope correlations
variable correlation p_value LL UL
open -0.020 0.877 -0.273 0.235
consci -0.128 0.329 -0.370 0.130
extra 0.011 0.932 -0.243 0.264
agree 0.077 0.559 -0.181 0.325
neuro 0.109 0.405 -0.149 0.354
care_self 0.050 0.706 -0.207 0.300
care_partner -0.181 0.166 -0.416 0.076
# store slopes for later analyses in main dataframe
dat <- merge(dat, h3_results$slope_df, all.x = TRUE)

Research Question 2. Benefit of Assortative Mating

H4. Baseline benefit

At baseline, partner similarity in self-reported personality is associated with enhanced relationship quality.

I will fit a multiple regression model in which both dyad members’ scores along with an interaction term are used to predict relationship quality. Four separate sets of models will be fit: two sets with female partners’ dyadic satisfaction and cohesion and two sets with male partners’ dyadic satisfaction and cohesion as the dependent variable. Within each set, separate models are run for each measured personality variable. The hypothesis is confirmed if the interaction term is significantly positive for a partial attenuation, in which the main effects may still remain significantly positive after the interaction term is added.

Alternatively, I will run a simple linear regression model in which the absolute value of the difference between the female and male partner’s scores on a particular variable is used to predict relationship quality. In addition, for the BFAS in study one and the BFI, CQ, and CPS scales in study two, I will run a simple linear regression model in which the Fisher’s \(z\)-transformed score of the profile correlations calculated in H1 is used to predict relationship quality. For each scale, three sets of models will be run with profile correlations calculated by raw, gender-mean-centered, and standardized scores. Compared to the interaction test, these regression models are a much simpler and more powered approach to the same conceptual question; however, they present different operationalization of similarity. We consider these alternative approaches to be conceptual robustness checks; the hypothesis is fully confirmed if both approaches meet the significant criteria, partially confirmed if only one approach meets the criteria, and rejected if neither meets the criteria.

var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

prof_list <- c("bigfive")

quality_list <- c("satis")

# run function
h4_results <- h4_function(var_list = var_list, 
                          quality_list = quality_list, 
                          prof_list = prof_list,
                          df = dat)

h4_results$interaction_tab %>% 
  knitr::kable(
    caption = "Multiple regression results with interaction terms predicting relationship quality"
  ) %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Multiple regression results with interaction terms predicting relationship quality
quality personality gender actor_est actor_tval actor_pval partner_est partner_tval partner_pval int_est int_tval int_pval
satis open female 1.109 0.171 0.865 2.666 0.406 0.687 -0.348 -0.177 0.861
satis open male 7.299 1.435 0.159 5.935 1.156 0.254 -2.258 -1.435 0.159
satis consci female -1.19 -0.156 0.877 -3.264 -0.439 0.663 0.693 0.348 0.73
satis consci male -6.748 -0.911 0.367 -6.348 -0.839 0.407 1.613 0.826 0.414
satis extra female -0.83 -0.32 0.75 -2.028 -0.847 0.402 0.371 0.483 0.632
satis extra male -1.14 -0.533 0.596 0.002 0.001 0.999 0.248 0.36 0.72
satis agree female -2.427 -0.275 0.785 -2.543 -0.291 0.773 0.592 0.255 0.8
satis agree male 4.791 0.637 0.528 4.16 0.549 0.586 -1.515 -0.764 0.449
satis neuro female -3.845 -1.254 0.218 -1.439 -0.451 0.655 0.95 0.805 0.426
satis neuro male 3.393 1.735 0.09 2.13 0.907 0.37 -1.006 -1.217 0.23
satis care_self female 0.999 0.364 0.718 -0.342 -0.115 0.909 -0.123 -0.24 0.812
satis care_self male 3.019 1.153 0.255 3.396 1.383 0.173 -0.378 -0.832 0.41
satis care_partner female -0.959 -0.264 0.793 -0.925 -0.262 0.795 0.2 0.3 0.766
satis care_partner male 2.587 0.875 0.386 2.015 0.626 0.535 -0.527 -0.915 0.365
h4_results$difference_tab %>% 
  knitr::kable(
    caption = "Simple regression results with difference scores predicting relationship quality"
  ) %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Simple regression results with difference scores predicting relationship quality
quality personality gender diff_est diff_tval diff_pval
satis open female -0.329 -0.328 0.745
satis open male -0.332 -0.351 0.727
satis consci female -0.333 -0.295 0.77
satis consci male -0.886 -0.789 0.434
satis extra female -0.463 -0.63 0.532
satis extra male -0.324 -0.471 0.64
satis agree female -0.438 -0.317 0.753
satis agree male -0.906 -0.72 0.475
satis neuro female -0.552 -0.432 0.668
satis neuro male 2.135 2.58 0.013
satis care_self female 0.637 1.172 0.248
satis care_self male 0.172 0.323 0.748
satis care_partner female 0.18 0.185 0.854
satis care_partner male -0.176 -0.228 0.821
h4_results$profile_tab %>% 
  knitr::kable(
    caption = "Simple regression results with profile correlations predicting relationship quality"
  ) %>% 
  kableExtra::kable_styling()
Simple regression results with profile correlations predicting relationship quality
quality profile gender raw_est raw_tval raw_pval cen_est cen_tval cen_pval std_est std_tval std_pval
satis bigfive female 1.018 2.032 0.048 0.553 1.504 0.139 0.911 2.022 0.049
satis bigfive male -0.676 -1.432 0.158 -0.406 -1.168 0.248 -0.247 -0.57 0.571

H5. Baseline benefit with longitudinal predictors

Longitudinally, partner similarity in change trajectories of self-reported personality is associated with enhanced relationship quality at baseline.

I will fit a multiple regression model in which both dyad members’ slopes (extracted in H3) along with an interaction term are used to predict relationship quality. Similar to H4, four sets of models will be fit to predict female and male satisfaction and cohesion, and separate models are run for each measured personality variable. The hypothesis is confirmed if the interaction term is significantly positive for a partial attenuation. Because the fitted slopes were extracted using two different methods in H3, models will be run using these two sets of slopes for robustness checks.

Alternatively, I will run a simple linear regression model in which the absolute value of the difference between the female and male partner’s scores on a particular slope is used to predict relationship quality. The hypothesis is fully confirmed if both approaches meet the significant criteria, partially confirmed if only one approach meets the criteria, and rejected if neither meets the criteria.

var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

quality_list <- c("satis")

# run function
h5_results <- h5_function(var_list = var_list, 
                          quality_list = quality_list, 
                          df = dat) 
h5_results$interaction_tab %>% 
  knitr::kable(
    caption = "Longitudinal predictors: Multiple regression results with interaction terms of predicting relationship quality"
  ) %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Longitudinal predictors: Multiple regression results with interaction terms of predicting relationship quality
quality personality_slope gender actor_est actor_tval actor_pval partner_est partner_tval partner_pval int_est int_tval int_pval
satis open female 216.919 0.992 0.326 22.493 0.636 0.528 -2025.841 -0.784 0.437
satis open male -5.094 -0.162 0.872 50.81 0.255 0.8 496.903 0.225 0.822
satis consci female -2.061 -0.59 0.558 0.739 0.191 0.849 13.879 0.644 0.523
satis consci male 0.361 0.099 0.921 1.344 0.41 0.683 11.118 0.546 0.587
satis extra female -9.734 -0.68 0.5 20.275 0.718 0.476 -29.315 -0.152 0.88
satis extra male 29.073 1.181 0.243 -19.109 -1.526 0.133 -192.306 -1.238 0.221
satis agree female -2.993 -0.601 0.551 14.594 1.311 0.196 16.836 0.199 0.843
satis agree male 10.365 1.012 0.316 5.937 1.265 0.211 -103.293 -1.281 0.206
satis neuro female -65.548 -1.106 0.274 -248.385 -1.459 0.151 3002.275 1.545 0.129
satis neuro male 219.887 1.441 0.155 46.296 0.925 0.359 -2439.224 -1.408 0.165
satis care_self female -3.174 -1.13 0.264 0.747 0.106 0.916 -12.282 -0.243 0.809
satis care_self male -3.526 -0.573 0.569 -6.742 -2.831 0.007 -34.479 -0.866 0.39
satis care_partner female 74.691 1.557 0.126 49.731 1.609 0.114 1478.419 2.014 0.05
satis care_partner male 20.293 0.721 0.474 3.701 0.085 0.933 558.121 0.946 0.348
h5_results$difference_tab %>% 
  knitr::kable(
    caption = "Longitudinal predictors: Simple regression results with difference-slope scores predicting relationship quality"
  ) %>% 
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Longitudinal predictors: Simple regression results with difference-slope scores predicting relationship quality
quality personality_slope gender diff_est diff_tval diff_pval
satis open female -3.416 -0.329 0.744
satis open male 3.848 0.431 0.668
satis consci female -1.714 -0.479 0.634
satis consci male -1.318 -0.406 0.686
satis extra female -9.58 -1.471 0.148
satis extra male -4.821 -0.898 0.373
satis agree female -3.854 -0.54 0.592
satis agree male 9.766 1.484 0.144
satis neuro female -3.528 -0.147 0.884
satis neuro male -7.911 -0.366 0.716
satis care_self female -3.338 -0.783 0.437
satis care_self male 3.789 0.98 0.331
satis care_partner female -26.08 -1.589 0.118
satis care_partner male -30.505 -1.94 0.057

H6. Longitudinal benefit

Longitudinally, partner similarity in change trajectories of self-reported personality is associated with an increase in relationship quality

Analyses are similar to H5 with the same predictors, but linear mixed models will be fit for female/male dyadic satisfaction and cohesion, and their individual extracted slopes will be used as the dependent variable instead of relationship quality at baseline. Similar to H5, the hypothesis is fully confirmed if the interaction term is significantly positive for a partial attenuation and if the alternative simple linear regression model with the absolute value of the difference in personality slope as predictors of longitudinal benefits is significant. The hypothesis is partially confirmed if only one approach meets the criteria and rejected if neither meets the criteria.

var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

quality_list <- c("satis")

# run function
h6_results <- h6_function(var_list = var_list, 
                          quality_list = quality_list, 
                          df = dat) 
h6_results$interaction_tab %>% 
  knitr::kable(
    caption = "Longitudinal predictors: Multiple regression results with interaction terms predicting longitudinal relationship quality"
  ) %>% kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Longitudinal predictors: Multiple regression results with interaction terms predicting longitudinal relationship quality
quality_slope personality_slope gender actor_est actor_tval actor_pval partner_est partner_tval partner_pval int_est int_tval int_pval
satis open female -28.003 -0.797 0.429 -3.379 -0.612 0.543 197.518 0.509 0.613
satis open male 2.611 0.714 0.478 11.807 0.508 0.614 -221.822 -0.863 0.392
satis consci female -0.268 -0.508 0.613 -0.717 -1.134 0.261 2.386 0.692 0.492
satis consci male -0.403 -0.959 0.341 -0.189 -0.541 0.591 0.429 0.187 0.852
satis extra female 0.93 0.428 0.67 -3.508 -0.806 0.423 6.111 0.224 0.823
satis extra male -5.243 -1.842 0.071 2.337 1.643 0.106 30.795 1.728 0.089
satis agree female 1.395 1.7 0.095 0.18 0.103 0.919 -18.499 -1.31 0.195
satis agree male -1.019 -0.874 0.386 -0.612 -1.124 0.266 15.345 1.639 0.107
satis neuro female 4.191 0.502 0.617 33.207 1.288 0.203 -416.919 -1.418 0.162
satis neuro male -10.454 -0.598 0.552 -1.141 -0.202 0.841 104.064 0.522 0.604
satis care_self female -0.429 -0.948 0.347 -0.164 -0.148 0.883 -0.305 -0.041 0.968
satis care_self male 0.882 1.29 0.202 0.733 2.625 0.011 2.587 0.561 0.577
satis care_partner female -2.292 -0.295 0.769 -3.417 -0.68 0.499 -90.344 -0.857 0.395
satis care_partner male -2.393 -0.726 0.471 -0.615 -0.121 0.904 -66.748 -0.966 0.338
h6_results$difference_tab %>% 
  knitr::kable(
    caption = "Longitudinal predictors: Simple regression results with difference scores predicting longitudinal relationship quality"
  ) %>% kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Longitudinal predictors: Simple regression results with difference scores predicting longitudinal relationship quality
quality_slope personality_slope gender diff_est diff_tval diff_pval
satis open female -1.309 -0.834 0.408
satis open male -0.655 -0.628 0.533
satis consci female -0.346 -0.622 0.536
satis consci male -0.265 -0.719 0.475
satis extra female 0.969 1.026 0.309
satis extra male 0.349 0.554 0.582
satis agree female 3.225 2.955 0.005
satis agree male -1.089 -1.427 0.159
satis neuro female -0.188 -0.049 0.961
satis neuro male 1.305 0.515 0.608
satis care_self female 0.477 0.7 0.487
satis care_self male 0 0 1
satis care_partner female 1.852 0.653 0.516
satis care_partner male 2.193 1.176 0.245

H7. Cross-lagged effects

Longitudinally, there may be cross-lagged effects such that partner similarity in personality at each time point is associated with relationship quality at a subsequent time point, and vice versa. This is an exploratory analysis with no hypothesized direction.

I will run a random-intercept cross-lagged panel model, following the general structure as depicted in Figure 1. Four separate sets of models will be run, with the variable for relationship quality being female/male satisfaction and cohesion. Within each set, there will be separate models for similarity in each measured personality variable, with similarity operationalized as the reversed discrepancy scores: the absolute value of the difference between the female and male partner’s scores on a particular personality variable.

In addition to the bivariate discrepancy score, for the BFAS scales in study one and CQ and CPS scales in study two, I will run the same sets of models in which similarity is operationalized as the Fisher’s \(z\)-transformed score of the profile correlations calculated in H1 at each wave.

Figure 1. General structure for the random-intercept cross-lagged panel model
Figure 1. General structure for the random-intercept cross-lagged panel model
var_list <- c("open", "consci", "extra", "agree", "neuro", 
              "care_self", "care_partner")

prof_list <- c("bigfive")

quality_list <- c("satis")

# run function 
h7_results <- h7_function(var_list = var_list, prof_list = prof_list,
                          quality_list = quality_list, df = dat)
## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative

## Warning in lav_object_post_check(object): lavaan WARNING: some estimated lv
## variances are negative
h7_results$fit_df %>%
  knitr::kable(
    caption = "Fit statistics for models of univariate personality difference") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Fit statistics for models of univariate personality difference
partner personality quality chisq df pvalue cfi rmsea srmr
1 open satis 0.674 1 0.412 1 0 0.03
2 open satis 2.533 1 0.112 0 0.16 0.049
1 consci satis 1.019 1 0.313 0.984 0.018 0.031
2 consci satis 0.921 1 0.337 1 0 0.031
1 extra satis 0.083 1 0.773 1 0 0.009
2 extra satis 0.009 1 0.926 1 0 0.003
1 agree satis 0.699 1 0.403 1 0 0.028
2 agree satis 0.749 1 0.387 1 0 0.031
1 neuro satis 0.38 1 0.538 1 0 0.024
2 neuro satis 0.029 1 0.864 1 0 0.005
1 care_self satis 0.007 1 0.934 1 0 0.002
2 care_self satis 0.373 1 0.541 1 0 0.016
1 care_partner satis 0.18 1 0.671 1 0 0.016
2 care_partner satis 0.711 1 0.399 1 0 0.024
h7_results$est_df %>%
  knitr::kable(
    caption = "Standardized solutions for models of univariate personality difference") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Standardized solutions for models of univariate personality difference
partner personality quality lhs op rhs est.std se z pvalue ci.lower ci.upper
1 open satis w_qual_t2 ~ w_qual_t1 0.364 0.171 2.133 0.033 0.030 0.699
1 open satis w_diff_t2 ~ w_diff_t1 -0.075 0.271 -0.278 0.781 -0.607 0.456
1 open satis w_qual_t2 ~ w_diff_t1 -0.024 0.208 -0.114 0.909 -0.431 0.384
1 open satis w_diff_t2 ~ w_qual_t1 -0.343 0.198 -1.730 0.084 -0.732 0.046
1 open satis w_qual_t3 ~ w_qual_t2 -0.053 0.274 -0.195 0.845 -0.590 0.483
1 open satis w_diff_t3 ~ w_diff_t2 0.202 0.289 0.700 0.484 -0.364 0.768
1 open satis w_qual_t3 ~ w_diff_t2 -0.543 0.223 -2.437 0.015 -0.979 -0.106
1 open satis w_diff_t3 ~ w_qual_t2 -0.022 0.229 -0.097 0.923 -0.470 0.426
2 open satis w_qual_t2 ~ w_qual_t1 0.201 0.199 1.012 0.312 -0.189 0.592
2 open satis w_diff_t2 ~ w_diff_t1 0.016 0.317 0.051 0.959 -0.605 0.637
2 open satis w_qual_t2 ~ w_diff_t1 -0.075 0.244 -0.307 0.759 -0.553 0.403
2 open satis w_diff_t2 ~ w_qual_t1 0.024 0.242 0.101 0.920 -0.449 0.498
2 open satis w_qual_t3 ~ w_qual_t2 -0.006 0.232 -0.024 0.981 -0.460 0.449
2 open satis w_diff_t3 ~ w_diff_t2 0.172 0.306 0.562 0.574 -0.428 0.772
2 open satis w_qual_t3 ~ w_diff_t2 0.054 0.246 0.221 0.825 -0.427 0.535
2 open satis w_diff_t3 ~ w_qual_t2 -0.067 0.241 -0.277 0.782 -0.538 0.405
1 consci satis w_qual_t2 ~ w_qual_t1 0.291 0.173 1.683 0.092 -0.048 0.630
1 consci satis w_diff_t2 ~ w_diff_t1 -0.129 0.178 -0.726 0.468 -0.477 0.219
1 consci satis w_qual_t2 ~ w_diff_t1 -0.038 0.175 -0.219 0.827 -0.382 0.305
1 consci satis w_diff_t2 ~ w_qual_t1 0.124 0.187 0.665 0.506 -0.243 0.491
1 consci satis w_qual_t3 ~ w_qual_t2 0.104 0.212 0.493 0.622 -0.310 0.519
1 consci satis w_diff_t3 ~ w_diff_t2 -0.335 0.227 -1.476 0.140 -0.780 0.110
1 consci satis w_qual_t3 ~ w_diff_t2 0.450 0.166 2.714 0.007 0.125 0.774
1 consci satis w_diff_t3 ~ w_qual_t2 0.026 0.238 0.109 0.913 -0.441 0.493
2 consci satis w_qual_t2 ~ w_qual_t1 0.183 0.183 1.000 0.317 -0.176 0.542
2 consci satis w_diff_t2 ~ w_diff_t1 -0.025 0.178 -0.140 0.889 -0.375 0.325
2 consci satis w_qual_t2 ~ w_diff_t1 0.372 0.170 2.186 0.029 0.038 0.705
2 consci satis w_diff_t2 ~ w_qual_t1 0.020 0.170 0.119 0.905 -0.312 0.353
2 consci satis w_qual_t3 ~ w_qual_t2 -0.037 0.221 -0.166 0.868 -0.470 0.397
2 consci satis w_diff_t3 ~ w_diff_t2 -0.335 0.214 -1.565 0.118 -0.755 0.085
2 consci satis w_qual_t3 ~ w_diff_t2 0.140 0.209 0.673 0.501 -0.269 0.549
2 consci satis w_diff_t3 ~ w_qual_t2 0.255 0.205 1.243 0.214 -0.147 0.658
1 extra satis w_qual_t2 ~ w_qual_t1 0.243 0.188 1.295 0.195 -0.125 0.611
1 extra satis w_diff_t2 ~ w_diff_t1 0.026 0.279 0.094 0.925 -0.521 0.574
1 extra satis w_qual_t2 ~ w_diff_t1 -0.041 0.187 -0.220 0.826 -0.409 0.326
1 extra satis w_diff_t2 ~ w_qual_t1 0.172 0.203 0.848 0.397 -0.226 0.570
1 extra satis w_qual_t3 ~ w_qual_t2 0.124 0.207 0.600 0.548 -0.282 0.531
1 extra satis w_diff_t3 ~ w_diff_t2 -0.182 0.266 -0.682 0.496 -0.704 0.341
1 extra satis w_qual_t3 ~ w_diff_t2 -0.054 0.198 -0.272 0.785 -0.442 0.334
1 extra satis w_diff_t3 ~ w_qual_t2 -0.304 0.225 -1.353 0.176 -0.745 0.136
2 extra satis w_qual_t2 ~ w_qual_t1 0.147 0.189 0.779 0.436 -0.223 0.517
2 extra satis w_diff_t2 ~ w_diff_t1 0.029 0.225 0.128 0.898 -0.412 0.470
2 extra satis w_qual_t2 ~ w_diff_t1 0.301 0.167 1.806 0.071 -0.026 0.628
2 extra satis w_diff_t2 ~ w_qual_t1 0.417 0.150 2.772 0.006 0.122 0.711
2 extra satis w_qual_t3 ~ w_qual_t2 0.059 0.223 0.265 0.791 -0.377 0.495
2 extra satis w_diff_t3 ~ w_diff_t2 -0.297 0.259 -1.149 0.250 -0.805 0.210
2 extra satis w_qual_t3 ~ w_diff_t2 -0.035 0.241 -0.146 0.884 -0.507 0.437
2 extra satis w_diff_t3 ~ w_qual_t2 0.384 0.231 1.663 0.096 -0.068 0.837
1 agree satis w_qual_t2 ~ w_qual_t1 0.235 0.168 1.401 0.161 -0.094 0.564
1 agree satis w_diff_t2 ~ w_diff_t1 -0.032 0.223 -0.145 0.885 -0.469 0.405
1 agree satis w_qual_t2 ~ w_diff_t1 -0.064 0.198 -0.321 0.749 -0.452 0.325
1 agree satis w_diff_t2 ~ w_qual_t1 0.005 0.190 0.027 0.979 -0.367 0.377
1 agree satis w_qual_t3 ~ w_qual_t2 0.101 0.186 0.543 0.587 -0.264 0.466
1 agree satis w_diff_t3 ~ w_diff_t2 0.032 0.189 0.168 0.866 -0.339 0.402
1 agree satis w_qual_t3 ~ w_diff_t2 0.062 0.182 0.339 0.735 -0.296 0.419
1 agree satis w_diff_t3 ~ w_qual_t2 0.268 0.160 1.678 0.093 -0.045 0.580
2 agree satis w_qual_t2 ~ w_qual_t1 0.150 0.216 0.694 0.487 -0.273 0.573
2 agree satis w_diff_t2 ~ w_diff_t1 -0.053 0.230 -0.232 0.816 -0.505 0.398
2 agree satis w_qual_t2 ~ w_diff_t1 -0.050 0.183 -0.274 0.784 -0.408 0.308
2 agree satis w_diff_t2 ~ w_qual_t1 -0.285 0.207 -1.377 0.169 -0.690 0.121
2 agree satis w_qual_t3 ~ w_qual_t2 0.001 0.214 0.005 0.996 -0.418 0.420
2 agree satis w_diff_t3 ~ w_diff_t2 0.056 0.191 0.294 0.769 -0.318 0.430
2 agree satis w_qual_t3 ~ w_diff_t2 -0.037 0.184 -0.202 0.840 -0.397 0.323
2 agree satis w_diff_t3 ~ w_qual_t2 -0.156 0.173 -0.906 0.365 -0.494 0.182
1 neuro satis w_qual_t2 ~ w_qual_t1 0.288 0.203 1.415 0.157 -0.111 0.686
1 neuro satis w_diff_t2 ~ w_diff_t1 -0.405 0.295 -1.374 0.170 -0.983 0.173
1 neuro satis w_qual_t2 ~ w_diff_t1 0.003 0.182 0.016 0.987 -0.354 0.360
1 neuro satis w_diff_t2 ~ w_qual_t1 -0.412 0.301 -1.370 0.171 -1.002 0.178
1 neuro satis w_qual_t3 ~ w_qual_t2 0.214 0.204 1.047 0.295 -0.186 0.614
1 neuro satis w_diff_t3 ~ w_diff_t2 0.195 0.194 1.002 0.316 -0.186 0.575
1 neuro satis w_qual_t3 ~ w_diff_t2 0.024 0.184 0.129 0.897 -0.337 0.385
1 neuro satis w_diff_t3 ~ w_qual_t2 0.010 0.238 0.043 0.966 -0.456 0.476
2 neuro satis w_qual_t2 ~ w_qual_t1 0.221 0.186 1.188 0.235 -0.144 0.586
2 neuro satis w_diff_t2 ~ w_diff_t1 -0.139 0.285 -0.487 0.626 -0.698 0.420
2 neuro satis w_qual_t2 ~ w_diff_t1 -0.128 0.199 -0.642 0.521 -0.517 0.262
2 neuro satis w_diff_t2 ~ w_qual_t1 -0.093 0.229 -0.406 0.685 -0.542 0.356
2 neuro satis w_qual_t3 ~ w_qual_t2 0.000 0.204 0.000 1.000 -0.399 0.399
2 neuro satis w_diff_t3 ~ w_diff_t2 0.253 0.202 1.255 0.209 -0.142 0.648
2 neuro satis w_qual_t3 ~ w_diff_t2 -0.006 0.190 -0.031 0.975 -0.379 0.367
2 neuro satis w_diff_t3 ~ w_qual_t2 -0.156 0.158 -0.990 0.322 -0.465 0.153
1 care_self satis w_qual_t2 ~ w_qual_t1 0.234 0.189 1.237 0.216 -0.136 0.603
1 care_self satis w_diff_t2 ~ w_diff_t1 -0.277 0.241 -1.146 0.252 -0.749 0.196
1 care_self satis w_qual_t2 ~ w_diff_t1 0.033 0.165 0.203 0.839 -0.289 0.356
1 care_self satis w_diff_t2 ~ w_qual_t1 -0.068 0.224 -0.306 0.760 -0.508 0.371
1 care_self satis w_qual_t3 ~ w_qual_t2 0.127 0.203 0.627 0.531 -0.270 0.524
1 care_self satis w_diff_t3 ~ w_diff_t2 0.255 0.192 1.330 0.183 -0.121 0.631
1 care_self satis w_qual_t3 ~ w_diff_t2 0.147 0.184 0.800 0.424 -0.213 0.507
1 care_self satis w_diff_t3 ~ w_qual_t2 -0.080 0.186 -0.432 0.666 -0.444 0.283
2 care_self satis w_qual_t2 ~ w_qual_t1 0.221 0.192 1.156 0.248 -0.154 0.597
2 care_self satis w_diff_t2 ~ w_diff_t1 -0.346 0.230 -1.500 0.134 -0.797 0.106
2 care_self satis w_qual_t2 ~ w_diff_t1 -0.206 0.161 -1.279 0.201 -0.521 0.109
2 care_self satis w_diff_t2 ~ w_qual_t1 0.040 0.227 0.178 0.859 -0.405 0.486
2 care_self satis w_qual_t3 ~ w_qual_t2 -0.014 0.213 -0.066 0.948 -0.432 0.404
2 care_self satis w_diff_t3 ~ w_diff_t2 0.264 0.184 1.438 0.150 -0.096 0.624
2 care_self satis w_qual_t3 ~ w_diff_t2 -0.240 0.161 -1.490 0.136 -0.557 0.076
2 care_self satis w_diff_t3 ~ w_qual_t2 0.124 0.160 0.776 0.437 -0.189 0.437
1 care_partner satis w_qual_t2 ~ w_qual_t1 0.308 0.262 1.175 0.240 -0.206 0.823
1 care_partner satis w_diff_t2 ~ w_diff_t1 0.113 0.302 0.376 0.707 -0.478 0.705
1 care_partner satis w_qual_t2 ~ w_diff_t1 0.063 0.292 0.215 0.830 -0.510 0.635
1 care_partner satis w_diff_t2 ~ w_qual_t1 0.367 0.252 1.460 0.144 -0.126 0.860
1 care_partner satis w_qual_t3 ~ w_qual_t2 0.157 0.221 0.709 0.478 -0.276 0.590
1 care_partner satis w_diff_t3 ~ w_diff_t2 -0.231 0.267 -0.864 0.387 -0.756 0.293
1 care_partner satis w_qual_t3 ~ w_diff_t2 0.220 0.188 1.169 0.242 -0.149 0.589
1 care_partner satis w_diff_t3 ~ w_qual_t2 0.570 0.244 2.339 0.019 0.092 1.047
2 care_partner satis w_qual_t2 ~ w_qual_t1 0.175 0.195 0.896 0.370 -0.208 0.557
2 care_partner satis w_diff_t2 ~ w_diff_t1 0.294 0.210 1.400 0.162 -0.118 0.705
2 care_partner satis w_qual_t2 ~ w_diff_t1 0.132 0.196 0.673 0.501 -0.253 0.517
2 care_partner satis w_diff_t2 ~ w_qual_t1 0.047 0.162 0.289 0.772 -0.271 0.364
2 care_partner satis w_qual_t3 ~ w_qual_t2 0.026 0.215 0.123 0.902 -0.395 0.448
2 care_partner satis w_diff_t3 ~ w_diff_t2 -0.048 0.267 -0.181 0.857 -0.572 0.476
2 care_partner satis w_qual_t3 ~ w_diff_t2 -0.069 0.198 -0.346 0.730 -0.457 0.320
2 care_partner satis w_diff_t3 ~ w_qual_t2 0.092 0.235 0.391 0.696 -0.369 0.553
h7_results$fitprof_df %>%
  knitr::kable(
    caption = "Fit statistics for models of personality profile correlation") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Fit statistics for models of personality profile correlation
partner type profile quality chisq df pvalue cfi rmsea srmr
1 raw bigfive satis 2.594 1 0.107 0.848 0.163 0.046
2 raw bigfive satis 0.065 1 0.799 1 0 0.007
1 centered bigfive satis 5.474 1 0.019 0.172 0.273 0.069
2 centered bigfive satis 0.175 1 0.676 1 0 0.01
1 std bigfive satis 5.511 1 0.019 0.583 0.274 0.07
2 std bigfive satis 0.242 1 0.622 1 0 0.012
h7_results$estprof_df %>%
  knitr::kable(
    caption = "Standardized solutions for models of personality profile correlation") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Standardized solutions for models of personality profile correlation
partner type profile quality lhs op rhs est.std se z pvalue ci.lower ci.upper
1 raw bigfive satis w_qual_t2 ~ w_qual_t1 0.172 0.194 0.886 0.375 -0.209 0.554
1 raw bigfive satis w_profz_t2 ~ w_profz_t1 0.264 0.217 1.219 0.223 -0.161 0.690
1 raw bigfive satis w_qual_t2 ~ w_profz_t1 0.039 0.168 0.234 0.815 -0.290 0.369
1 raw bigfive satis w_profz_t2 ~ w_qual_t1 -0.052 0.190 -0.274 0.784 -0.425 0.321
1 raw bigfive satis w_qual_t3 ~ w_qual_t2 0.086 0.198 0.437 0.662 -0.301 0.474
1 raw bigfive satis w_profz_t3 ~ w_profz_t2 0.125 0.219 0.572 0.567 -0.304 0.554
1 raw bigfive satis w_qual_t3 ~ w_profz_t2 -0.089 0.193 -0.461 0.645 -0.466 0.289
1 raw bigfive satis w_profz_t3 ~ w_qual_t2 -0.183 0.160 -1.141 0.254 -0.496 0.131
2 raw bigfive satis w_qual_t2 ~ w_qual_t1 0.200 0.209 0.956 0.339 -0.210 0.609
2 raw bigfive satis w_profz_t2 ~ w_profz_t1 0.219 0.221 0.991 0.322 -0.214 0.653
2 raw bigfive satis w_qual_t2 ~ w_profz_t1 -0.191 0.164 -1.162 0.245 -0.512 0.131
2 raw bigfive satis w_profz_t2 ~ w_qual_t1 -0.179 0.186 -0.964 0.335 -0.544 0.185
2 raw bigfive satis w_qual_t3 ~ w_qual_t2 -0.004 0.217 -0.020 0.984 -0.429 0.421
2 raw bigfive satis w_profz_t3 ~ w_profz_t2 0.104 0.221 0.469 0.639 -0.329 0.536
2 raw bigfive satis w_qual_t3 ~ w_profz_t2 -0.311 0.198 -1.573 0.116 -0.698 0.077
2 raw bigfive satis w_profz_t3 ~ w_qual_t2 -0.207 0.158 -1.313 0.189 -0.517 0.102
1 centered bigfive satis w_qual_t2 ~ w_qual_t1 0.101 0.192 0.527 0.598 -0.275 0.477
1 centered bigfive satis w_profz_t2 ~ w_profz_t1 -0.060 0.190 -0.314 0.754 -0.431 0.312
1 centered bigfive satis w_qual_t2 ~ w_profz_t1 0.065 0.159 0.412 0.681 -0.246 0.376
1 centered bigfive satis w_profz_t2 ~ w_qual_t1 -0.003 0.196 -0.018 0.986 -0.387 0.380
1 centered bigfive satis w_qual_t3 ~ w_qual_t2 0.026 0.196 0.135 0.893 -0.357 0.410
1 centered bigfive satis w_profz_t3 ~ w_profz_t2 0.086 0.196 0.440 0.660 -0.298 0.471
1 centered bigfive satis w_qual_t3 ~ w_profz_t2 -0.207 0.164 -1.264 0.206 -0.528 0.114
1 centered bigfive satis w_profz_t3 ~ w_qual_t2 -0.163 0.176 -0.926 0.355 -0.507 0.182
2 centered bigfive satis w_qual_t2 ~ w_qual_t1 0.195 0.190 1.024 0.306 -0.178 0.567
2 centered bigfive satis w_profz_t2 ~ w_profz_t1 -0.187 0.182 -1.028 0.304 -0.543 0.169
2 centered bigfive satis w_qual_t2 ~ w_profz_t1 0.127 0.140 0.908 0.364 -0.148 0.403
2 centered bigfive satis w_profz_t2 ~ w_qual_t1 -0.011 0.174 -0.061 0.952 -0.351 0.330
2 centered bigfive satis w_qual_t3 ~ w_qual_t2 -0.067 0.239 -0.280 0.780 -0.536 0.402
2 centered bigfive satis w_profz_t3 ~ w_profz_t2 0.009 0.196 0.048 0.962 -0.375 0.393
2 centered bigfive satis w_qual_t3 ~ w_profz_t2 -0.146 0.194 -0.751 0.453 -0.526 0.235
2 centered bigfive satis w_profz_t3 ~ w_qual_t2 -0.019 0.173 -0.110 0.913 -0.357 0.319
1 std bigfive satis w_qual_t2 ~ w_qual_t1 0.113 0.194 0.581 0.561 -0.268 0.494
1 std bigfive satis w_profz_t2 ~ w_profz_t1 -0.085 0.228 -0.374 0.709 -0.532 0.361
1 std bigfive satis w_qual_t2 ~ w_profz_t1 0.042 0.162 0.260 0.795 -0.276 0.360
1 std bigfive satis w_profz_t2 ~ w_qual_t1 0.064 0.210 0.305 0.761 -0.347 0.475
1 std bigfive satis w_qual_t3 ~ w_qual_t2 0.047 0.194 0.241 0.809 -0.333 0.426
1 std bigfive satis w_profz_t3 ~ w_profz_t2 0.170 0.184 0.920 0.358 -0.192 0.531
1 std bigfive satis w_qual_t3 ~ w_profz_t2 -0.158 0.175 -0.901 0.368 -0.501 0.186
1 std bigfive satis w_profz_t3 ~ w_qual_t2 -0.089 0.161 -0.556 0.578 -0.405 0.226
2 std bigfive satis w_qual_t2 ~ w_qual_t1 0.191 0.191 0.996 0.319 -0.184 0.565
2 std bigfive satis w_profz_t2 ~ w_profz_t1 -0.232 0.205 -1.130 0.258 -0.634 0.170
2 std bigfive satis w_qual_t2 ~ w_profz_t1 0.195 0.138 1.412 0.158 -0.076 0.465
2 std bigfive satis w_profz_t2 ~ w_qual_t1 0.146 0.174 0.837 0.402 -0.195 0.487
2 std bigfive satis w_qual_t3 ~ w_qual_t2 -0.022 0.234 -0.096 0.924 -0.481 0.436
2 std bigfive satis w_profz_t3 ~ w_profz_t2 0.079 0.180 0.439 0.661 -0.274 0.433
2 std bigfive satis w_qual_t3 ~ w_profz_t2 -0.036 0.192 -0.188 0.851 -0.412 0.340
2 std bigfive satis w_profz_t3 ~ w_qual_t2 0.073 0.151 0.486 0.627 -0.223 0.370

Research Question 3. Actor/Partner/Perceived/Similarity

H8. Actor/partner effect on quality

At baseline, self-reported characteristic adaptations are most strongly associated with self-reported relationship quality, more so than the effect of partner-reported and similarity on these variables.

I will run an Actor-Partner Interdependence Model (APIM; Campbell & Kashy, 2002; Cook & Kenny, 2005; Kenny & Ledermann, 2010) following the general structures as depicted in Figures 2. Figure 2 depicts a model for actual similarity, including both partners’ self-reported personality scores. The hypothesis is supported if the actor path estimates are larger than the partner and similarity path estimates, using 95% confidence intervals.

Figure 2. General structure for the actor-partner interdependence model at baseline - Actual similarity
Figure 2. General structure for the actor-partner interdependence model at baseline - Actual similarity
var_list <- c("open", "consci", "extra", "agree", "neuro",
              "care_self", "care_partner")

quality_list <- c("satis")

# run function
h8_results <- h8_function(var_list = var_list,
                          quality_list = quality_list,
                          time = 1, df = dat)
h8_results %>%
  knitr::kable(
    caption = "Standardized solutions for APIM models with actual similarity"
  ) %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Standardized solutions for APIM models with actual similarity
lhs op rhs label est.std se z pvalue ci.lower ci.upper
satis_1 ~ open_1 a1 0.073 0.090 0.808 0.419 -0.103 0.249
satis_2 ~ open_2 a2 -0.041 0.083 -0.496 0.620 -0.203 0.121
satis_2 ~ open_1 p12 0.011 0.083 0.136 0.892 -0.151 0.174
satis_1 ~ open_2 p21 -0.087 0.082 -1.073 0.283 -0.247 0.072
satis_1 ~ open_diff d1 -0.085 0.090 -0.952 0.341 -0.261 0.090
satis_2 ~ open_diff d2 0.056 0.090 0.622 0.534 -0.121 0.233
satis_1 ~ consci_1 a1 -0.067 0.087 -0.778 0.437 -0.237 0.102
satis_2 ~ consci_2 a2 -0.056 0.080 -0.705 0.481 -0.213 0.100
satis_2 ~ consci_1 p12 -0.072 0.084 -0.868 0.386 -0.236 0.091
satis_1 ~ consci_2 p21 -0.095 0.082 -1.148 0.251 -0.256 0.067
satis_1 ~ consci_diff d1 -0.075 0.088 -0.859 0.390 -0.247 0.097
satis_2 ~ consci_diff d2 -0.112 0.083 -1.355 0.175 -0.274 0.050
satis_1 ~ extra_1 a1 0.005 0.084 0.055 0.956 -0.160 0.169
satis_2 ~ extra_2 a2 -0.034 0.081 -0.420 0.674 -0.194 0.125
satis_2 ~ extra_1 p12 -0.011 0.083 -0.137 0.891 -0.174 0.151
satis_1 ~ extra_2 p21 -0.104 0.082 -1.278 0.201 -0.264 0.056
satis_1 ~ extra_diff d1 -0.062 0.085 -0.725 0.468 -0.228 0.105
satis_2 ~ extra_diff d2 0.012 0.085 0.138 0.890 -0.155 0.178
satis_1 ~ agree_1 a1 0.017 0.081 0.211 0.833 -0.142 0.177
satis_2 ~ agree_2 a2 -0.035 0.083 -0.418 0.676 -0.197 0.128
satis_2 ~ agree_1 p12 -0.139 0.082 -1.699 0.089 -0.299 0.021
satis_1 ~ agree_2 p21 0.073 0.089 0.817 0.414 -0.102 0.247
satis_1 ~ agree_diff d1 0.147 0.089 1.656 0.098 -0.027 0.321
satis_2 ~ agree_diff d2 -0.016 0.092 -0.173 0.863 -0.196 0.164
satis_1 ~ neuro_1 a1 -0.162 0.084 -1.930 0.054 -0.326 0.003
satis_2 ~ neuro_2 a2 0.067 0.082 0.816 0.415 -0.094 0.227
satis_2 ~ neuro_1 p12 -0.084 0.079 -1.060 0.289 -0.239 0.071
satis_1 ~ neuro_2 p21 0.073 0.087 0.849 0.396 -0.096 0.243
satis_1 ~ neuro_diff d1 -0.088 0.100 -0.878 0.380 -0.285 0.109
satis_2 ~ neuro_diff d2 0.002 0.086 0.018 0.986 -0.167 0.170
satis_1 ~ care_self_1 a1 0.051 0.084 0.611 0.541 -0.113 0.216
satis_2 ~ care_self_2 a2 0.144 0.082 1.742 0.082 -0.018 0.305
satis_2 ~ care_self_1 p12 0.119 0.077 1.551 0.121 -0.031 0.270
satis_1 ~ care_self_2 p21 -0.129 0.085 -1.513 0.130 -0.297 0.038
satis_1 ~ care_self_diff d1 0.053 0.093 0.577 0.564 -0.128 0.235
satis_2 ~ care_self_diff d2 -0.026 0.087 -0.302 0.763 -0.197 0.144
satis_1 ~ care_partner_1 a1 0.031 0.083 0.379 0.705 -0.131 0.194
satis_2 ~ care_partner_2 a2 0.078 0.079 0.988 0.323 -0.077 0.233
satis_2 ~ care_partner_1 p12 -0.099 0.080 -1.244 0.214 -0.256 0.057
satis_1 ~ care_partner_2 p21 -0.016 0.084 -0.187 0.852 -0.181 0.149
satis_1 ~ care_partner_diff d1 -0.024 0.088 -0.274 0.784 -0.196 0.148
satis_2 ~ care_partner_diff d2 0.100 0.082 1.224 0.221 -0.060 0.261

H9. Perceived/actual similarity comparison

At baseline, perceived similarity in personality traits and characteristic adaptations is stronger than actual similarity. That is, the correlation between each partner’s self-perception and perception of their partner is stronger than the correlation between two partners’ self-perceptions.

In order to compare the effect size of actual and perceived similarity, I will conduct a z-difference test using Fisher’s \(z\)-transformed bivariate correlations between (a) self-reports of each partner, (b) female partner’s self-perception and perception of male partner, and (c) male partner’s self-perception and perception of female partner. The difference between these associations is considered significant if the two 95% confidence intervals do not overlap.

perception_list <- c("care")

# run function
h9_results <- h9_function(perception_list = perception_list,
                          time = 1, df = dat)

h9_results$similarity_df %>%
  knitr::kable(
    caption = "Actual and perceived similarities as bivariate correlations") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Actual and perceived similarities as bivariate correlations
similarity personality correlation p-value
actual care -0.057 [-0.328 - 0.222] 0.69
female-perceived care 0.013 [-0.261 - 0.285] 0.928
male-perceived care 0.117 [-0.167 - 0.382] 0.42
h9_results$compare_df %>%
  knitr::kable(
    caption = "Comparison between actual and perceived similarities") %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Comparison between actual and perceived similarities
V1 V2 personality z_stat sig
actual female-perceived care -0.3452100 FALSE
actual male-perceived care -0.8495454 FALSE
female-perceived male-perceived care -0.5104973 FALSE

H10. Perceived/actual similarity effects

At baseline, each partner’s perceived similarity is more strongly associated with self-reported relationship quality than actual similarity is.

In order to compare the effect sizes of the relationship between actual/perceived similarity and relationship quality, we will run the Actor-Partner Interdependence Models following the general structures as depicted in Figure 3. This structure is similar to Figure 2 of H8, but it depicts a model for perceived similarity, including one partner’s perception of their own personality and of their partner’s personality. There are technically two sets of models for perceived similarity, one using the female partner’s perception and one with the male partner’s perception. I compare the estimated paths and their standard errors. The difference between these associations is considered significant if the two 95% confidence intervals do not overlap.

Figure 3. General structure for the actor-partner interdependence model at baseline - Perceived similarity
Figure 3. General structure for the actor-partner interdependence model at baseline - Perceived similarity
perception_list <- c("care")

quality_list <- c("satis")

# run function
h10_results <- h10_function(perception_list = perception_list,
                            quality_list = quality_list,
                            time = 1, df = dat)

h10_results$est_df_p1 %>%
  knitr::kable(
    caption = "Standardized solutions for APIM models with female-perceived similarity"
  ) %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Standardized solutions for APIM models with female-perceived similarity
perception lhs op rhs label est.std se z pvalue ci.lower ci.upper
female satis_1 ~ care_self_1 a1 0.034 0.091 0.370 0.711 -0.144 0.211
female satis_2 ~ care_partner_1 ap1 -0.125 0.081 -1.537 0.124 -0.284 0.034
female satis_2 ~ care_self_1 p12 0.143 0.080 1.792 0.073 -0.013 0.300
female satis_1 ~ care_partner_1 p21 0.021 0.086 0.240 0.811 -0.148 0.190
female satis_1 ~ care_diff_p1 d1 -0.044 0.095 -0.465 0.642 -0.231 0.142
female satis_2 ~ care_diff_p1 d2 0.022 0.081 0.271 0.786 -0.137 0.181
h10_results$est_df_p2 %>%
  knitr::kable(
    caption = "Standardized solutions for APIM models with male-perceived similarity"
  ) %>%
  kableExtra::kable_styling() %>%
  scroll_box(height = "300px")
Standardized solutions for APIM models with male-perceived similarity
perception lhs op rhs label est.std se z pvalue ci.lower ci.upper
male satis_2 ~ care_self_2 a2 0.153 0.084 1.817 0.069 -0.012 0.317
male satis_1 ~ care_partner_2 ap2 -0.016 0.084 -0.185 0.853 -0.180 0.149
male satis_1 ~ care_self_2 p21 -0.036 0.057 -0.640 0.522 -0.148 0.075
male satis_2 ~ care_partner_2 p21 -0.039 0.060 -0.644 0.519 -0.157 0.079
male satis_1 ~ care_diff_p2 d1 -0.036 0.094 -0.384 0.701 -0.221 0.149
male satis_2 ~ care_diff_p2 d2 -0.007 0.085 -0.080 0.936 -0.174 0.161