用心理包模拟SEM数据

MYa*_*208 1 simulation r

我用psych包装模拟SEM(结构方程模型)的数据.我使用了使用psych包来生成和测试结构模型的第17页上给出的代码.代码是

library(psych)
set.seed(42)
fx <- matrix(c(0.9, 0.8, 0.7, rep(0, 9), 0.7, 0.6, 0.5, rep(0, 9), 0.6, 0.5, 0.4), ncol = 3)
rownames(fx) <- paste("x", 1:9, sep="")
fy <- matrix(c(0.6, 0.5, 0.4), ncol=1)
rownames(fy) <- paste("y", 1:3, sep="")
Phi  <- matrix(c(1, 0.48, 0.32, 0.4, 0.48, 1, 0.32, 0.3, 0.32, 0.32, 1, 0.2, 0.4, 0.3, 0.2, 1), ncol = 4)
twelveV <- sim.structure(fx=fx, Phi=Phi, fy=fy, n=100, raw=TRUE)
round(twelveV$model, 2)
round(twelveV$model-twelveV$r, 2)
twelveV$observed
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用sem包来分析模拟数据.代码是

sem.mod <- structure.sem(twelveV$model)
library(sem)
sem.fit <- sem(sem.mod, twelveV$r, 100)
Run Code Online (Sandbox Code Playgroud)

此代码提供以下错误消息:

Error in solve.default(diag(m) - A) : 
  Lapack routine dgesv: system is exactly singular
Run Code Online (Sandbox Code Playgroud)

我不是导致这个错误的原因.任何想法,评论和/或帮助将受到高度赞赏.谢谢

ric*_*roe 5

啊,那个错误信息是我生命中的祸根了一段时间.

本质上(正如我最终从R-Help档案中收集的那样,特别是在这里,它意味着矩阵中存在冗余信息,因为(至少)一列的信息可以从其他列中获得.

我认为这与共线性有关,但在这一点上我可能是错的.在大多数情况下,删除与其他列最相关的列将解决问题.

在一个真实的应用程序中,它是一个标志,抛出你的一些问题或措施.