Density, distribution function, quantile function and random generation for the (generalized) folded-normal distribution.
dfoldnorm(x, mean = 0, sd = 1, a1 = 1, a2 = 1, log = FALSE)
pfoldnorm(q, mean = 0, sd = 1, a1 = 1, a2 = 1,
lower.tail = TRUE, log.p = FALSE)
qfoldnorm(p, mean = 0, sd = 1, a1 = 1, a2 = 1,
lower.tail = TRUE, log.p = FALSE, ...)
rfoldnorm(n, mean = 0, sd = 1, a1 = 1, a2 = 1)
dfoldnorm
gives the density,
pfoldnorm
gives the distribution function,
qfoldnorm
gives the quantile function, and
rfoldnorm
generates random deviates.
T. W. Yee and Kai Huang.
Suggestions from Mauricio Romero led to improvements
in qfoldnorm()
.
See foldnormal
, the VGAM family function
for estimating the parameters,
for the formula of the probability density function
and other details.
foldnormal
,
uniroot
.
if (FALSE) {
m <- 1.5; SD <- exp(0)
x <- seq(-1, 4, len = 501)
plot(x, dfoldnorm(x, m = m, sd = SD), type = "l", ylim = 0:1,
ylab = paste("foldnorm(m = ", m, ", sd = ",
round(SD, digits = 3), ")"), las = 1,
main = "Blue is density, orange is CDF", col = "blue",
sub = "Purple lines are the 10,20,...,90 percentiles")
abline(h = 0, col = "gray50")
lines(x, pfoldnorm(x, m = m, sd = SD), col = "orange")
probs <- seq(0.1, 0.9, by = 0.1)
Q <- qfoldnorm(probs, m = m, sd = SD)
lines(Q, dfoldnorm(Q, m, SD), col = "purple", lty = 3, type = "h")
lines(Q, pfoldnorm(Q, m, SD), col = "purple", lty = 3, type = "h")
abline(h = probs, col = "purple", lty = 3)
max(abs(pfoldnorm(Q, m = m, sd = SD) - probs)) # Should be 0
}
Run the code above in your browser using DataLab