我有一个清单100多个扫描电镜模型计算在lavaan。对于这个例子,我只使用两个模型:
fit.model1.cfa <- '
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
ind60 ~~ ind60
dem60 ~~ dem60
dem65 ~~ dem65' %>%
sem(PoliticalDemocracy)
fit.model2.cfa <- '
ind60 =~ x1 + x2
dem60 =~ y1 + y2 + y3
dem65 =~ y5 + y6 + y7
ind60 ~~ ind60
dem60 ~~ dem60
dem65 ~~ dem65' %>%
sem(PoliticalDemocracy)模型到底是什么并不那么重要。现在,我们将加入他们的名单:
models <- list(fit.model1.cfa, fit.model2.cfa)我想对我的模型进行事后权力分析,为此,我使用了以下for循环:
pwr <- list()
for(i in 1:2){
sim(nRep = 1000, model = models[[i]], n = models[[i]]@SampleStats@ntotal, generate = models[[i]]) %>%
getPower() -> pwr[[i]]
}但是,我想避免使用for循环,而是使用map函数。我尝试了以下几点:
models %>%
map(., sim, nRep = 1000, model = ., n = pluck(pluck(., "SampleStats"), "ntotal"), generate = .) %>%
map(getPower)然而,这是行不通的。那我做错什么了?
发布于 2020-02-24 02:02:49
这是我第一次听说lavaan,simsem和它的模型,但我试图帮助您学习咕噜 map。我用nRep = 10做了一个简单的解决方案,只是为了测试,您可以用nRep = 1000复制它。此外,还返回了许多警告和进度,但为了保持清洁,我在下面的示例中删除了它们。
library(tidyverse, verbose = F)
library(lavaan)
library(simsem)
fit.model1.cfa <- '
ind60 =~ x1 + x2 + x3
dem60 =~ y1 + y2 + y3 + y4
dem65 =~ y5 + y6 + y7 + y8
ind60 ~~ ind60
dem60 ~~ dem60
dem65 ~~ dem65' %>%
sem(PoliticalDemocracy)
fit.model2.cfa <- '
ind60 =~ x1 + x2
dem60 =~ y1 + y2 + y3
dem65 =~ y5 + y6 + y7
ind60 ~~ ind60
dem60 ~~ dem60
dem65 ~~ dem65' %>%
sem(PoliticalDemocracy)
models <- list(model1 = fit.model1.cfa, model2 = fit.model2.cfa)
power <- map(models, function(x){
n <- x@SampleStats@ntotal
z <- sim(model = x, nRep = 10, n = n, generate = x)
getPower(z)
})
power
#> $model1
#> ind60=~x2 ind60=~x3 dem60=~y2 dem60=~y3 dem60=~y4 dem65=~y6
#> 1.0 1.0 1.0 1.0 1.0 1.0
#> dem65=~y7 dem65=~y8 ind60~~ind60 dem60~~dem60 dem65~~dem65 x1~~x1
#> 1.0 1.0 1.0 1.0 1.0 1.0
#> x2~~x2 x3~~x3 y1~~y1 y2~~y2 y3~~y3 y4~~y4
#> 0.5 1.0 1.0 1.0 1.0 1.0
#> y5~~y5 y6~~y6 y7~~y7 y8~~y8 ind60~~dem60 ind60~~dem65
#> 1.0 1.0 1.0 1.0 1.0 1.0
#> dem60~~dem65
#> 1.0
#>
#> $model2
#> ind60=~x2 dem60=~y2 dem60=~y3 dem65=~y6 dem65=~y7 ind60~~ind60
#> 1.0 1.0 1.0 1.0 1.0 1.0
#> dem60~~dem60 dem65~~dem65 x1~~x1 x2~~x2 y1~~y1 y2~~y2
#> 1.0 1.0 0.4 0.4 0.8 1.0
#> y3~~y3 y5~~y5 y6~~y6 y7~~y7 ind60~~dem60 ind60~~dem65
#> 1.0 1.0 1.0 1.0 0.9 1.0
#> dem60~~dem65
#> 1.0https://stackoverflow.com/questions/60368270
复制相似问题