Back to schedule


Getting Started

library(lavaan)
riggsd<- read.csv("riggsd.csv", header=TRUE)

Indistinguishable

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

Common Fate Model 

(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.

Distinguishable Dyads

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.


Back to schedule