cvGEE calculates cross-validated versions of the logarithmic, quadratic and spherical scoring rules based on generalized estimating equations.
The package presumes that the GEE has been solved using the
geeglm()
function of the geepack.
For family = gaussian()
only the quadratic rule is
available calculated as the squared prediction error; lower values
indicate a better predictive ability.
For family = binomial()
and dichotomous outcome data
the probabilities for the two categories are calculated from the
Bernoulli probability mass function. For
family = binomial()
and binomial data the probabilities for
each possible response are calculated from a beta-binomial distribution
with variance set equal to the variance from the corresponding
quasi-likelihood behind the GEE. Likewise for
family = poisson()
the probabilities for the number of
events up to a particular maximum (set using the max_count
argument) are calculated using the negative binomial distribution with
variance set equal to the variance from the corresponding
quasi-likelihood behind the GEE. For these families all three scoring
rules are available, with higher values in each rule indicating better
predictive ability.
We compare a linear and a nonlinear GEE for the dichotomized version of the serum bilirubin biomarker from the PBC dataset:
library("geepack")
library("cvGEE")
library("splines")
library("lattice")
$serBilirD <- as.numeric(pbc2$serBilir > 1.2)
pbc2
<- geeglm(serBilirD ~ year * drug,
gm1 family = binomial(), data = pbc2, id = id,
corstr = "exchangeable")
<- geeglm(serBilirD ~ ns(year, 3, Boundary.knots = c(0, 10)) * drug,
gm2 family = binomial(), data = pbc2, id = id,
corstr = "exchangeable")
<- cv_gee(gm1, return_data = TRUE)
plot_data $linear <- plot_data$.score
plot_data$non_linear <- unlist(cv_gee(gm2))
plot_data
xyplot(linear + non_linear ~ year | .rule, data = plot_data,
type = "smooth", auto.key = TRUE, layout = c(3, 1),
scales = list(y = list(relation = "free")),
xlab = "Follow-up time (years)", ylab = "Scoring Rules")
The development version of the package can be installed from GitHub using the devtools package:
::install_github("drizopoulos/cvGEE") devtools
and with vignettes
::install_github("drizopoulos/cvGEE", build_vignettes = TRUE) devtools