foldnormal: Folded Normal Distribution Family Function

View source: R/family.normal.R

foldnormalR 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 a_1 and a_2 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(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).

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)

VGAM documentation built on Sept. 18, 2024, 9:09 a.m.