Nothing
### R code from vignette source 'regression-examples.Rnw'
###################################################
### code chunk number 1: regression-examples.Rnw:11-14
###################################################
library("stats")
library("graphics")
library("flexmix")
###################################################
### code chunk number 2: start
###################################################
options(width=70, prompt = "R> ", continue = "+ ", useFancyQuotes = FALSE)
suppressWarnings(RNGversion("3.5.0"))
set.seed(1802)
library("lattice")
ltheme <- canonical.theme("postscript", FALSE)
lattice.options(default.theme=ltheme)
###################################################
### code chunk number 3: NregFix
###################################################
set.seed(2807)
library("flexmix")
data("NregFix", package = "flexmix")
Model <- FLXMRglm(~ x2 + x1)
fittedModel <- stepFlexmix(y ~ 1, model = Model, nrep = 3, k = 3,
data = NregFix, concomitant = FLXPmultinom(~ w))
fittedModel <- relabel(fittedModel, "model", "x1")
summary(refit(fittedModel))
###################################################
### code chunk number 4: diffModel
###################################################
Model2 <- FLXMRglmfix(fixed = ~ x2, nested = list(k = c(1, 2),
formula = c(~ 0, ~ x1)), varFix = TRUE)
fittedModel2 <- flexmix(y ~ 1, model = Model2,
cluster = posterior(fittedModel), data = NregFix,
concomitant = FLXPmultinom(~ w))
BIC(fittedModel)
BIC(fittedModel2)
###################################################
### code chunk number 5: artificial-example
###################################################
plotNregFix <- NregFix
plotNregFix$w <- factor(NregFix$w, levels = 0:1, labels = paste("w =", 0:1))
plotNregFix$x2 <- factor(NregFix$x2, levels = 0:1,
labels = paste("x2 =", 0:1))
plotNregFix$class <- factor(NregFix$class, levels = 1:3, labels = paste("Class", 1:3))
print(xyplot(y ~ x1 | x2*w, groups = class, data = plotNregFix, cex = 0.6,
auto.key = list(space="right"), layout = c(2,2)))
###################################################
### code chunk number 6: refit
###################################################
summary(refit(fittedModel2))
###################################################
### code chunk number 7: beta-glm
###################################################
data("betablocker", package = "flexmix")
betaGlm <- glm(cbind(Deaths, Total - Deaths) ~ Treatment,
family = "binomial", data = betablocker)
betaGlm
###################################################
### code chunk number 8: beta-fix
###################################################
betaMixFix <- stepFlexmix(cbind(Deaths, Total - Deaths) ~ 1 | Center,
model = FLXMRglmfix(family = "binomial", fixed = ~ Treatment),
k = 2:4, nrep = 3, data = betablocker)
betaMixFix
###################################################
### code chunk number 9: beta-fig
###################################################
library("grid")
betaMixFix_3 <- getModel(betaMixFix, "3")
betaMixFix_3 <- relabel(betaMixFix_3, "model", "Intercept")
betablocker$Center <- with(betablocker, factor(Center, levels = Center[order((Deaths/Total)[1:22])]))
clusters <- factor(clusters(betaMixFix_3), labels = paste("Cluster", 1:3))
print(dotplot(Deaths/Total ~ Center | clusters, groups = Treatment, as.table = TRUE,
data = betablocker, xlab = "Center", layout = c(3, 1), scales = list(x = list(draw = FALSE)),
key = simpleKey(levels(betablocker$Treatment), lines = TRUE, corner = c(1,0))))
betaMixFix.fitted <- fitted(betaMixFix_3)
for (i in 1:3) {
seekViewport(trellis.vpname("panel", i, 1))
grid.lines(unit(1:22, "native"), unit(betaMixFix.fitted[1:22, i], "native"), gp = gpar(lty = 1))
grid.lines(unit(1:22, "native"), unit(betaMixFix.fitted[23:44, i], "native"), gp = gpar(lty = 2))
}
###################################################
### code chunk number 10: beta-full
###################################################
betaMix <- stepFlexmix(cbind(Deaths, Total - Deaths) ~ Treatment | Center,
model = FLXMRglm(family = "binomial"), k = 3, nrep = 3,
data = betablocker)
summary(betaMix)
###################################################
### code chunk number 11: default-plot
###################################################
print(plot(betaMixFix_3, mark = 1, col = "grey", markcol = 1))
###################################################
### code chunk number 12: parameters
###################################################
parameters(betaMix)
###################################################
### code chunk number 13: cluster
###################################################
table(clusters(betaMix))
###################################################
### code chunk number 14: predict
###################################################
predict(betaMix,
newdata = data.frame(Treatment = c("Control", "Treated")))
###################################################
### code chunk number 15: fitted
###################################################
fitted(betaMix)[c(1, 23), ]
###################################################
### code chunk number 16: refit
###################################################
summary(refit(getModel(betaMixFix, "3")))
###################################################
### code chunk number 17: mehta-fix
###################################################
data("Mehta", package = "flexmix")
mehtaMix <- stepFlexmix(cbind(Response, Total - Response)~ 1 | Site,
model = FLXMRglmfix(family = "binomial", fixed = ~ Drug),
control = list(minprior = 0.04), nrep = 3, k = 3, data = Mehta)
summary(mehtaMix)
###################################################
### code chunk number 18: mehta-fig
###################################################
Mehta$Site <- with(Mehta, factor(Site, levels = Site[order((Response/Total)[1:22])]))
clusters <- factor(clusters(mehtaMix), labels = paste("Cluster", 1:3))
print(dotplot(Response/Total ~ Site | clusters, groups = Drug, layout = c(3,1),
data = Mehta, xlab = "Site", scales = list(x = list(draw = FALSE)),
key = simpleKey(levels(Mehta$Drug), lines = TRUE, corner = c(1,0))))
mehtaMix.fitted <- fitted(mehtaMix)
for (i in 1:3) {
seekViewport(trellis.vpname("panel", i, 1))
sapply(1:nlevels(Mehta$Drug), function(j)
grid.lines(unit(1:22, "native"), unit(mehtaMix.fitted[Mehta$Drug == levels(Mehta$Drug)[j], i], "native"), gp = gpar(lty = j)))
}
###################################################
### code chunk number 19: mehta-full
###################################################
mehtaMix <- stepFlexmix(cbind(Response, Total - Response) ~ Drug | Site,
model = FLXMRglm(family = "binomial"), k = 3, data = Mehta, nrep = 3,
control = list(minprior = 0.04))
summary(mehtaMix)
###################################################
### code chunk number 20: mehta-sub
###################################################
Mehta.sub <- subset(Mehta, Site != 15)
mehtaMix <- stepFlexmix(cbind(Response, Total - Response) ~ 1 | Site,
model = FLXMRglmfix(family = "binomial", fixed = ~ Drug),
data = Mehta.sub, k = 2, nrep = 3)
summary(mehtaMix)
###################################################
### code chunk number 21: tribolium
###################################################
data("tribolium", package = "flexmix")
TribMix <- stepFlexmix(cbind(Remaining, Total - Remaining) ~ 1,
k = 2:3, model = FLXMRglmfix(fixed = ~ Species, family = "binomial"),
concomitant = FLXPmultinom(~ Replicate), data = tribolium)
###################################################
### code chunk number 22: wang-model
###################################################
modelWang <- FLXMRglmfix(fixed = ~ I(Species == "Confusum"),
family = "binomial")
concomitantWang <- FLXPmultinom(~ I(Replicate == 3))
TribMixWang <- stepFlexmix(cbind(Remaining, Total - Remaining) ~ 1,
data = tribolium, model = modelWang, concomitant = concomitantWang,
k = 2)
summary(refit(TribMixWang))
###################################################
### code chunk number 23: tribolium
###################################################
clusters <- factor(clusters(TribMixWang), labels = paste("Cluster", 1:TribMixWang@k))
print(dotplot(Remaining/Total ~ factor(Replicate) | clusters, groups = Species,
data = tribolium[rep(1:9, each = 3) + c(0:2)*9,], xlab = "Replicate",
auto.key = list(corner = c(1,0))))
###################################################
### code chunk number 24: subset
###################################################
TribMixWangSub <- stepFlexmix(cbind(Remaining, Total - Remaining) ~ 1,
k = 2, data = tribolium[-7,], model = modelWang,
concomitant = concomitantWang)
###################################################
### code chunk number 25: trypanosome
###################################################
data("trypanosome", package = "flexmix")
TrypMix <- stepFlexmix(cbind(Dead, 1-Dead) ~ 1, k = 2, nrep = 3,
data = trypanosome, model = FLXMRglmfix(family = "binomial",
fixed = ~ log(Dose)))
summary(refit(TrypMix))
###################################################
### code chunk number 26: trypanosome
###################################################
tab <- with(trypanosome, table(Dead, Dose))
Tryp.dat <- data.frame(Dead = tab["1",], Alive = tab["0",],
Dose = as.numeric(colnames(tab)))
plot(Dead/(Dead+Alive) ~ Dose, data = Tryp.dat)
Tryp.pred <- predict(glm(cbind(Dead, 1-Dead) ~ log(Dose), family = "binomial", data = trypanosome), newdata=Tryp.dat, type = "response")
TrypMix.pred <- predict(TrypMix, newdata = Tryp.dat, aggregate = TRUE)[[1]]
lines(Tryp.dat$Dose, Tryp.pred, lty = 2)
lines(Tryp.dat$Dose, TrypMix.pred, lty = 3)
legend(4.7, 1, c("GLM", "Mixture model"), lty=c(2, 3), xjust=0, yjust=1)
###################################################
### code chunk number 27: fabric-fix
###################################################
data("fabricfault", package = "flexmix")
fabricMix <- stepFlexmix(Faults ~ 1, model = FLXMRglmfix(family="poisson",
fixed = ~ log(Length)), data = fabricfault, k = 2, nrep = 3)
summary(fabricMix)
summary(refit(fabricMix))
Lnew <- seq(0, 1000, by = 50)
fabricMix.pred <- predict(fabricMix, newdata = data.frame(Length = Lnew))
###################################################
### code chunk number 28: fabric-fix-nested
###################################################
fabricMix2 <- flexmix(Faults ~ 0, data = fabricfault,
cluster = posterior(fabricMix),
model = FLXMRglmfix(family = "poisson", fixed = ~ log(Length),
nested = list(k=c(1,1), formula=list(~0,~1))))
summary(refit(fabricMix2))
fabricMix2.pred <- predict(fabricMix2,
newdata = data.frame(Length = Lnew))
###################################################
### code chunk number 29: fabric-fig
###################################################
plot(Faults ~ Length, data = fabricfault)
sapply(fabricMix.pred, function(y) lines(Lnew, y, lty = 1))
sapply(fabricMix2.pred, function(y) lines(Lnew, y, lty = 2))
legend(190, 25, paste("Model", 1:2), lty=c(1, 2), xjust=0, yjust=1)
###################################################
### code chunk number 30: patent
###################################################
data("patent", package = "flexmix")
ModelPat <- FLXMRglm(family = "poisson")
FittedPat <- stepFlexmix(Patents ~ lgRD, k = 3, nrep = 3,
model = ModelPat, data = patent, concomitant = FLXPmultinom(~ RDS))
summary(FittedPat)
###################################################
### code chunk number 31: patent-fixed
###################################################
ModelFixed <- FLXMRglmfix(family = "poisson", fixed = ~ lgRD)
FittedPatFixed <- flexmix(Patents ~ 1, model = ModelFixed,
cluster = posterior(FittedPat), concomitant = FLXPmultinom(~ RDS),
data = patent)
summary(FittedPatFixed)
###################################################
### code chunk number 32: Poisson
###################################################
lgRDv <- seq(-3, 5, by = 0.05)
newdata <- data.frame(lgRD = lgRDv)
plotData <- function(fitted) {
with(patent, data.frame(Patents = c(Patents,
unlist(predict(fitted, newdata = newdata))),
lgRD = c(lgRD, rep(lgRDv, 3)),
class = c(clusters(fitted), rep(1:3, each = nrow(newdata))),
type = rep(c("data", "fit"), c(nrow(patent), nrow(newdata)*3))))
}
plotPatents <- cbind(plotData(FittedPat), which = "Wang et al.")
plotPatentsFixed <- cbind(plotData(FittedPatFixed), which = "Fixed effects")
plotP <- rbind(plotPatents, plotPatentsFixed)
rds <- seq(0, 3, by = 0.02)
x <- model.matrix(FittedPat@concomitant@formula, data = data.frame(RDS = rds))
plotConc <- function(fitted) {
E <- exp(x%*%fitted@concomitant@coef)
data.frame(Probability = as.vector(E/rowSums(E)),
class = rep(1:3, each = nrow(x)),
RDS = rep(rds, 3))
}
plotConc1 <- cbind(plotConc(FittedPat), which = "Wang et al.")
plotConc2 <- cbind(plotConc(FittedPatFixed), which = "Fixed effects")
plotC <- rbind(plotConc1, plotConc2)
print(xyplot(Patents ~ lgRD | which, data = plotP, groups=class, xlab = "log(R&D)",
panel = "panel.superpose", type = plotP$type,
panel.groups = function(x, y, type = "p", subscripts, ...)
{
ind <- plotP$type[subscripts] == "data"
panel.xyplot(x[ind], y[ind], ...)
panel.xyplot(x[!ind], y[!ind], type = "l", ...)
},
scales = list(alternating=FALSE), layout=c(1,2), as.table=TRUE),
more=TRUE, position=c(0,0,0.6, 1))
print(xyplot(Probability ~ RDS | which, groups = class, data = plotC, type = "l",
scales = list(alternating=FALSE), layout=c(1,2), as.table=TRUE),
position=c(0.6, 0.01, 1, 0.99))
###################################################
### code chunk number 33: seizure
###################################################
data("seizure", package = "flexmix")
seizMix <- stepFlexmix(Seizures ~ Treatment * log(Day), data = seizure,
k = 2, nrep = 3, model = FLXMRglm(family = "poisson",
offset = log(seizure$Hours)))
summary(seizMix)
summary(refit(seizMix))
###################################################
### code chunk number 34: seizure
###################################################
seizMix2 <- flexmix(Seizures ~ Treatment * log(Day/27),
data = seizure, cluster = posterior(seizMix),
model = FLXMRglm(family = "poisson", offset = log(seizure$Hours)))
summary(seizMix2)
summary(refit(seizMix2))
###################################################
### code chunk number 35: seizure
###################################################
seizMix3 <- flexmix(Seizures ~ log(Day/27)/Treatment, data = seizure,
cluster = posterior(seizMix), model = FLXMRglm(family = "poisson",
offset = log(seizure$Hours)))
summary(seizMix3)
summary(refit(seizMix3))
###################################################
### code chunk number 36: seizure
###################################################
plot(Seizures/Hours~Day, pch = c(1,3)[as.integer(Treatment)], data=seizure)
abline(v=27.5, lty=2, col="grey")
legend(140, 9, c("Baseline", "Treatment"), pch=c(1, 3), xjust=1, yjust=1)
matplot(seizure$Day, fitted(seizMix)/seizure$Hours, type="l", add=TRUE, lty = 1, col = 1)
matplot(seizure$Day, fitted(seizMix3)/seizure$Hours, type="l", add=TRUE, lty = 3, col = 1)
legend(140, 7, paste("Model", c(1,3)), lty=c(1, 3), xjust=1, yjust=1)
###################################################
### code chunk number 37: salmonella
###################################################
data("salmonellaTA98", package = "flexmix")
salmonMix <- stepFlexmix(y ~ 1, data = salmonellaTA98, k = 2, nrep = 3,
model = FLXMRglmfix(family = "poisson", fixed = ~ x + log(x + 10)))
###################################################
### code chunk number 38: salmonella
###################################################
salmonMix.pr <- predict(salmonMix, newdata=salmonellaTA98)
plot(y~x, data=salmonellaTA98,
pch=as.character(clusters(salmonMix)),
xlab="Dose of quinoline", ylab="Number of revertant colonies of salmonella",
ylim=range(c(salmonellaTA98$y, unlist(salmonMix.pr))))
for (i in 1:2) lines(salmonellaTA98$x, salmonMix.pr[[i]], lty=i)
###################################################
### code chunk number 39: regression-examples.Rnw:923-927
###################################################
SI <- sessionInfo()
pkgs <- paste(sapply(c(SI$otherPkgs, SI$loadedOnly), function(x)
paste("\\\\pkg{", x$Package, "} ",
x$Version, sep = "")), collapse = ", ")
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.