Nothing
# These functions are
# Copyright (C) 1998-2024 T.W. Yee, University of Auckland.
# All rights reserved.
cao <-
function(formula,
family = stop("argument 'family' needs to be assigned"),
data = list(),
weights = NULL, subset = NULL, na.action = na.fail,
etastart = NULL, mustart = NULL, coefstart = NULL,
control = cao.control(...),
offset = NULL,
method = "cao.fit",
model = FALSE, x.arg = TRUE, y.arg = TRUE,
contrasts = NULL,
constraints = NULL,
extra = NULL,
qr.arg = FALSE, smart = TRUE, ...) {
dataname <- as.character(substitute(data)) # "list" if no data=
function.name <- "cao"
ocall <- match.call()
if (smart)
setup.smart("write")
mt <- terms(formula, data = data)
if (missing(data))
data <- environment(formula)
mf <- match.call(expand.dots = FALSE)
mf$family <- mf$method <- mf$model <- mf$x.arg <- mf$y.arg <-
mf$control <-
mf$contrasts <- mf$constraints <- mf$extra <- mf$qr.arg <- NULL
mf$coefstart <- mf$etastart <- mf$... <- NULL
mf$smart <- NULL
mf$drop.unused.levels <- TRUE
mf[[1]] <- as.name("model.frame")
mf <- eval(mf, parent.frame())
if (method == "model.frame")
return(mf)
na.act <- attr(mf, "na.action")
xvars <- as.character(attr(mt, "variables"))[-1]
if ((yvar <- attr(mt, "response")) > 0)
xvars <- xvars[-yvar]
xlev <- if (length(xvars) > 0) {
xlev <- lapply(mf[xvars], levels)
xlev[!sapply(xlev, is.null)]
}
y <- model.response(mf, "numeric") # model.extract(mf, "response")
x <- model.matrix(mt, mf, contrasts)
attr(x, "assign") <- attrassigndefault(x, mt)
offset <- model.offset(mf)
if (is.null(offset))
offset <- 0 # yyy ???
w <- model.weights(mf)
if (!length(w)) {
w <- rep_len(1, nrow(mf))
} else if (NCOL(w) == 1 && any(w < 0))
stop("negative weights not allowed")
if (is.character(family))
family <- get(family)
if (is.function(family))
family <- family()
if (!inherits(family, "vglmff")) {
stop("'family = ", family, "' is not a VGAM family function")
}
eval(vcontrol.expression)
if (!is.null(family@first))
eval(family@first)
cao.fitter <- get(method)
deviance.Bestof <- rep_len(NA_real_, control$Bestof)
for (tries in 1:control$Bestof) {
if (control$trace && (control$Bestof > 1)) {
cat(paste("\n========================= Fitting model",
tries, "=========================\n"))
if (exists("flush.console"))
flush.console()
}
onefit <-
cao.fitter(x = x, y = y, w = w, offset = offset,
etastart = etastart, mustart = mustart,
coefstart = coefstart,
family = family,
control = control,
constraints = constraints,
criterion = control$criterion,
extra = extra,
qr.arg = qr.arg,
Terms = mt, function.name = function.name, ...)
deviance.Bestof[tries] <- onefit$crit.list$deviance
if (tries == 1 ||
min(deviance.Bestof[1:(tries-1)]) > deviance.Bestof[tries])
fit <- onefit
}
fit$misc$deviance.Bestof <- deviance.Bestof
fit$misc$dataname <- dataname
if (smart) {
fit$smart.prediction <- get.smart.prediction()
wrapup.smart()
}
answer <-
new("rrvgam",
"assign" = attr(x, "assign"),
"Bspline" = fit$Bspline,
"call" = ocall,
"coefficients" = fit$coefficients,
"criterion" = fit$crit.list,
"family" = fit$family,
"misc" = fit$misc,
"model" = if (model) mf else data.frame(),
"residuals" = as.matrix(fit$wresiduals),
"smart.prediction" = as.list(fit$smart.prediction),
"terms" = list(terms = mt))
if (!smart)
answer@smart.prediction <- list(smart.arg = FALSE)
if (qr.arg) {
class(fit$qr) <- "list"
slot(answer, "qr") <- fit$qr
}
if (length(attr(x, "contrasts")))
slot(answer, "contrasts") <- attr(x, "contrasts")
if (length(fit$fitted.values))
slot(answer, "fitted.values") <- as.matrix(fit$fitted.values)
slot(answer, "na.action") <-
if (length(na.act)) list(na.act) else list()
if (length(offset))
slot(answer, "offset") <- as.matrix(offset)
if (length(fit$weights))
slot(answer, "weights") <- as.matrix(fit$weights)
if (x.arg)
slot(answer, "x") <- fit$x # The 'small' design matrix
if (length(xlev))
slot(answer, "xlevels") <- xlev
if (y.arg)
slot(answer, "y") <- as.matrix(fit$y)
slot(answer, "control") <- fit$control
slot(answer, "extra") <- if (length(fit$extra)) {
if (is.list(fit$extra)) fit$extra else {
warning("'extra' is not a list, therefore ",
"placing 'extra' into a list")
list(fit$extra)
}
} else list() # R-1.5.0
slot(answer, "iter") <- fit$iter
fit$predictors <- as.matrix(fit$predictors) # Must be a matrix
dimnames(fit$predictors) <- list(dimnames(fit$predictors)[[1]],
fit$misc$predictors.names)
slot(answer, "predictors") <- fit$predictors
if (length(fit$prior.weights))
slot(answer, "prior.weights") <- as.matrix(fit$prior.weights)
answer
}
attr(cao, "smart") <- TRUE
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.