R: Folded Normal Distribution Family Function

foldnormal {VGAM} | R Documentation

## Folded Normal Distribution Family Function

### Description

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

### Usage

    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.

### Author(s)

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.

### See Also

`rfoldnorm`, `uninormal`, `dnorm`, `skewnormal`.

### Examples

    ## 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[1], Cfit[2]), col = "orange")

    ## End(Not run)

[Package VGAM version 1.1-3 Index]