В R Latent Variable Analysis понимают проблему и получают ошибку Lavaan package - PullRequest
3 голосов
/ 02 апреля 2020

Моя задача состоит в том, чтобы определить факторы, которые влияют на net Промоутерский балл

Я использую тестирование пакетов 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

1 Ответ

1 голос
/ 02 апреля 2020

В руководстве lavaan (доступ к которому можно получить из консоли R с помощью команды ?sem) говорится, что аргумент 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

Если age, weight и nps являются факторами (для которого у вас есть три наблюдения каждое), тогда

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

может произвести предполагаемую ковариационную матрицу.

...