Learn R Programming

VGAM (version 0.8-7)

Expectiles-Normal: Expectiles of the Normal Distribution

Description

Density function, distribution function, and expectile function and random generation for the distribution associated with the expectiles of a normal distribution.

Usage

denorm(x, mean = 0, sd = 1, log = FALSE)
penorm(q, mean = 0, sd = 1, log = FALSE)
qenorm(p, mean = 0, sd = 1, Maxit_nr = 10, Tol_nr = 1.0e-6)
renorm(n, mean = 0, sd = 1)

Arguments

x, p, q
See deunif.
n, mean, sd, log
See rnorm.
Maxit_nr, Tol_nr
See deunif.

Value

  • denorm(x) gives the density function $g(x)$. penorm(q) gives the distribution function $G(q)$. qenorm(p) gives the expectile function: the value $y$ such that $G(y)=p$. renorm(n) gives $n$ random variates from $G$.

Details

General details are given in deunif including a note regarding the terminology used. Here, norm corresponds to the distribution of interest, $F$, and enorm corresponds to $G$. The addition of ``e'' is for the `other' distribution associated with the parent distribution. Thus denorm is for $g$, penorm is for $G$, qenorm is for the inverse of $G$, renorm generates random variates from $g$.

For qenorm the Newton-Raphson algorithm is used to solve for $y$ satisfying $p = G(y)$. Numerical problems may occur when values of p are very close to 0 or 1.

See Also

deunif, deexp, dnorm, amlnormal, lms.bcn.

Examples

Run this code
my_p = 0.25; y = rnorm(nn <- 1000)
(myexp = qenorm(my_p))
sum(myexp - y[y <= myexp]) / sum(abs(myexp - y))  # Should be my_p

# Non-standard normal
mymean = 1; mysd = 2
yy = rnorm(nn, mymean, mysd)
(myexp = qenorm(my_p, mymean, mysd))
sum(myexp - yy[yy <= myexp]) / sum(abs(myexp - yy)) # Should be my_p
penorm(-Inf, mymean, mysd)     #  Should be 0
penorm( Inf, mymean, mysd)     #  Should be 1
penorm(mean(yy), mymean, mysd) #  Should be 0.5
abs(qenorm(0.5, mymean, mysd) - mean(yy)) #  Should be 0
abs(penorm(myexp, mymean, mysd) - my_p)  #  Should be 0
integrate(f = denorm, lower=-Inf, upper = Inf,
          mymean, mysd) #  Should be 1

par(mfrow = c(2, 1))
yy = seq(-3, 3, len = nn)
plot(yy, denorm(yy), type = "l", col="blue", xlab = "y", ylab = "g(y)",
     main = "g(y) for N(0,1); dotted green is f(y) = dnorm(y)")
lines(yy, dnorm(yy), col="darkgreen", lty="dotted", lwd=2) # 'original'

plot(yy, penorm(yy), type = "l", col = "blue", ylim = 0:1,
     xlab = "y", ylab = "G(y)", main = "G(y) for N(0,1)")
abline(v = 0, h = 0.5, col = "red", lty = "dashed")
lines(yy, pnorm(yy), col = "darkgreen", lty = "dotted", lwd = 2)

Run the code above in your browser using DataLab