#
# Approach 1 - applying error correction directly to the observed composite
#
library(lavaan);
modelData <-read.csv(file=..., header = TRUE);
model<-"
DVmale ~ X1male + X2male + X1female + X2female
DVfemale ~ X1female+ X2female + X1male + X2male
DVmale ~~ 0.1528028*DVmale
DVfemale ~~ 0.2171088*DVfemale
DVmale ~~ DVfemale
";
result<-sem(model, data=modelData, estimator = "ML", fixed.x=FALSE, missing = "FIML");
summary(result, fit.measures=TRUE, standardized=TRUE)
When I run the model using Approach 1, most of the regression paths are significant and in the theoretically predicted direction. However, the model fit is very poor - in fact, unrealistically so (RMSEA > 2, CFI = 0, Chi-square/df ratio > 400, etc.). Although there is evidence that model fit statistics can be quite inappropriately biased toward model rejection when degrees of freedom and sample size are low (Kenny, Kaniskan, & McCoach, 2015), as they were in this study (n = 75, df = 2), these fit measures seem so off-base to me that I am concerned about the results as a whole. If I were not applying error corrections at all, I would have fully saturated model, and therefore (trivially) perfect fit. But the addition of the error corrections is adding 2 df to the model, putting me in a small-df situation for estimating model fit. Following Kenny (http://davidakenny.net/kkc/c7/c7.htm), I am essentially using the APIM as a "regression hack" to account for the fact that scores for male and female members of couples are non-independent - model fit per se is not my primary concern, but rather the significance and direction of the regression coefficients. That said, I began to wonder if perhaps I was incorrectly applying the error correction. So I tried the approach below, which explicitly models the outcomes as latent variables with single indicators.
#
# Approach 2 - Applying error correction to single indicators of latent outcome variables
#
library(lavaan);
modelData <-read.csv(file=..., header = TRUE);
model<-"
DVmale_Latent =~ 1.0*DVmale_Observed
DVfemale_Latent =~ 1.0*DVfemale_Observed
DVmale_Latent ~ X1male + X2male + X1female + X2female
DVfemale_Latent ~ X1female + X2female + X1male + X2male
DVmale_Observed ~~ .13106046*DVmale_Observed
DVfemale_Observed ~~ .1571883984*DVfemale_Observed
DVmaleLatent ~~ DVfemaleLatent
";
result<-sem(model, data=modelData, estimator = "ML", fixed.x=FALSE, missing = "FIML");
summary(result, fit.measures=TRUE, standardized=TRUE)
With Approach 2 above, I get a saturated model and the fit issue resolves (at least, in the sense of a saturated model fitting "perfectly"). But now none of the regression paths are significant. Although I have read a good bit about error corrections in SEM, I am a bit confused whether I am applying them appropriately in lavaan, as well as the more general question of which of the two approaches above is correct (or maybe neither of them)? I'd appreciate any insights.
--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+unsubscribe@googlegroups.com.
To post to this group, send email to lav...@googlegroups.com.
Visit this group at https://groups.google.com/group/lavaan.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
On 4 Aug 2017, at 24:16 , Tim <worl...@gmail.com> wrote:Hi,I am somewhat new to lavaan, and trying to determine the appropriate way to apply Bollen's (1989) (1-alpha)*(variance) correction for measurement error within a path model using lavaan. I am using lavaan to run an Actor-Partner Interdependence Model path analysis (Kenny, Kashy, & Cook, 2006). My predictors are single items, and my outcomes are composites based on multi-item scales; the outcomes are the ones I am applying the error corrections to. I am using path analysis due to my relatively small sample size (75 dyads). I initially ran the following model to apply the measurement error corrections in my analysis:## Approach 1 - applying error correction directly to the observed composite#library(lavaan);modelData <-read.csv(file=..., header = TRUE);model<-"DVmale ~ X1male + X2male + X1female + X2femaleDVfemale ~ X1female+ X2female + X1male + X2maleDVmale ~~ 0.1528028*DVmaleDVfemale ~~ 0.2171088*DVfemaleDVmale ~~ DVfemale";result<-sem(model, data=modelData, estimator = "ML", fixed.x=FALSE, missing = "FIML");summary(result, fit.measures=TRUE, standardized=TRUE)
When I run the model using Approach 1, most of the regression paths are significant and in the theoretically predicted direction. However, the model fit is very poor - in fact, unrealistically so (RMSEA > 2, CFI = 0, Chi-square/df ratio > 400, etc.). Although there is evidence that model fit statistics can be quite inappropriately biased toward model rejection when degrees of freedom and sample size are low (Kenny, Kaniskan, & McCoach, 2015), as they were in this study (n = 75, df = 2), these fit measures seem so off-base to me that I am concerned about the results as a whole. If I were not applying error corrections at all, I would have fully saturated model, and therefore (trivially) perfect fit. But the addition of the error corrections is adding 2 df to the model, putting me in a small-df situation for estimating model fit. Following Kenny (http://davidakenny.net/kkc/c7/c7.htm), I am essentially using the APIM as a "regression hack" to account for the fact that scores for male and female members of couples are non-independent - model fit per se is not my primary concern, but rather the significance and direction of the regression coefficients. That said, I began to wonder if perhaps I was incorrectly applying the error correction. So I tried the approach below, which explicitly models the outcomes as latent variables with single indicators.## Approach 2 - Applying error correction to single indicators of latent outcome variables#library(lavaan);modelData <-read.csv(file=..., header = TRUE);model<-"DVmale_Latent =~ 1.0*DVmale_ObservedDVfemale_Latent =~ 1.0*DVfemale_ObservedDVmale_Latent ~ X1male + X2male + X1female + X2femaleDVfemale_Latent ~ X1female + X2female + X1male + X2maleDVmale_Observed ~~ .13106046*DVmale_ObservedDVfemale_Observed ~~ .1571883984*DVfemale_ObservedDVmaleLatent ~~ DVfemaleLatent";result<-sem(model, data=modelData, estimator = "ML", fixed.x=FALSE, missing = "FIML");summary(result, fit.measures=TRUE, standardized=TRUE)
With Approach 2 above, I get a saturated model and the fit issue resolves (at least, in the sense of a saturated model fitting "perfectly"). But now none of the regression paths are significant. Although I have read a good bit about error corrections in SEM, I am a bit confused whether I am applying them appropriately in lavaan, as well as the more general question of which of the two approaches above is correct (or maybe neither of them)? I'd appreciate any insights.