Raw File
quickle.R

library(aster)

data(radish)

options(digits=4) # avoid rounding differences

pred <- c(0,1,2)
fam <- c(1,3,2)

### try reaster

rout <- reaster(resp ~ varb + fit : (Site * Region),
    list(block = ~ 0 + fit : Block, pop = ~ 0 + fit : Pop),
    pred, fam, varb, id, root, data = radish)
summary(rout)
names(rout)

alpha.mle <- rout$alpha
bee.mle <- rout$b
nu.mle <- rout$sigma^2
zwz.mle <- rout$zwz
obj <- rout$obj
fixed <- rout$fixed
random <- rout$random
alphanu.mle <- c(alpha.mle, nu.mle)

qout <- quickle(alphanu.mle, bee.mle, fixed, random, obj,
    zwz = zwz.mle, deriv = 2)

objfun <- function(alphanu) quickle(alphanu, bee.mle, fixed, random,
    obj, zwz = zwz.mle)$value
gradfun <- function(alphanu) quickle(alphanu, bee.mle, fixed, random,
    obj, zwz = zwz.mle, deriv = 1)$gradient
oout <- optim(alphanu.mle, objfun, gradfun, method = "BFGS", hessian = TRUE)
all.equal(qout$hessian, oout$hessian, check.attributes = FALSE,
    tolerance = 0.002)

back to top