Learn R Programming

VGAM (version 1.0-5)

nakagami: Nakagami Distribution Family Function

Description

Estimation of the two parameters of the Nakagami distribution by maximum likelihood estimation.

Usage

nakagami(lscale = "loge", lshape = "loge", iscale = 1, ishape = NULL,
         nowarning = FALSE)

Arguments

nowarning

Logical. Suppress a warning?

lscale, lshape

Parameter link functions applied to the scale and shape parameters. Log links ensure they are positive. See Links for more choices and information.

iscale, ishape

Optional initial values for the shape and scale parameters. For ishape, a NULL value means it is obtained in the initialize slot based on the value of iscale. For iscale, assigning a NULL means a value is obtained in the initialize slot, however, setting another numerical value is recommended if convergence fails or is too slow.

Value

An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, and vgam.

Details

The Nakagami distribution, which is useful for modelling wireless systems such as radio links, can be written $$f(y) = 2 (shape/scale)^{shape} y^{2 \times shape-1} \exp(-shape \times y^2/scale) / \Gamma(shape)$$ for \(y > 0\), \(shape > 0\), \(scale > 0\). The mean of \(Y\) is \(\sqrt{scale/shape} \times \Gamma(shape+0.5) / \Gamma(shape)\) and these are returned as the fitted values. By default, the linear/additive predictors are \(\eta_1=\log(scale)\) and \(\eta_2=\log(shape)\). Fisher scoring is implemented.

References

Nakagami, M. (1960) The m-distribution: a general formula of intensity distribution of rapid fading, pp.3--36 in: Statistical Methods in Radio Wave Propagation. W. C. Hoffman, Ed., New York: Pergamon.

See Also

rnaka, gamma2, rayleigh.

Examples

Run this code
# NOT RUN {
nn <- 1000; shape <- exp(0); Scale <- exp(1)
ndata <- data.frame(y1 = sqrt(rgamma(nn, shape = shape, scale = Scale/shape)))
nfit <- vglm(y1 ~ 1, nakagami, data = ndata, trace = TRUE, crit = "coef")
ndata <- transform(ndata, y2 = rnaka(nn, scale = Scale, shape = shape))
nfit <- vglm(y2 ~ 1, nakagami(iscale = 3), data = ndata, trace = TRUE)
head(fitted(nfit))
with(ndata, mean(y2))
coef(nfit, matrix = TRUE)
(Cfit <- Coef(nfit))
# }
# NOT RUN {
 sy <- with(ndata, sort(y2))
hist(with(ndata, y2), prob = TRUE, main = "", xlab = "y", ylim = c(0, 0.6),
     col = "lightblue")
lines(dnaka(sy, scale = Cfit["scale"], shape = Cfit["shape"]) ~ sy,
      data = ndata, col = "orange") 
# }

Run the code above in your browser using DataLab