kdist (version 0.2)

k: The K-distribution.

Description

Density, distribution function, quantile function and random generation for the K-distribution with parameters shape and scale.

Usage

dk(x, shape = 1, scale = 1, intensity = FALSE, log = FALSE)

pk(q, shape = 1, scale = 1, intensity = FALSE, log.p = FALSE, lower.tail = TRUE)

qk(p, shape = 1, scale = 1, intensity = FALSE, log.p = FALSE)

rk(n, shape = 1, scale = 1, intensity = FALSE)

Arguments

x, q

vector of quantiles

shape, scale

shape and scale parameters both defaulting to 1.

intensity

logical; if TRUE, quantiles are intensities not amplitudes.

log, log.p

logical; if TRUE, probabilities p are given as log(p).

lower.tail

logical; if TRUE (default), probabilities are P[X = x], otherwise, P[X > x].

p

vector of probabilities

n

number of observations

Value

The function dk gives the density, pk gives the distribution function, qk gives the quantile function, and rk generates random variates.

Details

The K-distribution with shape parameter \(\nu\) and scale parameter \(b\) has amplitude density given by \(f(x) = [4 x^\nu / \Gamma(\nu)] [(\nu / b)^(1+\nu/2)] K(2 x \sqrt(\nu/b),\nu-1)\). Where \(K\) is a modified Bessel function of the second kind. For \(\nu -> Inf\), the K-distrubution tends to a Rayleigh distribution, and for \(\nu = 1\) it is the Exponential distribution. The function base::besselK is used in the calculation, and care should be taken with large input arguements to this function, e.g. \(b\) very small or \(x, \nu\) very large. The cumulative distribution function for the amplitude, \(x\) is given by \(F(x) = 1 - 2 x^\nu (\nu/b)^(\nu/2) K(2 x \sqrt(\nu/b), \nu)\). The K-Distribution is a compound distribution, with Rayleigh distributed amplitudes (exponential intensities) modulated by another underlying process whose amplitude is chi-distributed and whose intensity is Gamma distributed. An Exponential distributed number multiplied by a Gamma distributed random number is used to generate the random variates. The \(m\)th moments are given by \(\mu_m = (b/\nu)^(m/2) \Gamma(0.5m + 1) \Gamma(0.5m + \nu) / \Gamma(\nu)\), so that the root mean square value of x is the scale factor, \(<x^2> = b\).

References

E Jakeman and R J A Tough, "Non-Gaussian models for the statistics of scattered waves", Adv. Phys., 1988, vol. 37, No. 5, pp471-529

See Also

Distributions for other standard distributions, including dweibull for the Weibull distribution and dexp for the exponential distribution.

Examples

Run this code
# NOT RUN {
#=====
r <- rk(10000, shape = 3, scale = 5, intensity = FALSE)
fn <- stats::ecdf(r)
x <- seq(0, 10, length = 100)
plot(x, fn(x))
lines(x, pk(x, shape = 3, scale = 5, intensity = FALSE))
#======
r <- rk(10000, shape = 3, scale = 5, intensity = FALSE)
d <- density(r)
x <- seq(0, 10, length = 100)
plot(d, xlim=c(0,10))
lines(x, dk(x, shape = 3, scale = 5, intensity = FALSE))
# }

Run the code above in your browser using DataLab