https://github.com/cran/aster
Tip revision: 30dd0361d35879f8979ff405c11271e23686d40f authored by Charles J. Geyer on 09 July 2007, 00:00:00 UTC
version 0.7-2
version 0.7-2
Tip revision: 30dd036
tutor.R
library(aster)
data(echinacea)
names(echinacea)
sapply(echinacea, class)
vars <- c("ld02", "ld03", "ld04", "fl02", "fl03", "fl04",
"hdct02", "hdct03", "hdct04")
redata <- reshape(echinacea, varying = list(vars),
direction = "long", timevar = "varb", times = as.factor(vars),
v.names = "resp")
names(redata)
redata <- data.frame(redata, root = 1)
names(redata)
pred <- c(0, 1, 2, 1, 2, 3, 4, 5, 6)
fam <- c(1, 1, 1, 1, 1, 1, 3, 3, 3)
hdct <- grep("hdct", as.character(redata$varb))
hdct <- is.element(seq(along = redata$varb), hdct)
redata <- data.frame(redata, hdct = as.integer(hdct))
names(redata)
###################################################
### chunk number 16: fit-4
###################################################
aout4 <- aster(resp ~ varb + nsloc + ewloc + pop * hdct - pop,
pred, fam, varb, id, root, data = redata)
summary(aout4, show.graph = TRUE)
###################################################
### chunk number 18: conf-level
###################################################
conf.level <- 0.95
crit <- qnorm((1 + conf.level) / 2)
###################################################
### chunk number 22: predict-newdata
###################################################
newdata <- data.frame(pop = levels(echinacea$pop))
for (v in vars)
newdata[[v]] <- 1
newdata$root <- 1
newdata$ewloc <- 0
newdata$nsloc <- 0
###################################################
### chunk number 23: predict-newdata-reshape
###################################################
renewdata <- reshape(newdata, varying = list(vars),
direction = "long", timevar = "varb", times = as.factor(vars),
v.names = "resp")
hdct <- grep("hdct", as.character(renewdata$varb))
hdct <- is.element(seq(along = renewdata$varb), hdct)
renewdata <- data.frame(renewdata, hdct = as.integer(hdct))
names(redata)
names(renewdata)
###################################################
### chunk number 24: make-amat
###################################################
nind <- nrow(newdata)
nnode <- length(vars)
amat <- array(0, c(nind, nnode, nind))
for (i in 1:nind)
amat[i , grep("hdct", vars), i] <- 1
###################################################
### chunk number 30: tau-4-amat
###################################################
pout4 <- predict(aout4, varvar = varb, idvar = id, root = root,
newdata = renewdata, se.fit = TRUE, amat = amat)
###################################################
### chunk number 36: make-theta
###################################################
theta.hat <- predict(aout4, model.type = "cond", parm.type = "canon")
theta.hat <- matrix(theta.hat, nrow = nrow(aout4$x), ncol = ncol(aout4$x))
fit.hat <- pout4$fit
beta.hat <- aout4$coefficients
###################################################
### chunk number 37: make-root-etc
###################################################
root <- aout4$root
modmat <- aout4$modmat
modmat.pred <- pout4$modmat
x.pred <- matrix(1, nrow = dim(modmat.pred)[1], ncol = dim(modmat.pred)[2])
root.pred <- x.pred
###################################################
### save and restore
###################################################
quux <- list(fit.hat = fit.hat, theta.hat = theta.hat,
pred.orig = pred, fam.orig = fam, root.orig = root,
modmat.orig = modmat, beta.hat = beta.hat,
x.pred = x.pred, root.pred = root.pred, modmat.pred = modmat.pred,
amat.orig = amat, crit.orig = crit)
save(quux, file = "tutor.save.bork.bork.bork.RData")
rm(list = ls(all.names = TRUE))
load(file = "tutor.save.bork.bork.bork.RData")
unlink("tutor.save.bork.bork.bork.RData")
attach(quux)
ls(pos = 2)
###################################################
### chunk number 38: doit
###################################################
set.seed(42)
nboot <- 5
cover <- matrix(0, nboot, length(fit.hat))
niter <- NULL
cpu <- proc.time()[1]
beta.star <- matrix(NA, nboot, length(beta.hat))
for (iboot in 1:nboot) {
xstar <- raster(theta.hat, pred.orig, fam.orig, root.orig)
aout4star <- aster(xstar, root.orig, pred.orig, fam.orig,
modmat.orig, beta.hat)
niter <- rbind(niter, aout4star$iter)
beta.star[iboot, ] <- aout4star$coefficients
pout4star <- predict(aout4star, x.pred, root.pred, modmat.pred,
amat.orig, se.fit = TRUE)
upper <- pout4star$fit + crit.orig * pout4star$se.fit
lower <- pout4star$fit - crit.orig * pout4star$se.fit
cover[iboot, ] <- as.numeric(lower <= fit.hat & fit.hat <= upper)
}
pboot <- apply(cover, 2, mean)
pboot.se <- sqrt(pboot * (1 - pboot) / nboot)
print(cbind(pboot, pboot.se))
niter.save <- cbind(niter)
cpu.save <- proc.time()[1] - cpu
beta.star.trust <- beta.star
###################################################
### chunk number 38: doit (again)
###################################################
set.seed(42)
nboot <- 5
cover <- matrix(0, nboot, length(fit.hat))
niter <- NULL
cpu <- proc.time()[1]
for (iboot in 1:nboot) {
xstar <- raster(theta.hat, pred.orig, fam.orig, root.orig)
aout4star <- aster(xstar, root.orig, pred.orig, fam.orig,
modmat.orig, beta.hat, method = "CG", maxiter = 1e5)
niter <- rbind(niter, aout4star$iter)
beta.star[iboot, ] <- aout4star$coefficients
pout4star <- predict(aout4star, x.pred, root.pred, modmat.pred,
amat.orig, se.fit = TRUE)
upper <- pout4star$fit + crit.orig * pout4star$se.fit
lower <- pout4star$fit - crit.orig * pout4star$se.fit
cover[iboot, ] <- as.numeric(lower <= fit.hat & fit.hat <= upper)
}
pboot <- apply(cover, 2, mean)
pboot.se <- sqrt(pboot * (1 - pboot) / nboot)
print(cbind(pboot, pboot.se))
niter.save <- cbind(niter.save, niter)
cpu.save <- c(cpu.save, proc.time()[1] - cpu)
all.equal(beta.star.trust, beta.star)
###################################################
### chunk number 38: doit (yet again)
###################################################
set.seed(42)
nboot <- 5
cover <- matrix(0, nboot, length(fit.hat))
niter <- NULL
cpu <- proc.time()[1]
for (iboot in 1:nboot) {
xstar <- raster(theta.hat, pred.orig, fam.orig, root.orig)
aout4star <- aster(xstar, root.orig, pred.orig, fam.orig,
modmat.orig, beta.hat, method = "L-B")
niter <- rbind(niter, aout4star$iter)
beta.star[iboot, ] <- aout4star$coefficients
pout4star <- predict(aout4star, x.pred, root.pred, modmat.pred,
amat.orig, se.fit = TRUE)
upper <- pout4star$fit + crit.orig * pout4star$se.fit
lower <- pout4star$fit - crit.orig * pout4star$se.fit
cover[iboot, ] <- as.numeric(lower <= fit.hat & fit.hat <= upper)
}
pboot <- apply(cover, 2, mean)
pboot.se <- sqrt(pboot * (1 - pboot) / nboot)
print(cbind(pboot, pboot.se))
niter.save <- cbind(niter.save, niter)
cpu.save <- c(cpu.save, proc.time()[1] - cpu)
all.equal(beta.star.trust, beta.star)
###################################################
### chunk number 38: doit (one mo time)
###################################################
set.seed(42)
nboot <- 5
cover <- matrix(0, nboot, length(fit.hat))
niter <- NULL
cpu <- proc.time()[1]
for (iboot in 1:nboot) {
xstar <- raster(theta.hat, pred.orig, fam.orig, root.orig)
aout4star <- aster(xstar, root.orig, pred.orig, fam.orig,
modmat.orig, beta.hat, method = "nlm", check.analyticals = FALSE)
niter <- rbind(niter, aout4star$iter)
beta.star[iboot, ] <- aout4star$coefficients
pout4star <- predict(aout4star, x.pred, root.pred, modmat.pred,
amat.orig, se.fit = TRUE)
upper <- pout4star$fit + crit.orig * pout4star$se.fit
lower <- pout4star$fit - crit.orig * pout4star$se.fit
cover[iboot, ] <- as.numeric(lower <= fit.hat & fit.hat <= upper)
}
pboot <- apply(cover, 2, mean)
pboot.se <- sqrt(pboot * (1 - pboot) / nboot)
print(cbind(pboot, pboot.se))
niter.save <- cbind(niter.save, niter)
cpu.save <- c(cpu.save, proc.time()[1] - cpu)
all.equal(beta.star.trust, beta.star)
# dimnames(niter.save) <- list(NULL, c("trust", "CG", "L-BFGS-B", "nlm"))
niter.save
cpu.save
length(beta.hat)