【问题标题】:In R Latent Variable Analysis understanding problem and get error Lavaan package在 R 潜在变量分析中理解问题并得到错误 Lavaan 包
【发布时间】:2020-07-14 10:56:34
【问题描述】:

我的问题陈述是确定影响净推荐值的因素

我正在使用带有示例数据的 lavaan 包测试

下面是代码

library(lavaan)
age=c(24,56,34)
weight=c(76,55,66)
nps=c(9,4,5)
df=c(age,weight,nps)
mat1=matrix(c(cov(abs(scale(df)))),3,3,byrow=TRUE)
mod2 <- "weight ~ age \n        weight ~ nps"
mod1 <- "nps ~ age \n        nps ~ weight"
mat1=matrix(c(cor(abs(scale(df)))),3,3,byrow=TRUE)
colnames(mat1) <- rownames(mat1) <- c("age", "weight", "nps")
mod1fit <- sem(mod1, sample.cov = mat1, sample.nobs = 100)

从上面的例子中任何人都可以帮助理解nobs[Number of Observations=100]。通常在 ML 观察中表示行数,但我不知道 nobs 参数的含义。

我用下面的链接来学习

https://www.jaredknowles.com/journal/2013/9/1/latent-variable-analysis-with-r-getting-setup-with-lavaan

当我运行上面的代码时,我得到如下错误

Error in lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]],  : 
  lavaan ERROR: sample covariance matrix is not positive-definite

【问题讨论】:

    标签: r machine-learning statistics


    【解决方案1】:

    lavaan 手册(您可以通过命令 ?sem 从 R 控制台中访问)指出参数 sample.nobs 指的是

    如果缺少完整数据框且仅给出样本矩,则观察次数。对于多组分析,包含每个组的观察次数的列表或向量。

    考虑到错误消息:我不太确定您要使用以下代码行实现什么

    mat1=matrix(c(cov(abs(scale(df)))),3,3,byrow=TRUE)
    

    然而,这会导致一个非正定样本协方差矩阵,如下所示

    > mat1
           age weight nps
    age      1      1   1
    weight   1      1   1
    nps      1      1   1
    

    如果 ageweightnps 是因子(对于它们每个都有三个观察值),那么

    mat1 <- cor(data.frame(age,weight,nps))
    

    可能会产生预期的协方差矩阵。

    【讨论】:

    • 感谢汤姆的解释。我有一个问题陈述,即我需要找到影响净推荐值高低的因素。我有年龄、体重、身高、天气数据等变量。我看过上面提到的博客,它启发了我对潜在变量分析的研究。我正在尝试的是我需要找到我称之为净推荐分数因素的属性,即低和高。除了体重和年龄之外,我需要检查所有属性。请让我知道是否有任何流程,即高效
    • 如果潜在变量建模对您的问题来说是一种可行的方法,那么我超出了我的范围,可能会更好地解决stats.stackexchange.com。但是,使用mat1 &lt;- cor(...)(最好使用cov(...)),而... 是您的原始数据框,正如我在回复中提出的那样,应该是可行的。
    • 感谢汤姆的回答和帮助。最后一个问题我们如何从这个 mod1fit
    • nobs 只有在只有协方差矩阵时才需要。也就是说,如果你有例如只需 mat1 作为输入,sem 期望得到某种关于该协方差矩阵表示多少观察值的信息。如果您确实有原始数据(如您的情况),您可以将其插入sem-statement 作为data = data.frame(age,weight,nps) 参数(而不是sample.cov);那么你不需要 nobs 语句,因为nobs 将派生自data 输入中的行数。
    • 感谢汤姆的帮助
    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多