Density, distribution function, quantile function and random generation for Huber's least favourable distribution, see Huber and Ronchetti (2009).
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)
numeric vector, vector of quantiles.
vector of probabilities.
number of random values to be generated.
If length(n) > 1
then the length is taken to be the number required.
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.
numeric. distribution mean.
numeric. Distribution scale (sigma = 1
defines the
distribution in standard form, with standard Gaussian centre).
Logical.
If log = TRUE
then the logarithm of the result is returned.
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 are given in huber2
, the
VGAM family function for estimating the
parameters mu
and sigma
.
# 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