Анализ латентного класса в R с использованием смешанной модели - PullRequest
0 голосов
/ 14 декабря 2018

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

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

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

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

0 голосов
/ 07 февраля 2019

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

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

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

...