fitdmm
fits mixtures of hidden/latent Markov
models on arbitrary length time series of mixed categorical and
continuous data. This includes latent class models and finite mixture
models (for time series of length 1), which are in effect independent
mixture models.}
posterior
posterior
computes the most likely
latent state sequence for a given dataset and model.}fitdmm(dat, dmm, printlevel = 1, poster = TRUE, tdcov = 0,
ses = TRUE, method = "optim", vfactor=15, der = 1, iterlim = 100,
kmst = !dmm$st, kmrep = 5, postst = FALSE)
loglike(dat, dmm, tdcov = 0, grad = FALSE, hess = FALSE, set
= TRUE, grInd = 0, sca = 1, printlevel = 1)
posterior(dat,dmm,tdcov=0,printlevel=1)
computeSes(dat,dmm)
bootstrap(object,dat,samples=100, pvalonly=0,...)
## S3 method for class 'fit':
summary(object, precision=3, fd=1, \dots)
oneliner(object,precision=3)
md
, see
markovdata. If dat is a list of objects of class md
a
multigroup model is fitted on these data sets.dmm
, see
dmm. If dmm is a list of objects of class dmm
, these are taken
to components of a mixture of dmm's model and will be coerced to class
mixdmm
. In any case, thprintlevel
controls the output provided by the
C-routines that are called to optimize the parameters. The default of
1 provides minmal output: just the initial and final loglikelihood of
the model. Setting higher values will provide mfit
, ie the return value of
fitdmm.kmrep
sets of
starting values are generated using kmeans in appropriate cases. The
best resulting set of starting values is optimized further.fitdmm
returns an object of class fit
which has a summary
method that prints the summary of the fitted model, and the following fields:loglike
returns a list of the following:gr
contains the gradients. grset
is a logical vector
giving information as to which gradients are set, currently all gradients are set
except the gradients for the mixing proportions.hs
contains the hessian. hsset
is a logical giving
information as to which elements are computed.posterior
returns lists of the following:computeSes
returns a vector of length npars
with the standard
errors and a matrix hs
with the hessian used to compute them. The
routine is not fail safe and can produce errors, ie when the (corrected)
hessian is singular; a warning is issued when the hessian is close to being
singular.
bootstrap
returns an object of class fit
with three extra
fields, the bootstrapped standard errors, bse, a matrix with
goodness-of-fit measures of the bootstrap samples, ie logl, AIC and BIC and
pbetter, which is the proportion of bootstrap samples that resulted in
better fits than the original model.
summary.fit
pretty-prints the outputs.
oneliner
returns a vector of loglike, aic, bic, mod$npars,
mod$freepars, date.fitdmm
optimizes the parameters of a mixture of
dmm
s using a general purpose optimization routine subject to linear
constraints on the parameters.dmm
,markovdata
# COMBINED RT AND CORRECT/INCORRECT SCORES from a 'switching' experiment
data(speed)
mod <- dmm(nsta=2,itemt=c(1,2)) # gaussian and binary items
fit1 <- fitdmm(dat=speed,dmm=mod)
summary(fit1)
# add some constraints using conpat
conpat=rep(1,15)
conpat[1]=0
conpat[14:15]=0
conpat[8:9]=0
# use starting values from the previous model fit, except for the guessing
# parameters which should really be 0.5
stv=c(1,.896,.104,.084,.916,5.52,.20,.5,.5,6.39,.24,.098,.90,0,1)
mod=dmm(nstates=2,itemt=c("n",2),stval=stv,conpat=conpat)
fit2 <- fitdmm(dat=speed,dmm=mod)
summary(fit2)
# add covariates to the model to incorporate the fact the accuracy pay off changes per trial
# 2-state model with covariates + other constraints
conpat=rep(1,15)
conpat[1]=0
conpat[8:9]=0
conpat[14:15]=0
conpat[2]=2
conpat[5]=2
stv=c(1,0.9,0.1,0.1,0.9,5.5,0.2,0.5,0.5,6.4,0.25,0.9,0.1,0,1)
tdfix=rep(0,15)
tdfix[2:5]=1
stcov=rep(0,15)
stcov[2:5]=c(-0.4,0.4,0.15,-0.15)
mod<-dmm(nstates=2,itemt=c("n",2),stval=stv,conpat=conpat,tdfix=tdfix,tdst=stcov,modname="twoboth+cov")
fit3 <- fitdmm(dat=speed,dmm=mod,tdcov=1,der=0,ses=0,vfa=80)
summary(fit3)
# split the data into three time series
data(speed)
r1=markovdata(dat=speed[1:168,],item=itemtypes(speed))
r2=markovdata(dat=speed[169:302,],item=itemtypes(speed))
r3=markovdata(dat=speed[303:439,],item=itemtypes(speed))
# define 2-state model with constraints
conpat=rep(1,15)
conpat[1]=0
conpat[8:9]=0
conpat[14:15]=0
stv=c(1,0.9,0.1,0.1,0.9,5.5,0.2,0.5,0.5,6.4,0.25,0.9,0.1,0,1)
mod<-dmm(nstates=2,itemt=c("n",2),stval=stv,conpat=conpat)
# define 3-group model with equal transition parameters, and no
# equalities between the obser parameters
mgr <-mgdmm(dmm=mod,ng=3,trans=TRUE,obser=FALSE)
fitmg <- fitdmm(dat=list(r1,r2,r3),dmm=mgr)
summary(fitmg)
# LEARNING DATA AND MODELS (with absorbing states)
data(discrimination)
# all or none model with error prob in the learned state
fixed = c(0,0,0,1,1,1,1,0,0,0,0)
stv = c(1,1,0,0.03,0.97,0.1,0.9,0.5,0.5,0,1)
allor <- dmm(nstates=2,itemtypes=2,fixed=fixed,stval=stv,modname="All-or-none")
# Concept identification model: learning only after an error
st=c(1,1,0,0,0,0.5,0.5,0.5,0.25,0.25,0.05,0.95,0,1,1,0,0.25,0.375,0.375)
# fix some parameters
fx=rep(0,19)
fx[8:12]=1
fx[17:19]=1
# add a couple of constraints
conr1 <- rep(0,19)
conr1[9]=1
conr1[10]=-1
conr2 <- rep(0,19)
conr2[18]=1
conr2[19]=-1
conr3 <- rep(0,19)
conr3[8]=1
conr3[17]=-2
conr=c(conr1,conr2,conr3)
cim <- dmm(nstates=3,itemtypes=2,fixed=fx,conrows=conr,stval=st,modname="CIM")
# define a mixture of the above models ...
mix <- mixdmm(dmm=list(allor,cim),modname="MixAllCim")
# ... and fit it on the combined data discrimination
fitmix <- fitdmm(discrimination,mix)
summary(fitmix)
Run the code above in your browser using DataLab