我刚开始使用 R 和 Lavaan,但已经成功建立了我的 SEM 模型来获得结果。我正在尝试获取与模型隐含相关性相关的 p 值。 lavInspect(fit,"cor.all") 但发现没有与每个二元隐含相关性相关的 p 值。有没有简单的方法可以做到这一点?
我已经在其他线程中看到了建议的引导,但未能成功获取输出。我试过这个 引导相关性 <- bootstrapLavaan(fit, R=100,FUN=lavInspect, what="cor.all") without luck
如果不是 p 值,有人可以具体解释如何获取模型隐含相关性的自举 CI 吗?
感谢您的任何想法!
您可以按照以下方法执行此操作。事实上,这是我无数次给学生做的练习。所选的样本数据是 HolzingerSwineford1939: 经典的 Holzinger 和 Swineford (1939) 数据集包含来自两所不同学校(Pasteur 和 Grant-White)的七年级和八年级儿童的心理能力测试成绩。在原始数据集(MBESS 包中提供)中,有 26 个测试的分数。然而,包含 9 个变量的较小子集在文献中使用得更广泛(例如 Joreskog 1969 年的论文,该论文也仅使用了 Grant-White 学派的 145 个科目)。
library(lavaan)
library(boot)
data <- HolzingerSwineford1939
model <- '
visual =~ x1 + x2 + x3
textual =~ x4 + x5 + x6
speed =~ x7 + x8 + x9
'
fit <- sem(model, data = data)
get_model_cor <- function(fit) {
cor(fitted(fit)$cov)
}
bootstrapLavaanCor <- function(data, model, R = 1000) {
fit_fun <- function(data, indices) {
fit <- sem(model, data = data[indices, ])
c(get_model_cor(fit))
}
boot_out <- boot(data, fit_fun, R = R)
boot_out
}
set.seed(123)
boot_results <- bootstrapLavaanCor(data, model, R = 1000)
implied_cor <- get_model_cor(fit)
num_vars <- ncol(implied_cor)
calc_p_values <- function(boot_results, implied_cor, num_vars) {
p_values <- matrix(NA, num_vars, num_vars)
for (i in 1:num_vars) {
for (j in i:num_vars) {
bootstrap_samples <- boot_results$t[, (i - 1) * num_vars + j]
observed_value <- implied_cor[i, j]
p_value <- mean(abs(bootstrap_samples) >= abs(observed_value))
p_values[i, j] <- p_value
p_values[j, i] <- p_value
}
}
return(p_values)
}
p_values <- calc_p_values(boot_results, implied_cor, num_vars)
print(p_values)
print(implied_cor)
implied_cor
由 给出
x1 x2 x3 x4 x5 x6 x7
x1 1.00000000 0.17571229 0.42864804 -0.02909431 -0.01553962 -0.03998217 -0.2957268
x2 0.17571229 1.00000000 0.06358578 -0.23566653 -0.22227990 -0.24405596 -0.3418594
x3 0.42864804 0.06358578 1.00000000 -0.14202754 -0.12865838 -0.15162292 -0.3217766
x4 -0.02909431 -0.23566653 -0.14202754 1.00000000 0.91345202 0.91206696 -0.4567183
x5 -0.01553962 -0.22227990 -0.12865838 0.91345202 1.00000000 0.90999014 -0.4366246
x6 -0.03998217 -0.24405596 -0.15162292 0.91206696 0.90999014 1.00000000 -0.4676668
x7 -0.29572676 -0.34185941 -0.32177663 -0.45671832 -0.43662456 -0.46766681 1.0000000
x8 -0.24652846 -0.35674401 -0.30459369 -0.47186076 -0.44881341 -0.48497324 0.4152746
x9 -0.27315815 -0.35946855 -0.31924241 -0.47659989 -0.45416070 -0.48916312 0.3627651
x8 x9
x1 -0.2465285 -0.2731582
x2 -0.3567440 -0.3594686
x3 -0.3045937 -0.3192424
x4 -0.4718608 -0.4765999
x5 -0.4488134 -0.4541607
x6 -0.4849732 -0.4891631
x7 0.4152746 0.3627651
x8 1.0000000 0.5315998
x9 0.5315998 1.0000000
以及与它们相关的
p-values
是
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1.000 0.520 0.561 0.867 0.918 0.819 0.473 0.445 0.458
[2,] 0.520 1.000 0.621 0.524 0.531 0.520 0.475 0.474 0.481
[3,] 0.561 0.621 1.000 0.479 0.487 0.484 0.465 0.458 0.455
[4,] 0.867 0.524 0.479 1.000 0.517 0.522 0.429 0.412 0.448
[5,] 0.918 0.531 0.487 0.517 1.000 0.518 0.438 0.418 0.442
[6,] 0.819 0.520 0.484 0.522 0.518 1.000 0.437 0.415 0.443
[7,] 0.473 0.475 0.465 0.429 0.438 0.437 1.000 0.505 0.440
[8,] 0.445 0.474 0.458 0.412 0.418 0.415 0.505 1.000 0.492
[9,] 0.458 0.481 0.455 0.448 0.442 0.443 0.440 0.492 1.000