【问题标题】:Simulating Data for SEM with psych package使用 psych 包模拟 SEM 的数据
【发布时间】:2011-09-10 00:32:54
【问题描述】:

我正在使用 psych 包模拟 SEM(结构方程模型)的数据。我使用了Using the psych package to generate and test structural models 第 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

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

sem.mod <- structure.sem(twelveV$model)
library(sem)
sem.fit <- sem(sem.mod, twelveV$r, 100)

此代码给出以下错误消息:

Error in solve.default(diag(m) - A) : 
  Lapack routine dgesv: system is exactly singular

我不知道是什么导致了这个错误。任何想法、评论和/或帮助将不胜感激。谢谢

【问题讨论】:

    标签: r simulation


    【解决方案1】:

    啊,那条错误消息是我一段时间的祸根。

    基本上(正如我最终从 R-Help 档案中收集的那样,特别是 here,这意味着您的矩阵中有冗余信息,因为(至少)一列的信息可以从其他列中导出。

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

    在真正的应用程序中,它是抛出一些问题或措施的标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2019-04-20
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      相关资源
      最近更新 更多