# foldnormal: Folded Normal Distribution Family Function In VGAM: Vector Generalized Linear and Additive Models

## Description

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

## Usage

 ```1 2``` ```foldnormal(lmean = "identitylink", lsd = "loglink", imean = NULL, isd = NULL, a1 = 1, a2 = 1, nsimEIM = 500, imethod = 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.
 `imean, isd` Optional initial values for mu and sigma. A `NULL` means a value is computed internally. See `CommonVGAMffArguments`. `a1, a2` Positive weights, called a1 and a2 below. Each must be of length 1. `nsimEIM, imethod, zero` See `CommonVGAMffArguments`.

## 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(a1*X, -a2*X) where a1 and a2 are positive weights. This means that Y = a1*X for X > 0, and Y = a2*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 a1 = a2 = 1.

The probability density function of the ordinary folded normal distribution can be written `dnorm(y, mean, sd) + dnorm(y, -mean, sd)` for y ≥ 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`).

## 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.

## Note

The response variable for this family function is the same as `uninormal` except positive values are required. Reasonably good initial values are needed. Fisher scoring using simulation is implemented.

See `CommonVGAMffArguments` for general information about many of these arguments.

Yet to do: implement the results of Johnson (1962) which gives expressions for the EIM, albeit, under a different parameterization. Also, one element of the EIM appears to require numerical integration.

Thomas W. Yee

## 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.

Johnson, N. L. (1962). The folded normal distribution: accuracy of estimation by maximum likelihood. Technometrics, 4, 249–256.

`rfoldnorm`, `uninormal`, `dnorm`, `skewnormal`.
 ``` 1 2 3 4 5 6 7 8 9 10 11 12``` ```## Not run: m <- 2; SD <- exp(1) fdata <- data.frame(y = rfoldnorm(n <- 1000, m = m, sd = SD)) hist(with(fdata, y), prob = TRUE, main = paste("foldnormal(m = ", m, ", sd = ", round(SD, 2), ")")) fit <- vglm(y ~ 1, foldnormal, data = fdata, trace = TRUE) coef(fit, matrix = TRUE) (Cfit <- Coef(fit)) # Add the fit to the histogram: mygrid <- with(fdata, seq(min(y), max(y), len = 200)) lines(mygrid, dfoldnorm(mygrid, Cfit, Cfit), col = "orange") ## End(Not run) ```