predict.clm2
Predict Method for CLM fits
Obtains predictions from a cumulative link (mixed) model.
- Keywords
- internal
Usage
# S3 method for clm2
predict(object, newdata, ...)
Arguments
- object
a fitted object of class inheriting from
clm2
includingclmm2
objects.- newdata
optionally, a data frame in which to look for variables with which to predict. Observe that the response variable should also be present.
- …
further arguments passed to or from other methods.
Details
This method does not duplicate the behavior of
predict.polr
in package MASS
which produces a
matrix instead of a vector of predictions. The behavior of
predict.polr
can be mimiced as shown in the examples.
If newdata
is not supplied, the fitted values are obtained. For
clmm2
fits this means predictions that are controlled for the
observed value of the random effects. If the predictions for a
random effect of zero, i.e. an average 'subject', are wanted, the same
data used to fit the model should be supplied in the newdata
argument. For clm2
fits those two sets of predictions are
identical.
Value
A vector of predicted probabilities.
See Also
Examples
# NOT RUN {
options(contrasts = c("contr.treatment", "contr.poly"))
## More manageable data set for less voluminous printing:
(tab26 <- with(soup, table("Product" = PROD, "Response" = SURENESS)))
dimnames(tab26)[[2]] <- c("Sure", "Not Sure", "Guess", "Guess", "Not Sure", "Sure")
dat26 <- expand.grid(sureness = as.factor(1:6), prod = c("Ref", "Test"))
dat26$wghts <- c(t(tab26))
dat26
m1 <- clm2(sureness ~ prod, scale = ~prod, data = dat26,
weights = wghts, link = "logistic")
predict(m1)
mN1 <- clm2(sureness ~ 1, nominal = ~prod, data = dat26,
weights = wghts)
predict(mN1)
predict(update(m1, scale = ~.-prod))
#################################
## Mimicing the behavior of predict.polr:
if(require(MASS)) {
## Fit model from polr example:
fm1 <- clm2(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
predict(fm1)
set.seed(123)
nlev <- 3
y <- gl(nlev, 5)
x <- as.numeric(y) + rnorm(15)
fm.clm <- clm2(y ~ x)
fm.polr <- polr(y ~ x)
## The equivalent of predict.polr(object, type = "probs"):
(pmat.polr <- predict(fm.polr, type = "probs"))
ndat <- expand.grid(y = gl(nlev,1), x = x)
(pmat.clm <- matrix(predict(fm.clm, newdata = ndat), ncol=nlev,
byrow = TRUE))
all.equal(c(pmat.clm), c(pmat.polr), tol = 1e-5) # TRUE
## The equivalent of predict.polr(object, type = "class"):
(class.polr <- predict(fm.polr))
(class.clm <- factor(apply(pmat.clm, 1, which.max)))
all.equal(class.clm, class.polr) ## TRUE
}
# }