dsplitnorm: The Split Normal Distribution (or 2 Piece Normal...

Description Usage Arguments Details Value Note Author(s) References Examples

View source: R/dsplitnorm.R

Description

Density, distribution function, quantile function and random generation for the split normal distribution with mode equal to mode, uncertainty indicator equal to sd and inverse skewness equal to skew.

Usage

1
2
3
4
dsplitnorm(x, mode = 0, sd = 1, skew = 0, sd1 = NULL, sd2 = NULL)
psplitnorm(x, mode = 0, sd = 1, skew = 0, sd1 = NULL, sd2 = NULL)
qsplitnorm(p, mode = 0, sd = 1, skew = 0, sd1 = NULL, sd2 = NULL)
rsplitnorm(n, mode = 0, sd = 1, skew = 0, sd1 = NULL, sd2 = NULL)

Arguments

x

Vector of quantiles.

p

Vector of probabilities

n

Number of observations required.

mode

Vector of modes.

sd

Vector of uncertainty indicators.

skew

Vector of inverse skewnewss indicators. Must range between -1 and 1

sd1

Vector of standard deviations for left hand side. NULL by default.

sd2

Vector of standard deviations for right hand side. NULL by default.

Details

If mode, sd or skew are not specified they assume the default values of 0, 1 and 1, respectively. This results in identical values as a those obtained from a normal distribution.

The probability density function is:

f(x; μ, σ_1, σ_2) = \frac{√ 2}{√π (σ_1+σ_2)} e^{-\frac{1}{2σ_1^2}(x-μ)^2}

for -Inf< x < μ, and

f(x; μ, σ_1, σ_2) = \frac{√ 2}{√π (σ_1+σ_2)} e^{-\frac{1}{2σ_2^2}(x-μ)^2}

for μ < x <Inf, where, if not specified (in sd1 and sd2) σ_1 and σ_2 are derived as

σ_1=σ/√(1-γ)

σ_2=σ/√(1+γ)

from σ_1 is the overall uncertainty indicator sd and γ is the inverse skewness indicator skew.

Value

dsplitnorm gives the density, psplitnorm gives the distribution function, qsplitnorm gives the quantile function, and rsplitnorm generates random deviates.

The length of the result is determined by n for rsplitnorm, and is the maximum of the lengths of the numerical parameters for the other functions.

The numerical parameters other than n are recycled to the length of the result.

Note

Tested against the fan chart package in MATLAB (http://www.mathworks.de/matlabcentral/fileexchange/27702-fan-chart). Obtained the same results for a set of simple comparisons.

Author(s)

Guy J. Abel

References

Source for all functions based on:

Julio, J. M. (2007). The Fan Chart: The Technical Details Of The New Implementation. Bogota, Colombia. Retrieved from http://www.banrep.gov.co/docum/ftp/borra468.pdf

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
x<-seq(-5,5,length=110)
plot(x,dsplitnorm(x),type="l")

#compare to normal density
lines(x,dnorm(x), lty=2, col="red", lwd=5)

#add positive skew
lines(x,dsplitnorm(x, mode=0, sd=1, skew=0.8))

#add negative skew
lines(x,dsplitnorm(x, mode=0, sd=1, skew=-0.5))

#add left and right hand sd
lines(x,dsplitnorm(x, mode=0, sd1=1, sd2=2), col="blue")

#psplitnorm
x<-seq(-5,5,length=100)
plot(x,pnorm(x),type="l")
lines(x, psplitnorm(x, skew=-0.9), col="red")

#qsplitnorm
x<-seq(0,1,length=100)
plot(qnorm(x),type="l",x)
lines(qsplitnorm(x), x, lty=2, col="blue")
lines(qsplitnorm(x, skew=-0.3), x, col="red")

#rsplitnorm
hist(rsplitnorm(n=10000, mode=1, sd=1, skew=0.9),100)

gragusa/fanplot2 documentation built on May 17, 2019, 8:19 a.m.