# HalfNormalDistribution

Half-normal probability distribution object

## Description

A `HalfNormalDistribution` object consists of parameters, a model description, and sample data for a half-normal probability distribution.

The half-normal distribution is a special case of the folded normal and truncated normal distribution. Applications of the half-normal distribution include modeling measurement data and lifetime data.

The half-normal distribution uses the following parameters:

ParameterDescriptionSupport
`mu`Location$-\infty <\mu <\infty$
`sigma`Scale$\sigma \ge 0$

## Creation

There are several ways to create a `HalfNormalDistribution` probability distribution object.

## Properties

expand all

### Distribution Parameters

Location parameter of the half-normal distribution, specified as a scalar value. The `mu` parameter is also the lower limit of the half-normal distribution.

The Statistics and Machine Learning Toolbox™ implementation of the half-normal distribution assumes a fixed value for the location parameter μ. You can specify a value for the μ parameter when creating a `HalfNormalDistribution` object.

Data Types: `single` | `double`

Scale parameter of the half-normal distribution, specified as a nonnegative scalar value.

Data Types: `single` | `double`

### Distribution Characteristics

Logical flag for truncated distribution, specified as a logical value. If `IsTruncated` equals `0`, the distribution is not truncated. If `IsTruncated` equals `1`, the distribution is truncated.

Data Types: `logical`

Number of parameters for the probability distribution, specified as a positive integer value.

Data Types: `double`

Covariance matrix of the parameter estimates, specified as a p-by-p matrix, where p is the number of parameters in the distribution. The (`i`,`j`) element is the covariance between the estimates of the `i`th parameter and the `j`th parameter. The (`i`,`i`) element is the estimated variance of the `i`th parameter. If parameter `i` is fixed rather than estimated by fitting the distribution to data, then the (`i`,`i`) elements of the covariance matrix are 0.

Data Types: `double`

Logical flag for fixed parameters, specified as an array of logical values. If `0`, the corresponding parameter in the `ParameterNames` array is not fixed. If `1`, the corresponding parameter in the `ParameterNames` array is fixed.

Data Types: `logical`

Distribution parameter values, specified as a vector.

Data Types: `single` | `double`

Truncation interval for the probability distribution, specified as a vector containing the lower and upper truncation boundaries.

Data Types: `single` | `double`

### Other Object Properties

Probability distribution name, specified as a character vector.

Data Types: `char`

Data used for distribution fitting, specified as a structure containing the following:

• `data`: Data vector used for distribution fitting.

• `cens`: Censoring vector, or empty if none.

• `freq`: Frequency vector, or empty if none.

Data Types: `struct`

Distribution parameter descriptions, specified as a cell array of character vectors. Each cell contains a short description of one distribution parameter.

Data Types: `char`

Distribution parameter names, specified as a cell array of character vectors.

Data Types: `char`

## Object Functions

 `cdf` Cumulative distribution function `icdf` Inverse cumulative distribution function `iqr` Interquartile range `mean` Mean of probability distribution `median` Median of probability distribution `negloglik` Negative loglikelihood of probability distribution `paramci` Confidence intervals for probability distribution parameters `pdf` Probability density function `proflik` Profile likelihood function for probability distribution `random` Random numbers `std` Standard deviation of probability distribution `truncate` Truncate probability distribution object `var` Variance of probability distribution

## Examples

collapse all

`pd = makedist('HalfNormal')`
```pd = HalfNormalDistribution Half Normal distribution mu = 0 sigma = 1 ```

Create a half-normal distribution object. Specify `mu` equal to 0 and `sigma` equal to 1.5.

`pd = makedist('HalfNormal','mu',0,'sigma',1.5)`
```pd = HalfNormalDistribution Half Normal distribution mu = 0 sigma = 1.5 ```

Compute the mean and standard deviation of the distribution.

`m = mean(pd)`
```m = 1.1968 ```
`s = std(pd)`
```s = 0.9042 ```

Generate 100 random numbers from a standard normal distribution and compute their absolute value.

```rng default % For reproducibility x = abs(random(makedist('Normal'),100,1));```

Fit a half-normal distribution object to the sample data.

`pd = fitdist(x,'HalfNormal')`
```pd = HalfNormalDistribution Half Normal distribution mu = 0 sigma = 1.1631 [1.02184, 1.35006] ```

Calculate the mean of the fitted half-normal distribution using the probability distribution object.

`m = mean(pd)`
```m = 0.9280 ```

Calculate the mean of the half-normal distribution by substituting the fitted `mu` and `sigma` parameter values into the formula

`$mean=\mu +\sigma \sqrt{\frac{2}{\pi }}.$`

`mcalc = pd.mu + pd.sigma*(sqrt(2/pi))`
```mcalc = 0.9280 ```

## References

[1] Cooray, K. and M.M.A. Ananda. “A Generalization of the Half-Normal Distribution with Applications to Lifetime Data.” Communications in Statistics – Theory and Methods. Vol. 37, Number 9, 2008, pp. 1323–1337.

[2] Pewsey, A. Large-Sample Inference for the General Half-Normal Distribution. Communications in Statistics – Theory and Methods. Vol. 31, Number 7, 2002, pp. 1045–1054.