pdfrice {lmomco} | R Documentation |
Probability Density Function of the Rice Distribution
Description
This function computes the probability density
of the Rice distribution given parameters ( and
) computed by
parrice
. The probability density function is
where is the nonexceedance probability for quantile
,
is a parameter, and
is a form of signal-to-noise ratio
, and
is the modified Bessel function of the first kind, which for integer
is seen under
LaguerreHalf
. If , then the Rayleigh distribution results and
pdfray
is used. If is used, then the Normal distribution functions are used with appropriate parameter estimation for
and
that include the Laguerre polynomial
LaguerreHalf
. If , then the Normal distribution functions continue to be used with
and
.
Usage
pdfrice(x, para)
Arguments
x |
A real value vector. |
para |
Value
Probability density () for
.
Note
The VGAM package provides a pdf of the Rice for reference:
"drice" <- function(x, vee, sigma, log = FALSE) { # From the VGAM package if(!is.logical(log.arg <- log)) stop("bad input for argument 'log'") rm(log) N = max(length(x), length(vee), length(sigma)) x = rep(x, len=N); vee = rep(vee, len=N); sigma = rep(sigma, len=N) logdensity = rep(log(0), len=N) xok = (x > 0) x.abs = abs(x[xok]*vee[xok]/sigma[xok]^2) logdensity[xok] = log(x[xok]) - 2 * log(sigma[xok]) + (-(x[xok]^2+vee[xok]^2)/(2*sigma[xok]^2)) + log(besselI(x.abs, nu=0, expon.scaled = TRUE)) + x.abs logdensity[sigma <= 0] <- NaN; logdensity[vee < 0] <- NaN if(log.arg) logdensity else exp(logdensity) }
Author(s)
W.H. Asquith
References
Asquith, W.H., 2011, Distributional analysis with L-moment statistics using the R environment for statistical computing: Createspace Independent Publishing Platform, ISBN 978–146350841–8.
See Also
cdfrice
, quarice
, lmomrice
, parrice
Examples
lmr <- lmoms(c(10, 43, 27, 26, 49, 26, 62, 39, 51, 14))
rice <- parrice(lmr)
x <- quarice(nonexceeds(),rice)
plot(x,pdfrice(x,rice), type="b")
# For SNR=v/a > 24 or 240.001/10 > 24, the Normal distribution is
# used by the Rice as implemented here.
rice1 <- vec2par(c(239.9999,10), type="rice")
rice2 <- vec2par(c(240.0001,10), type="rice")
x <- 200:280
plot( x, pdfrice(x, rice1), type="l", lwd=5, lty=3) # still RICIAN code
lines(x, dnorm( x, mean=240.0001, sd=10), lwd=3, col=2) # NORMAL obviously
lines(x, pdfrice(x, rice2), lwd=1, col=3) # NORMAL distribution code is triggered
# For SNR=v/a > 52 or 521/10 > 52, the Normal distribution
# used by the Rice as implemented here with simple parameter estimation
# because this high of SNR is beyond limits of Bessel function in Laguerre
# polynomial
rice1 <- vec2par(c(520,10), type="rice")
rice2 <- vec2par(c(521,10), type="rice")
x <- 10^(log10(520) - 0.05):10^(log10(520) + 0.05)
plot( x, pdfrice(x, rice1), type="l", lwd=5, lty=3)
lines(x, pdfrice(x, rice2), lwd=1, col=3) # NORMAL code triggered