Learn R Programming

VGAM (version 0.8-2)

fnormal1: Folded Normal Distribution Family Function

Description

Fits a (generalized) folded (univariate) normal distribution.

Usage

fnormal1(lmean="identity", lsd="loge", emean=list(), esd=list(), imean=NULL,
         isd=NULL, a1=1, a2=1, nsimEIM=500, method.init=1, zero=NULL)

Arguments

lmean, lsd
Link functions for the mean and standard deviation parameters of the usual univariate normal distribution. They are $\mu$ and $\sigma$ respectively. See Links for more choices.
emean, esd
List. Extra argument for each of the links. See earg in Links for general information.
imean, isd
Optional initial values for $\mu$ and $\sigma$. A NULL means a value is computed internally.
a1, a2
Positive weights, called $a_1$ and $a_2$ below. Each must be of length 1.
nsimEIM, method.init, zero

Value

  • An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm and vgam.

Warning

Under- or over-flow may occur if the data is ill-conditioned. It is recommended that several different initial values be used to help avoid local solutions.

Details

If a random variable has an ordinary univariate normal distribution then the absolute value of that random variable has an ordinary folded normal distribution. That is, the sign has not been recorded; only the magnitude has been measured.

More generally, suppose $X$ is normal with mean mean and standard deviation sd. Let $Y=\max(a_1 X, -a_2 X)$ where $a_1$ and $a_2$ are positive weights. This means that $Y = a_1 X$ for $X > 0$, and $Y = a_2 X$ for $X < 0$. Then $Y$ is said to have a generalized folded normal distribution. The ordinary folded normal distribution corresponds to the special case $a_1 = a_2 = 1$.

The probability density function of the ordinary folded normal distribution can be written dnorm(y, mean, sd) + dnorm(y, -mean, sd) for $y \ge 0$. By default, mean and log(sd) are the linear/additive predictors. Having mean=0 and sd=1 results in the half-normal distribution. The mean of an ordinary folded normal distribution is $$E(Y) = \sigma \sqrt{2/\pi} \exp(-\mu^2/(2\sigma^2)) + \mu [1-2\Phi(-\mu/\sigma)]$$ and these are returned as the fitted values. Here, $\Phi()$ is the cumulative distribution function of a standard normal (pnorm).

References

Lin, P. C. (2005) Application of the generalized folded-normal distribution to the process capability measures. International Journal of Advanced Manufacturing Technology, 26, 825--830.

See Also

rfnorm, normal1, dnorm, skewnormal1.

Examples

Run this code
m =  2; SD = exp(1)
y = rfnorm(n <- 1000, m=m, sd=SD)
hist(y, prob=TRUE, main=paste("fnormal1(m=",m,", sd=",round(SD,2),")"))
fit = vglm(y ~ 1, fam=fnormal1, trace=TRUE)
coef(fit, mat=TRUE)
(Cfit = Coef(fit))
mygrid = seq(min(y), max(y), len=200) # Add the fit to the histogram
lines(mygrid, dfnorm(mygrid, Cfit[1], Cfit[2]), col="red")

Run the code above in your browser using DataLab