首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用psych软件包模拟扫描电镜数据

用psych软件包模拟扫描电镜数据
EN

Stack Overflow用户
提问于 2011-09-10 08:32:55
回答 1查看 675关注 0票数 1

我用psych软件包模拟了结构方程模型的数据。我使用了Using the psych package to generate and test structural models的第17页上给出的代码。代码是

代码语言:javascript
复制
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软件包对模拟数据进行分析。代码是

代码语言:javascript
复制
sem.mod <- structure.sem(twelveV$model)
library(sem)
sem.fit <- sem(sem.mod, twelveV$r, 100)

此代码显示以下错误消息:

代码语言:javascript
复制
Error in solve.default(diag(m) - A) : 
  Lapack routine dgesv: system is exactly singular

我不知道是什么导致了这个错误。任何想法,评论和/或帮助都将受到高度赞赏。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 16:39:44

啊,有一段时间,这个错误消息一直困扰着我。

本质上(正如我最终从R-Help归档中收集的,特别是here,这意味着您的矩阵中存在冗余信息,因为(至少)一列的信息可以从其他列之一派生出来。

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7368817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档