Learn R Programming

VGAM (version 1.0-5)

dhuber: Huber's Least Favourable Distribution

Description

Density, distribution function, quantile function and random generation for Huber's least favourable distribution, see Huber and Ronchetti (2009).

Usage

dhuber(x, k = 0.862, mu = 0, sigma = 1, log = FALSE)
edhuber(x, k = 0.862, mu = 0, sigma = 1, log = FALSE)
 rhuber(n, k = 0.862, mu = 0, sigma = 1)
 qhuber(p, k = 0.862, mu = 0, sigma = 1, lower.tail = TRUE, log.p = FALSE)
 phuber(q, k = 0.862, mu = 0, sigma = 1, lower.tail = TRUE, log.p = FALSE)

Arguments

x, q

numeric vector, vector of quantiles.

p

vector of probabilities.

n

number of random values to be generated. If length(n) > 1 then the length is taken to be the number required.

k

numeric. Borderline value of central Gaussian part of the distribution. This is known as the tuning constant, and should be positive. For example, k = 0.862 refers to a 20% contamination neighborhood of the Gaussian distribution. If k = 1.40 then this is 5% contamination.

mu

numeric. distribution mean.

sigma

numeric. Distribution scale (sigma = 1 defines the distribution in standard form, with standard Gaussian centre).

log

Logical. If log = TRUE then the logarithm of the result is returned.

lower.tail, log.p

Same meaning as in pnorm or qnorm.

Value

dhuber gives out a vector of density values.

edhuber gives out a list with components val (density values) and eps (contamination proportion).

rhuber gives out a vector of random numbers generated by Huber's least favourable distribution.

phuber gives the distribution function, qhuber gives the quantile function.

Details

Details are given in huber2, the VGAM family function for estimating the parameters mu and sigma.

See Also

huber2.

Examples

Run this code
# NOT RUN {
set.seed(123456)
edhuber(1:5, k = 1.5)
rhuber(5)

# }
# NOT RUN {
 mu <- 3; xx <- seq(-2, 7, len = 100)  # Plot CDF and PDF
plot(xx, dhuber(xx, mu = mu), type = "l", col = "blue", las = 1, ylab = "",
     main = "blue is density, orange is cumulative distribution function",
     sub = "Purple lines are the 10,20,...,90 percentiles",
     ylim = 0:1)
abline(h = 0, col = "blue", lty = 2)
lines(xx, phuber(xx, mu = mu), type = "l", col = "orange")
probs <- seq(0.1, 0.9, by = 0.1)
Q <- qhuber(probs, mu = mu)
lines(Q, dhuber(Q, mu = mu), col = "purple", lty = 3, type = "h")
lines(Q, phuber(Q, mu = mu), col = "purple", lty = 3, type = "h")
abline(h = probs, col = "purple", lty = 3)
phuber(Q, mu = mu) - probs  # Should be all 0s
# }

Run the code above in your browser using DataLab