how to choose a good standardization

閲覧: 81 回
最初の未読メッセージにスキップ

Emmanuel W

未読、
2018/12/06 12:37:592018/12/06
To: lavaan
Hello,

I'm a little lost in all the possibilities of standardization that the package offers.

My model is as follows: 20 items (categorical) that form 4 1st order latent variables and 1 second order latent variable, 1 categorical dependent variable and 2 covariates (1 continuous and 1 categorical).

fit <- cfa(model5.Morin, data = bdd, estimator = "WLSMV",
ordered=c("Item1", "Item2", "Item3", "Item4", "Item5", "Item6", "Item7", "Item8",
"Item9", "Item10", "Item11", "Item12", "Item13", "Item14", "Item15", "Item16",
"Item17", "Item18", "Item19", "Item20", "outcome", conditional.x = FALSE)

summary(fit, fit.measures=TRUE, standardized=TRUE)


1) First of all, is it important to consider "std.ov" if I look at a standardized estimate later?

2) Should I use the estimate from the column "std.lv" or "std.all" (often very close)? Or should I use "std.nox" provided by the "standardizedSolution" function?

3) Finally, if I want to give standardized SEs, I think dividing the standardized estimate by the z-value (without standardization) doesn't really give the right answer...

Should I use "standardizedSolution" in this case or is there another way?

Thank you very much for your help.

Terrence Jorgensen

未読、
2018/12/07 10:22:452018/12/07
To: lavaan
1) First of all, is it important to consider "std.ov" if I look at a standardized estimate later?

No, that standardizes observed variables (ov) before the analysis.  This is pointless at best because you can get the standardized solution after, but your SEs could be biased if you fit the model to z scores because those variables' residual variances should be considered fixed (to 1 minus the explained variance).  In your case, only the continuous covariate would be standardized anyway.

2) Should I use the estimate from the column "std.lv" or "std.all" (often very close)? Or should I use "std.nox" provided by the "standardizedSolution" function?

std.lv only provides estimates as though the latent variables (lv) have SD = 1 (which might already be the case if you set std.lv=TRUE for identification).

std.all provides estimates as though both the observed and latent variables have SD = 1, so that is what most people report (i.e., the "fully standardized solution"). 

I think std.nox means that the exogenous observed covariates are not standardized, but all the latent and (endogenous) observed variables are.  I suppose this would be useful if you had an observed dummy code and fixed.x=TRUE, so the std.nox estimate would be a standardized group-mean difference, whereas std.all would provide a standardized slope. 

3) Finally, if I want to give standardized SEs, I think dividing the standardized estimate by the z-value (without standardization) doesn't really give the right answer...

Should I use "standardizedSolution" in this case or is there another way?

No, the SEs in the summary() output only apply to unstandardized parameters.  If you want to test standardized parameters instead of using them as measures of effect size to accompany your NHSTs about unstandardized parameters, then use the SEs in standardizedSolution().

Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

Christopher Desjardins

未読、
2018/12/07 11:35:052018/12/07
To: lav...@googlegroups.com
Hi,

While trying to use the sem.mi() function in the semTools (Version 0.5-1) with my own imputed data set, I realized that sem.mi() appears to be ignoring the imputed data.

Here’s a simple example:

library(mice)
library(semTools)

# impute data
imp <- mice(nhanes, m = 5, seed = 54321)

# check that imp is a list as sem.mi as manual says “Ignored if data is already a list of imputed data set”
is.list(imp)

# create simple lavaan model
mod <- "
chl ~ 1 + age + bmi + hyp


# mi runs(?) and complains
fit.mi <- sem.mi(model = mod, data = imp)
summary(fit.mi)

for(i in 1:5) {
fit <- sem(mod, complete(imp, i))
print(parTable(fit)[1:5,c("lhs", "op", "rhs", "est", "se")])
}

Perhaps I’m using sem.mi() wrong? I can program my own Rubin’s rules but thought I’d let you know about this. I can also open an issue on GitHub if helpful, Terrence.

Chris

Alex Schoemann

未読、
2018/12/07 12:09:252018/12/07
To: lavaan
Hi Chris,

There's a little bit of confusion here about the list you need. The results from running mice are a list (specifically an mids object from an S3 class) but this is not the list sem.mi needs. In order to generalize across MI programs sem.mi (and the other runMI functions) take a list of data frames of imputed data (which is not the same as a mids object). So you need to convert the mids object to this type of list (using the complete function is the easiest way to do this) for your example it would be:

m <- 5

impL <- NULL

for(i in 1:m){
impL[[i]] <- complete(imp, i)
}

fit.mi <- sem.mi(model = mod, data = impL) 
summary(fit.mi) 


Alex

Christopher Desjardins

未読、
2018/12/07 12:15:192018/12/07
To: lav...@googlegroups.com
Thanks. Indeed, I would have thought the function would work out of the box with a mids object. Maybe this should be added to the Examples in the manual or the runMI() function check can if an object is.mids and convert it to the desired format.
 
Chris

--
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+un...@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.

Christopher Desjardins

未読、
2018/12/07 12:38:532018/12/07
To: lav...@googlegroups.com
On Dec 7, 2018, at 11:09 AM, Alex Schoemann <alexander...@gmail.com> wrote:

Christopher Desjardins

未読、
2018/12/07 12:59:162018/12/07
To: lav...@googlegroups.com
And here’s the pull request, https://github.com/simsem/semTools/pull/52/files

Terrence Jorgensen

未読、
2018/12/08 11:01:392018/12/08
To: lavaan

On Friday, December 7, 2018 at 6:59:16 PM UTC+1, Christopher Desjardins wrote:
And here’s the pull request, https://github.com/simsem/semTools/pull/52/files
On Dec 7, 2018, at 11:38 AM, Christopher Desjardins <cddesj...@gmail.com> wrote:

Issue resolved, thanks!

Emmanuel W

未読、
2018/12/10 5:40:082018/12/10
To: lavaan
Thank you Terrence. Your answers are really useful.

I just didn't quite understand your answer to the third question. I am mainly looking for standardised ones to indicate SE's in a SEM figure.

Emmanuel
全員に返信
投稿者に返信
転送
新着メール 0 件