Nothing
#
# LATENT CLASS MODEL (DMM WITHOUT TRANSITIONS)
#
lca <- function(nclasses, itemtypes, modname=NULL, fixed=NULL, stval=NULL, conrows=NULL, conpat=NULL, linmat=NULL, snames=NULL, inames=NULL) {
# recode itemtypes/assign itemnames
TYPES=c("gaussian","normal")
itemtnames = sapply(itemtypes,FUN=function(x){pmatch(tolower(as.character(x)),TYPES)})
itemtypes[which(!is.na(itemtnames))]=TYPES[itemtnames[which(!is.na(itemtnames))]]
itemtnames=itemtypes
itemtypes=recitt(itemtypes) #recitt in depmix-internal
if(any(is.na(itemtypes))) stop("Itemtypes incorrectly specified (e.g. ga is underdetermined).")
nitems = length(itemtypes)
# parameter counting
lobs=sapply(itemtypes,FUN=np)
lcmnp=nclasses*sum(lobs)+nclasses+1
# add appropriate numbers of zeroes/ones to fixed/stval/conrows/conpat
if(!is.null(fixed)) {
if(!(is.null(conpat))) warning("fixed will be overridden by conpat.")
if(!(length(fixed)==lcmnp)) stop("fixed has incorrect length.")
else fixed=c(0,rep(0,nclasses*nclasses),fixed[2:lcmnp])
} else {
fixed=c(0,rep(0,nclasses*nclasses),rep(1,(lcmnp-1)))
}
if(!is.null(stval)) {
if(!(length(stval)==lcmnp)) stop("stval has incorrect length.")
else stval=c(1,diag(nclasses),stval[2:lcmnp])
st=TRUE
} else {
st=FALSE
stval=c(1,diag(nclasses),runif((lcmnp-1)))
}
if(!is.null(conrows)) {
conrows=matrix(conrows,ncol=lcmnp,byrow=TRUE)
trzeroes=matrix(0,nrow=nrow(conrows),ncol=nclasses*nclasses)
mpzeroes=matrix(0,nrow(conrows),1)
conrows=t(cbind(mpzeroes,trzeroes,conrows[,2:(ncol(conrows))]))
}
if(!is.null(linmat)) {
trzeroes=matrix(0,nrow=nrow(linmat),ncol=nclasses*nclasses)
linmat=cbind(trzeroes,linmat)
}
if(!is.null(conpat)) {
conpat=c(rep(0,nclasses*nclasses),conpat)
fixed=NULL
}
if(is.null(snames)||length(snames)!=nclasses) snames=paste("Class",1:nclasses,sep="")
if(is.null(modname)) modname=paste(nclasses,"class model")
model=dmm(nstates=nclasses,itemtypes=itemtypes,modname=modname,fixed=fixed,stval=stval,conrows=conrows,conpat=conpat,linmat=linmat,snames=snames,inames=inames)
class(model) = c("dmm","lcm")
model$st=st
model
}
# note that this is just a wrapper for dmm and it returns a full model with
# the transition parameters in there, however, they are simply discarded in
# estimation of the model, but they need to be considered when specifying
# constraints
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.