Expectiles of the Normal Distribution
Density function, distribution function, and expectile function and random generation for the distribution associated with the expectiles of a normal distribution.
denorm(x, mean = 0, sd = 1, log = FALSE) penorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qenorm(p, mean = 0, sd = 1, Maxit.nr = 10, Tol.nr = 1.0e-6, lower.tail = TRUE, log.p = FALSE) renorm(n, mean = 0, sd = 1)
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.
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.
T. W. Yee and Kai Huang
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 ## Not run: 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) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.