Loguniform Distribution

Overview

The loguniform distribution (also called the reciprocal distribution) is a two-parameter distribution. This distribution has a probability density function that is proportional to the reciprocal of the variable value within its two bounding parameters (lower and upper limits of its support).

Create a probability distribution object `LoguniformDistribution` by specifying parameter values (`makedist`). Then, use object functions to evaluate the distribution, generate random numbers, and so on.

Parameters

The loguniform distribution uses the following parameters.

ParameterDescriptionSupport
aLower limit0 < a < b
bUpper limit a < b <

Probability Density Function

The probability density function (pdf) of the loguniform distribution is

`$f\left(x|a,b\right)=\left\{\begin{array}{c}\left(\frac{1}{x*\mathrm{log}\left(\frac{b}{a}\right)}\right)\text{ };\text{ }0`

For an example, see Compute and Plot Loguniform Distribution pdf.

Cumulative Distribution Function

The cumulative distribution function (cdf) of the loguniform distribution is

`$F\left(x|a,b\right)=\left\{\text{ }\begin{array}{c}\text{ }\text{ }0\text{ }\text{ };\text{ }\text{ }x`

The result p is the probability that a single observation from a loguniform distribution with parameters a and b falls in the interval [a x].

For an example, see Compute Loguniform Distribution cdf.

Descriptive Statistics

The mean of the loguniform distribution is $\mu =\frac{b-a}{\mathrm{log}\left(\frac{b}{a}\right)}$ .

The variance of the loguniform distribution is ${\sigma }^{2}=\frac{\mathrm{log}\left(\frac{b}{a}\right)\left({b}^{2}-{a}^{2}\right)-2{\left(b-a\right)}^{2}}{2{\left[\mathrm{log}\left(\frac{b}{a}\right)\right]}^{2}}$.

Examples

Compute and Plot Loguniform Distribution pdf

Create three loguniform distribution objects with different parameters.

`pd1 = makedist('Loguniform') % Loguniform distribution with default parameters a = 1 and b = 4`
```pd1 = LoguniformDistribution Loguniform distribution Lower = 1 Upper = 4 ```
```pd2 = makedist('Loguniform','lower',1,'upper',5); % Loguniform distribution with a = 1 and b = 5 pd3 = makedist('Loguniform','lower',2,'upper',6); % Loguniform distribution with a = 2 and b = 6```

Compute the pdfs for the three loguniform distributions.

```x = 0:.01:6; pdf1 = pdf(pd1,x); pdf2 = pdf(pd2,x); pdf3 = pdf(pd3,x);```

Plot the pdfs on the same axis.

```figure; plot(x,pdf1,'r','LineWidth',2); hold on; plot(x,pdf2,'k:','LineWidth',2); plot(x,pdf3,'b-.','LineWidth',2); legend({'a = 1, b = 4','a = 1, b = 5','a = 2, b = 6'},'Location','northwest'); xlabel('Observation') ylabel('Probability Density') hold off;```

The distribution density is proportional to the reciprocal of the variable value within a and b, hence, the pdf value decreases as the value of the variable increases.

Compute Loguniform Distribution cdf

Create three loguniform distribution objects with different parameters.

```pd1 = makedist('Loguniform'); % Loguniform distribution with default parameters a = 1 and b = 4 pd2 = makedist('Loguniform','lower',1,'upper',5); % Loguniform distribution with a = 1 and b = 5 pd3 = makedist('Loguniform','lower',2,'upper',6); % Loguniform distribution with a = 2 and b = 6```

Compute the cdfs for the three loguniform distributions.

```x = 1:.01:6; cdf1 = cdf(pd1,x); cdf2 = cdf(pd2,x); cdf3 = cdf(pd3,x);```

Plot the cdfs on the same axis.

```figure; plot(x,cdf1,'r','LineWidth',2); hold on; plot(x,cdf2,'k:','LineWidth',2); plot(x,cdf3,'b-.','LineWidth',2); legend({'a = 1, b = 4','a = 1, b = 5','a = 2, b = 6'},'Location','NW'); xlabel('Observation') ylabel('Cumulative Probability') hold off;```

Transform Standard Uniform Sample to Loguniform Sample

Create a standard uniformly distributed sample of size 30.

` p = random('Uniform',0,1,30,1);`

Compute the loguniform sample with support (2,7) corresponding to the standard uniform values in `p`.

`logunifval = icdf('Loguniform',p,2,7);`

Alternatively, first create a loguniform distribution object with support (2,7) and then use it in the call to `icdf`.

`logunifpd = makedist('Loguniform', "Lower",2,"Upper",7)`
```logunifpd = LoguniformDistribution Loguniform distribution Lower = 2 Upper = 7 ```
`logunifval2 = icdf(logunifpd,p);`

Generate Random Numbers from Loguniform Distribution

To generate random numbers from a loguniform distribution, you must first create a loguniform distribution object. Create a loguniform distribution object with support (3,10).

`pd = makedist("Loguniform",3,10)`
```pd = LoguniformDistribution Loguniform distribution Lower = 3 Upper = 10 ```

Generate a 3-by-4 matrix of random numbers from the loguniform distribution.

`R = random(pd,3,4)`
```R = 3×4 8.0006 9.0096 4.1951 9.5861 8.9277 6.4235 5.7953 3.6269 3.4956 3.3738 9.5013 9.6521 ```

Related Distributions

• Uniform Distribution — The continuous uniform distribution is a two-parameter distribution that has parameters a (lower limit) and b (upper limit). If X has a loguniform distribution within the support a and b, then log(X) has a uniform distribution between log(a) and log(b).