library(lavaan)
riggsd<- read.csv("riggsd.csv", header=TRUE)
Estimate the Common Fate Model with Couple Attachment Anxiety causing Couple Satisfaction, treating dyad members as indistinguishable. Note that the CFM with indistinguishable dyad members is identical to the I-SAT model. Thus, it is a just-identified model.
cfm.model <- "
Satisfaction =~ Sat_M + 1*Sat_W
Anxiety =~ Anxiety_M + 1*Anxiety_W
Satisfaction ~ 0*1
Anxiety ~ 0*1
Anxiety_M ~ mm*1
Anxiety_W ~ mm*1
Sat_M ~ ii*1
Sat_W ~ ii*1
Anxiety_M ~~ v1*Anxiety_M
Anxiety_W ~~ v1*Anxiety_W
Sat_M ~~ v2*Sat_M
Sat_W ~~ v2*Sat_W
Anxiety_M ~~ ce*Sat_M
Anxiety_W ~~ ce*Sat_W
Satisfaction ~ start(-0.8)*Anxiety"
cfmi <- sem(cfm.model,fixed.x=FALSE, data = riggsd,missing="fiml")
summary(cfmi, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after 71 iterations
##
## Number of observations 155
##
## Number of missing patterns 1
##
## Estimator ML
## Minimum Function Test Statistic 6.450
## Degrees of freedom 6
## P-value (Chi-square) 0.375
##
## Model test baseline model:
##
## Minimum Function Test Statistic 135.383
## Degrees of freedom 6
## P-value 0.000
##
## User model versus baseline model:
##
## Comparative Fit Index (CFI) 0.997
## Tucker-Lewis Index (TLI) 0.997
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -1495.829
## Loglikelihood unrestricted model (H1) -1492.604
##
## Number of free parameters 8
## Akaike (AIC) 3007.657
## Bayesian (BIC) 3032.005
## Sample-size adjusted Bayesian (BIC) 3006.683
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.022
## 90 Percent Confidence Interval 0.000 0.108
## P-value RMSEA <= 0.05 0.601
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.052
##
## Parameter Estimates:
##
## Information Observed
## Standard Errors Standard
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction =~
## Sat_M 1.000
## Sat_W 1.000
## Anxiety =~
## Anxiety_M 1.000
## Anxiety_W 1.000
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction ~
## Anxiety -8.933 3.591 -2.488 0.013
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## .Sat_M ~~
## .Anxiety_M (ce) -0.648 0.381 -1.699 0.089
## .Sat_W ~~
## .Anxiety_W (ce) -0.648 0.381 -1.699 0.089
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .Satisfctn 0.000
## Anxiety 0.000
## .Anxiety_M (mm) 2.780 0.077 36.315 0.000
## .Anxiety_W (mm) 2.780 0.077 36.315 0.000
## .Sat_M (ii) 44.816 0.536 83.662 0.000
## .Sat_W (ii) 44.816 0.536 83.662 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Anxiety_M (v1) 1.265 0.144 8.803 0.000
## .Anxiety_W (v1) 1.265 0.144 8.803 0.000
## .Sat_M (v2) 17.487 1.986 8.803 0.000
## .Sat_W (v2) 17.487 1.986 8.803 0.000
## .Satisfctn 13.754 9.753 1.410 0.158
## Anxiety 0.275 0.126 2.191 0.028
parameterEstimates(cfmi, standardized = TRUE)
## lhs op rhs label est se z pvalue ci.lower
## 1 Satisfaction =~ Sat_M 1.000 0.000 NA NA 1.000
## 2 Satisfaction =~ Sat_W 1.000 0.000 NA NA 1.000
## 3 Anxiety =~ Anxiety_M 1.000 0.000 NA NA 1.000
## 4 Anxiety =~ Anxiety_W 1.000 0.000 NA NA 1.000
## 5 Satisfaction ~1 0.000 0.000 NA NA 0.000
## 6 Anxiety ~1 0.000 0.000 NA NA 0.000
## 7 Anxiety_M ~1 mm 2.780 0.077 36.315 0.000 2.630
## 8 Anxiety_W ~1 mm 2.780 0.077 36.315 0.000 2.630
## 9 Sat_M ~1 ii 44.816 0.536 83.662 0.000 43.766
## 10 Sat_W ~1 ii 44.816 0.536 83.662 0.000 43.766
## 11 Anxiety_M ~~ Anxiety_M v1 1.265 0.144 8.803 0.000 0.984
## 12 Anxiety_W ~~ Anxiety_W v1 1.265 0.144 8.803 0.000 0.984
## 13 Sat_M ~~ Sat_M v2 17.487 1.986 8.803 0.000 13.594
## 14 Sat_W ~~ Sat_W v2 17.487 1.986 8.803 0.000 13.594
## 15 Sat_M ~~ Anxiety_M ce -0.648 0.381 -1.699 0.089 -1.396
## 16 Sat_W ~~ Anxiety_W ce -0.648 0.381 -1.699 0.089 -1.396
## 17 Satisfaction ~ Anxiety -8.933 3.591 -2.488 0.013 -15.971
## 18 Satisfaction ~~ Satisfaction 13.754 9.753 1.410 0.158 -5.362
## 19 Anxiety ~~ Anxiety 0.275 0.126 2.191 0.028 0.029
## ci.upper std.lv std.all std.nox
## 1 1.000 5.978 0.819 0.819
## 2 1.000 5.978 0.819 0.819
## 3 1.000 0.525 0.423 0.423
## 4 1.000 0.525 0.423 0.423
## 5 0.000 0.000 0.000 0.000
## 6 0.000 0.000 0.000 0.000
## 7 2.930 2.780 2.239 2.239
## 8 2.930 2.780 2.239 2.239
## 9 45.866 44.816 6.143 6.143
## 10 45.866 44.816 6.143 6.143
## 11 1.547 1.265 0.821 0.821
## 12 1.547 1.265 0.821 0.821
## 13 21.380 17.487 0.329 0.329
## 14 21.380 17.487 0.329 0.329
## 15 0.100 -0.648 -0.138 -0.138
## 16 0.100 -0.648 -0.138 -0.138
## 17 -1.895 -0.784 -0.784 -0.784
## 18 32.871 0.385 0.385 0.385
## 19 0.522 1.000 1.000 1.000
(diagram taken from the app Common_Fate)
The following text is taken from the Common_Fate app (https://davidakenny.shinyapps.io/Common_Fate/)
The focus of this study is the investigation of the effect of couple-level Anxiety on Satisfaction where both variables are measured on both persons. The dyad members are treated as if they were indistinguishable. The test of distinguishability is not statistically significant (chi-square(6) = 6.45, p = .375). Thus, the data are consistent with the hypothesis that members are indistinguishable. The total number of dyads is 155, and there are no missing data. It needs to be established that there are a sufficiently large correlations to permit a latent variable analysis. For Anxiety, the intraclass correlation between the two members is .182 (p = .011). This correlation is too small for a latent variable analysis. For Satisfaction, the intraclass correlation between the two members is .673 (p < .001). The standardized loadings of the indicators on the Anxiety construct are both equal to .423 and on the Anxiety construct are .819.
The effect of latent Anxiety on Satisfaction is -8.933 (p = .013) with a standardized path of -.784. Given the large absolute size of the path, there are concerns about discriminant validity; i.e., the constructs Anxiety and Satisfaction are the same construct. The correlation of errors across the two members is -.138 (p = .089). We can test whether the correlated errors equal zero by estimating a model without correlated errors and note the decline in the fit of the model. The chi-square difference test is not statistically significant (chi-square(1) = 2.97, p = .085). We conclude that correlated errors are not needed in the model. The failure to find statistically significant disturbance variance for Satisfaction suggests a failure of discriminant validity.
Key differences: a) Can allow the loading of the second member to be free, but must set equal for both X and Y (one more parameter). b) Allow the mean for X and the intercepts for to vary by member (two more parameters). c) Allow the the error variances for X and Y to vary by member (two more parameters).
The CFM with indistinguishable dyads has 1 degree of freedom if the loadings are not set equal and zero if both loadings are fixed to one.
cfm.model_d <- "
Satisfaction =~ Sat_M + a*Sat_W
Anxiety =~ Anxiety_M + a*Anxiety_W
Satisfaction ~ 0*1
Anxiety ~ 0*1
Anxiety_M ~ m1*1
Anxiety_W ~ m2*1
Sat_M ~ i1*1
Sat_W ~ i2*1
Anxiety_M ~~ v1*Anxiety_M
Anxiety_W ~~ v3*Anxiety_W
Sat_M ~~ v2*Sat_M
Sat_W ~~ v4*Sat_W
Anxiety_M ~~ ce*Sat_M
Anxiety_W ~~ ce*Sat_W
Satisfaction ~ start(-0.8)*Anxiety"
cfmd <- sem(cfm.model_d,fixed.x=FALSE, data = riggsd,missing="fiml")
summary(cfmd, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after 79 iterations
##
## Number of observations 155
##
## Number of missing patterns 1
##
## Estimator ML
## Minimum Function Test Statistic 0.180
## Degrees of freedom 1
## P-value (Chi-square) 0.672
##
## Model test baseline model:
##
## Minimum Function Test Statistic 135.383
## Degrees of freedom 6
## P-value 0.000
##
## User model versus baseline model:
##
## Comparative Fit Index (CFI) 1.000
## Tucker-Lewis Index (TLI) 1.038
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -1492.693
## Loglikelihood unrestricted model (H1) -1492.604
##
## Number of free parameters 13
## Akaike (AIC) 3011.387
## Bayesian (BIC) 3050.951
## Sample-size adjusted Bayesian (BIC) 3009.803
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.000
## 90 Percent Confidence Interval 0.000 0.160
## P-value RMSEA <= 0.05 0.726
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.010
##
## Parameter Estimates:
##
## Information Observed
## Standard Errors Standard
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction =~
## Sat_M 1.000
## Sat_W (a) 1.075 0.179 6.017 0.000
## Anxiety =~
## Anxiety_M 1.000
## Anxiety_W (a) 1.075 0.179 6.017 0.000
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction ~
## Anxiety -8.316 3.091 -2.691 0.007
##
## Covariances:
## Estimate Std.Err z-value P(>|z|)
## .Sat_M ~~
## .Anxiety_M (ce) -0.639 0.375 -1.703 0.089
## .Sat_W ~~
## .Anxiety_W (ce) -0.639 0.375 -1.703 0.089
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .Satisfctn 0.000
## Anxiety 0.000
## .Anxiety_M (m1) 2.632 0.101 26.124 0.000
## .Anxiety_W (m2) 2.927 0.097 30.135 0.000
## .Sat_M (i1) 44.858 0.575 78.029 0.000
## .Sat_W (i2) 44.774 0.597 75.009 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Anxiety_M (v1) 1.300 0.179 7.283 0.000
## .Anxiety_W (v3) 1.146 0.174 6.595 0.000
## .Sat_M (v2) 17.972 5.342 3.364 0.001
## .Sat_W (v4) 16.786 6.097 2.753 0.006
## .Satisfctn 14.314 8.356 1.713 0.087
## Anxiety 0.274 0.126 2.172 0.030
parameterEstimates(cfmd, standardized = TRUE)
## lhs op rhs label est se z pvalue ci.lower
## 1 Satisfaction =~ Sat_M 1.000 0.000 NA NA 1.000
## 2 Satisfaction =~ Sat_W a 1.075 0.179 6.017 0.000 0.725
## 3 Anxiety =~ Anxiety_M 1.000 0.000 NA NA 1.000
## 4 Anxiety =~ Anxiety_W a 1.075 0.179 6.017 0.000 0.725
## 5 Satisfaction ~1 0.000 0.000 NA NA 0.000
## 6 Anxiety ~1 0.000 0.000 NA NA 0.000
## 7 Anxiety_M ~1 m1 2.632 0.101 26.124 0.000 2.435
## 8 Anxiety_W ~1 m2 2.927 0.097 30.135 0.000 2.737
## 9 Sat_M ~1 i1 44.858 0.575 78.029 0.000 43.731
## 10 Sat_W ~1 i2 44.774 0.597 75.009 0.000 43.604
## 11 Anxiety_M ~~ Anxiety_M v1 1.300 0.179 7.283 0.000 0.950
## 12 Anxiety_W ~~ Anxiety_W v3 1.146 0.174 6.595 0.000 0.805
## 13 Sat_M ~~ Sat_M v2 17.972 5.342 3.364 0.001 7.501
## 14 Sat_W ~~ Sat_W v4 16.786 6.097 2.753 0.006 4.836
## 15 Sat_M ~~ Anxiety_M ce -0.639 0.375 -1.703 0.089 -1.375
## 16 Sat_W ~~ Anxiety_W ce -0.639 0.375 -1.703 0.089 -1.375
## 17 Satisfaction ~ Anxiety -8.316 3.091 -2.691 0.007 -14.373
## 18 Satisfaction ~~ Satisfaction 14.314 8.356 1.713 0.087 -2.064
## 19 Anxiety ~~ Anxiety 0.274 0.126 2.172 0.030 0.027
## ci.upper std.lv std.all std.nox
## 1 1.000 5.767 0.806 0.806
## 2 1.425 6.200 0.834 0.834
## 3 1.000 0.523 0.417 0.417
## 4 1.425 0.563 0.465 0.465
## 5 0.000 0.000 0.000 0.000
## 6 0.000 0.000 0.000 0.000
## 7 2.830 2.632 2.098 2.098
## 8 3.117 2.927 2.420 2.420
## 9 45.985 44.858 6.267 6.267
## 10 45.944 44.774 6.025 6.025
## 11 1.650 1.300 0.826 0.826
## 12 1.486 1.146 0.783 0.783
## 13 28.443 17.972 0.351 0.351
## 14 28.736 16.786 0.304 0.304
## 15 0.096 -0.639 -0.132 -0.132
## 16 0.096 -0.639 -0.146 -0.146
## 17 -2.259 -0.755 -0.755 -0.755
## 18 30.692 0.430 0.430 0.430
## 19 0.521 1.000 1.000 1.000
It appears that not much is gained by freeing up the second loading. Also the errors do not appear to be correlated. A simpler model could be estimated, fixing both loadings to one and setting the correlation of the errors to zero. The effect of Anxiety on Satisfaction is -8.316, standardized value being -.755. Unlike the indistinguishable model, the residual variance in Satisfaction is statistically and so there is evidence of discriminant validity.
The model is re-estimated with both loadings fixed to one and no correlated errors.
cfm.model_ds <- "
Satisfaction =~ Sat_M + 1*Sat_W
Anxiety =~ Anxiety_M + 1*Anxiety_W
Satisfaction ~ 0*1
Anxiety ~ 0*1
Anxiety_M ~ m1*1
Anxiety_W ~ m2*1
Sat_M ~ i1*1
Sat_W ~ i2*1
Anxiety_M ~~ v1*Anxiety_M
Anxiety_W ~~ v3*Anxiety_W
Sat_M ~~ v2*Sat_M
Sat_W ~~ v4*Sat_W
Satisfaction ~ start(-0.8)*Anxiety"
cfmds <- sem(cfm.model_ds,fixed.x=FALSE, data = riggsd,missing="fiml")
summary(cfmds, fit.measures = TRUE)
## lavaan (0.5-23.1097) converged normally after 55 iterations
##
## Number of observations 155
##
## Number of missing patterns 1
##
## Estimator ML
## Minimum Function Test Statistic 3.449
## Degrees of freedom 3
## P-value (Chi-square) 0.327
##
## Model test baseline model:
##
## Minimum Function Test Statistic 135.383
## Degrees of freedom 6
## P-value 0.000
##
## User model versus baseline model:
##
## Comparative Fit Index (CFI) 0.997
## Tucker-Lewis Index (TLI) 0.993
##
## Loglikelihood and Information Criteria:
##
## Loglikelihood user model (H0) -1494.328
## Loglikelihood unrestricted model (H1) -1492.604
##
## Number of free parameters 11
## Akaike (AIC) 3010.656
## Bayesian (BIC) 3044.134
## Sample-size adjusted Bayesian (BIC) 3009.317
##
## Root Mean Square Error of Approximation:
##
## RMSEA 0.031
## 90 Percent Confidence Interval 0.000 0.143
## P-value RMSEA <= 0.05 0.488
##
## Standardized Root Mean Square Residual:
##
## SRMR 0.022
##
## Parameter Estimates:
##
## Information Observed
## Standard Errors Standard
##
## Latent Variables:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction =~
## Sat_M 1.000
## Sat_W 1.000
## Anxiety =~
## Anxiety_M 1.000
## Anxiety_W 1.000
##
## Regressions:
## Estimate Std.Err z-value P(>|z|)
## Satisfaction ~
## Anxiety -9.344 3.455 -2.704 0.007
##
## Intercepts:
## Estimate Std.Err z-value P(>|z|)
## .Satisfctn 0.000
## Anxiety 0.000
## .Anxiety_M (m1) 2.632 0.101 26.074 0.000
## .Anxiety_W (m2) 2.927 0.097 30.185 0.000
## .Sat_M (i1) 44.858 0.579 77.496 0.000
## .Sat_W (i2) 44.774 0.592 75.593 0.000
##
## Variances:
## Estimate Std.Err z-value P(>|z|)
## .Anxiety_M (v1) 1.283 0.181 7.080 0.000
## .Anxiety_W (v3) 1.161 0.170 6.818 0.000
## .Sat_M (v2) 16.262 3.400 4.783 0.000
## .Sat_W (v4) 18.705 3.559 5.256 0.000
## .Satisfctn 9.782 10.215 0.958 0.338
## Anxiety 0.297 0.124 2.389 0.017
parameterEstimates(cfmds, standardized = TRUE)
## lhs op rhs label est se z pvalue ci.lower
## 1 Satisfaction =~ Sat_M 1.000 0.000 NA NA 1.000
## 2 Satisfaction =~ Sat_W 1.000 0.000 NA NA 1.000
## 3 Anxiety =~ Anxiety_M 1.000 0.000 NA NA 1.000
## 4 Anxiety =~ Anxiety_W 1.000 0.000 NA NA 1.000
## 5 Satisfaction ~1 0.000 0.000 NA NA 0.000
## 6 Anxiety ~1 0.000 0.000 NA NA 0.000
## 7 Anxiety_M ~1 m1 2.632 0.101 26.074 0.000 2.435
## 8 Anxiety_W ~1 m2 2.927 0.097 30.185 0.000 2.737
## 9 Sat_M ~1 i1 44.858 0.579 77.496 0.000 43.724
## 10 Sat_W ~1 i2 44.774 0.592 75.593 0.000 43.613
## 11 Anxiety_M ~~ Anxiety_M v1 1.283 0.181 7.080 0.000 0.928
## 12 Anxiety_W ~~ Anxiety_W v3 1.161 0.170 6.818 0.000 0.827
## 13 Sat_M ~~ Sat_M v2 16.262 3.400 4.783 0.000 9.597
## 14 Sat_W ~~ Sat_W v4 18.705 3.559 5.256 0.000 11.731
## 15 Satisfaction ~ Anxiety -9.344 3.455 -2.704 0.007 -16.116
## 16 Satisfaction ~~ Satisfaction 9.782 10.215 0.958 0.338 -10.239
## 17 Anxiety ~~ Anxiety 0.297 0.124 2.389 0.017 0.053
## ci.upper std.lv std.all std.nox
## 1 1.000 5.973 0.829 0.829
## 2 1.000 5.973 0.810 0.810
## 3 1.000 0.545 0.433 0.433
## 4 1.000 0.545 0.451 0.451
## 5 0.000 0.000 0.000 0.000
## 6 0.000 0.000 0.000 0.000
## 7 2.830 2.632 2.094 2.094
## 8 3.117 2.927 2.425 2.425
## 9 45.993 44.858 6.225 6.225
## 10 45.935 44.774 6.072 6.072
## 11 1.639 1.283 0.812 0.812
## 12 1.494 1.161 0.797 0.797
## 13 22.926 16.262 0.313 0.313
## 14 25.680 18.705 0.344 0.344
## 15 -2.572 -0.852 -0.852 -0.852
## 16 29.804 0.274 0.274 0.274
## 17 0.540 1.000 1.000 1.000
anova(cfmd,cfmds)
## Chi Square Difference Test
##
## Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
## cfmd 1 3011.4 3050.9 0.1796
## cfmds 3 3010.7 3044.1 3.4491 3.2695 2 0.195
It appears that the simpler model fits as well as the more complicated model and so it is preferred.