Depmix contains a number of default response models. We provide a brief description of these here.
BINOMresponse
BINOMresponse is a binomial response model. It derives from the basic GLMresponse class.
y:: The dependent variable can be either a binary vector, a factor, or a 2-column matrix, with successes and misses.
x:: The design matrix.
Parameters:: A named list with a single element ``coefficients'', which contains the GLM coefficients.
GAMMAresponse
GAMMAresponse is a model for a Gamma distributed response. It extends the basic GLMresponse class directly.
y:: The dependent variable.
x:: The design matrix.
Parameters:: A named list with a single element ``coefficients'', which contains the GLM coefficients.
MULTINOMresponse
MULTINOMresponse is a model for a multinomial distributed response. It extends the basic GLMresponse class, although the functionality is somewhat different from other models that do so.
y:: The dependent variable. This is a binary matrix with N rows and Y columns, where Y is the total number of categories.
x:: The design matrix.
Parameters:: A named list with a single element ``coefficients'', which is an ncol(x) by ncol(y) matrix which contains the GLM coefficients.
MVNresponse
MVNresponse is a model for a multivariate normal distributed response. See codemakeDepmix for an example of how to use this and other non-glm like distributions.
y:: The dependent variable. This is a matrix.
x:: The design matrix.
Parameters:: A named list with a elements coefficients'', which contains the GLM coefficients, and Sigma'', which contains the covariance matrix.
NORMresponse
NORMresponse is a model for a normal (Gaussian) distributed response. It extends the basic GLMresponse class directly.
y:: The dependent variable.
x:: The design matrix.
Parameters:: A named list with elements coefficients'', which contains the GLM coefficients, and sd'', which contains the standard deviation.
POISSONresponse
POISSONresponse is a model for a Poisson distributed response. It extends the basic GLMresponse class directly.
y:: The dependent variable.
x:: The design matrix.
Parameters:: A named list with a single element ``coefficients'', which contains the GLM coefficients.
Examples
# binomial response modelx <- rnorm(1000)p <- plogis(x)ss <- rbinom(1000,1,p)mod <- GLMresponse(cbind(ss,1-ss)~x,family=binomial())fit(mod)glm(cbind(ss,1-ss)~x, family=binomial)# gamma response modelx=runif(1000,1,5)res <- rgamma(1000,x)## note that gamma needs proper starting values which are not## provided by depmixS4 (even with them, this may produce warnings)mod <- GLMresponse(res~x,family=Gamma(),pst=c(0.8,1/0.8))fit(mod)glm(res~x,family=Gamma)# multinomial response modelx <- sample(0:1,1000,rep=TRUE)mod <- GLMresponse(sample(1:3,1000,rep=TRUE)~x,family=multinomial(),pstart=c(0.33,0.33,0.33,0,0,1))mod@y <- simulate(mod)fit(mod)colSums(mod@y[which(x==0),])/length(which(x==0))colSums(mod@y[which(x==1),])/length(which(x==1))# note that the response is treated as factor here, internal representation is in # dummy coded format:head(mod@y)# similar to the binomial model, data may also be entered in multi-column format # where the n for each row can be differentdt <- data.frame(y1=c(0,1,1,2,4,5),y2=c(1,0,1,0,1,0),y3=c(4,4,3,2,1,1))m2 <- mix(cbind(y1,y2,y3)~1,data=dt,ns=2,family=multinomial("identity"))fm2 <- fit(m2)summary(fm2)# multivariate normal response modelmn <- c(1,2,3)sig <- matrix(c(1,.5,0,.5,1,0,0,0,2),3,3)y <- mvrnorm(1000,mn,sig)mod <- MVNresponse(y~1)fit(mod)colMeans(y)var(y)# normal (gaussian) response modely <- rnorm(1000)mod <- GLMresponse(y~1)fm <- fit(mod)cat("Test gaussian fit: ", all.equal(getpars(fm),c(mean(y),sd(y)),check.attributes=FALSE))# poisson response modelx <- abs(rnorm(1000,2))res <- rpois(1000,x)mod <- GLMresponse(res~x,family=poisson())fit(mod)glm(res~x, family=poisson)# this creates data with a single change point with Poisson distributed dataset.seed(3)y1 <- rpois(50,1)y2 <- rpois(50,2)ydf <- data.frame(y=c(y1,y2))# fit models with 1 to 3 statesm1 <- depmix(y~1,ns=1,family=poisson(),data=ydf)fm1 <- fit(m1)m2 <- depmix(y~1,ns=2,family=poisson(),data=ydf)fm2 <- fit(m2)m3 <- depmix(y~1,ns=3,family=poisson(),data=ydf)fm3 <- fit(m3,em=em.control(maxit=500))# plot the BICs to select the proper modelplot(1:3,c(BIC(fm1),BIC(fm2),BIC(fm3)),ty="b")