density_scores {weird} | R Documentation |
Density scores
Description
Compute density scores or leave-one-out density scores from a model or a kernel density estimate of a data set. The density scores are defined as minus the log of the conditional density, or kernel density estimate, at each observation. The leave-one-out density scores (or LOO density scores) are obtained by estimating the conditional density or kernel density estimate using all other observations.
Usage
density_scores(object, loo = FALSE, ...)
## Default S3 method:
density_scores(
object,
loo = FALSE,
h = kde_bandwidth(object, method = "double"),
H = kde_bandwidth(object, method = "double"),
...
)
## S3 method for class 'kde'
density_scores(object, loo = FALSE, ...)
## S3 method for class 'lm'
density_scores(object, loo = FALSE, ...)
## S3 method for class 'gam'
density_scores(object, loo = FALSE, ...)
Arguments
object |
A model object or a numerical data set. |
loo |
Should leave-one-out density scores be computed? |
... |
Other arguments are ignored. |
h |
Bandwidth for univariate kernel density estimate. Default is |
H |
Bandwidth for multivariate kernel density estimate. Default is |
Details
If the first argument is a numerical vector or matrix, then a kernel density estimate is computed, using a Gaussian kernel, with default bandwidth given by a robust normal reference rule. Otherwise the model is used to compute the conditional density function at each observation, from which the density scores (or possibly the LOO density scores) are obtained.
Value
A numerical vector containing either the density scores, or the LOO density scores.
Author(s)
Rob J Hyndman
See Also
Examples
# Density scores computed from bivariate data set
of <- oldfaithful |>
filter(duration < 7000, waiting < 7000) |>
mutate(
fscores = density_scores(cbind(duration, waiting)),
loo_fscores = density_scores(cbind(duration, waiting), loo = TRUE),
lookout_prob = lookout(density_scores = fscores, loo_scores = loo_fscores)
)
of |>
ggplot(aes(x = duration, y = waiting, color = lookout_prob < 0.01)) +
geom_point()
# Density scores computed from bivariate KDE
f_kde <- kde(of[, 2:3], H = kde_bandwidth(of[, 2:3]))
of |>
mutate(
fscores = density_scores(f_kde),
loo_fscores = density_scores(f_kde, loo = TRUE)
)
# Density scores computed from linear model
of <- oldfaithful |>
filter(duration < 7200, waiting < 7200)
lm_of <- lm(waiting ~ duration, data = of)
of |>
mutate(
fscore = density_scores(lm_of),
loo_fscore = density_scores(lm_of, loo = TRUE),
lookout_prob = lookout(density_scores = fscore, loo_scores = loo_fscore)
) |>
ggplot(aes(x = duration, y = waiting, color = lookout_prob < 0.02)) +
geom_point()
# Density scores computed from GAM
of <- oldfaithful |>
filter(duration > 1, duration < 7200, waiting < 7200)
gam_of <- mgcv::gam(waiting ~ s(duration), data = of)
of |>
mutate(
fscore = density_scores(gam_of),
lookout_prob = lookout(density_scores = fscore)
) |>
filter(lookout_prob < 0.02)