Анализ скрытых классов в R с использованием смешанной модели

Я пытаюсь выполнить анализ скрытого класса в R, но у меня есть некоторые переменные, которые являются как непрерывными, так и категориальными. Кроме того, у меня есть 52 состояния или строки, и я пытаюсь создать 52 скрытых класса или подгруппы. Я начал писать код на R, но получаю сообщение об ошибке. Вот ошибка: Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]]) : contrasts can be applied only to factors with 2 or more levels

Вот мой R-код

#Getting data into R
library(haven)
Component_3_database_11022018 <- read_sav("C:/Users/gaurelien/WRMA/APS-TARC - Documents/Evaluation/Component 3 Research Study/Data Analysis/SPSS/Source/Component 3 database 11022018.sav")
#Create a subset of the full data set reduced to 52 states
LCA<-subset(Component_3_database_11022018, State52==1)
#Loading packages
library(mclust)
library(poLCA) # only categorical indicators
library(scatterplot3d)
library(MASS)
library(orthopolynom)
library(polynom)
library(nlsem)
library(nnet)
library(Rsolnp)
library(depmixS4)

#Latent class Modeling with component 3 data
# Construcution of the dependent Mixture Models
#To avoid time-consuming mistakes in model specification, the analysis involves two steps: 
#construction of a model with mix function and fitting it with fit function. family argument 
#of mix function allows specifying a type of observed variables – whether they are continuous, nominal, 
#or count by adding to a list corresponding distribution name, i.g. guassian or multinomial.
model_definition <- mix(list(AgencyLocation ~1, GeographicStructure ~1 , EligibilityCode ~1, 
  Maltreatment_Definitions_group ~ 1 ,ratio_report_per_investigator ~ 1,
  census_TotalPop ~ 1, percent_belowpovertylevel_12months ~1),
  family=list(multinomial(), #For every corresponding 
  multinomial(),  #  indicator a family of distribution 
  multinomial(),
  multinomial(),
  multinomial(),
  multinomial(),
  multinomial()), # should be indicated in the list.
  data= LCA,
  nstates=52,
  initdata =LCA)
  fit.mod <- fit(model_definition)

person G.Aurelien    schedule 14.12.2018    source источник
comment
Буквально вчера у меня была такая же ошибка (запуск функции lm()). Сначала я запустил более простую модель, (временно) исключив все факторные переменные (одну за другой) из моего набора данных. Я постепенно добавлял удаленные столбцы (один за другим), пока не увидел, что вызвало ошибку.   -  person knb    schedule 17.12.2018


Ответы (2)


Анализ латентных классов технически следует использовать только для категориальных наблюдаемых переменных, его нельзя использовать для непрерывных переменных. Вот почему ваша модель не сходится, особенно если ваши непрерывные переменные имеют много вариаций. Для ваших непрерывных переменных вы должны попытаться дихотомизировать их, если можете. Другими словами, вы должны уменьшить вариацию в них. Затем снова запустите вашу модель.

Кроме того, вам следует попробовать запустить модель с меньшим количеством наблюдаемых переменных (менее 10). Затем, когда вы достигнете сходимости, постепенно добавляйте больше переменных и следите за своим минимальным BIC.

Если вы хотите сохранить свои непрерывные переменные как есть, вы можете попробовать анализ скрытого профиля, он позволяет использовать как непрерывные, так и категориальные переменные. Кроме того, хотя некоторые люди могут поспорить с этим, я видел моделирование структурным уравнением с использованием порядковых переменных и непрерывных переменных в одной и той же модели, что позволило бы вам сохранить ваши непрерывные переменные.

person AnnieG    schedule 07.02.2019

R — не лучшая программа для анализа скрытых классов. Я бы рекомендовал использовать одну из (платных) альтернатив: Latent Gold или Mplus.

У них обоих есть расширения, в которых вы можете комбинировать как непрерывные, так и категориальные данные для анализа скрытых классов. Я знаю, что это может быть довольно дорого, но они намного быстрее и намного гибче, чем любой из пакетов R на данный момент.

person MartinBL    schedule 27.02.2019
comment
Мне удалось запустить модель скрытого класса в R как с категориальными, так и с непрерывными переменными. R имеет пакет под названием multimix, который позволяет вам сделать это @MartinBL - person G.Aurelien; 28.02.2019