Learn R Programming

VGAM (version 1.1-12)

betaprime: The Beta-Prime Distribution

Description

Estimation of the two shape parameters of the beta-prime distribution by maximum likelihood estimation.

Usage

betaprime(lshape = "loglink", ishape1 = 2, ishape2 = NULL,
          zero = NULL)

Value

An object of class "vglmff"

(see vglmff-class). The object is used by modelling functions such as vglm,

rrvglm

and vgam.

Arguments

lshape

Parameter link function applied to the two (positive) shape parameters. See Links for more choices.

ishape1, ishape2, zero

See CommonVGAMffArguments for more information.

Author

Thomas W. Yee

Details

The beta-prime distribution is given by $$f(y) = y^{shape1-1} (1+y)^{-shape1-shape2} / B(shape1,shape2)$$ for \(y > 0\). The shape parameters are positive, and here, \(B\) is the beta function. The mean of \(Y\) is \(shape1 / (shape2-1)\) provided \(shape2>1\); these are returned as the fitted values.

If \(Y\) has a \(Beta(shape1,shape2)\) distribution then \(Y/(1-Y)\) and \((1-Y)/Y\) have a \(Betaprime(shape1,shape2)\) and \(Betaprime(shape2,shape1)\) distribution respectively. Also, if \(Y_1\) has a \(gamma(shape1)\) distribution and \(Y_2\) has a \(gamma(shape2)\) distribution then \(Y_1/Y_2\) has a \(Betaprime(shape1,shape2)\) distribution.

References

Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1995). Chapter 25 of: Continuous Univariate Distributions, 2nd edition, Volume 2, New York: Wiley.

See Also

betaff, Beta.

Examples

Run this code
nn <- 1000
bdata <- data.frame(shape1 = exp(1), shape2 = exp(3))
bdata <- transform(bdata, yb = rbeta(nn, shape1, shape2))
bdata <- transform(bdata, y1 = (1-yb) /    yb,
                          y2 =    yb  / (1-yb),
                          y3 = rgamma(nn, exp(3)) / rgamma(nn, exp(2)))

fit1 <- vglm(y1 ~ 1, betaprime, data = bdata, trace = TRUE)
coef(fit1, matrix = TRUE)

fit2 <- vglm(y2 ~ 1, betaprime, data = bdata, trace = TRUE)
coef(fit2, matrix = TRUE)

fit3 <- vglm(y3 ~ 1, betaprime, data = bdata, trace = TRUE)
coef(fit3, matrix = TRUE)

# Compare the fitted values
with(bdata, mean(y3))
head(fitted(fit3))
Coef(fit3)  # Useful for intercept-only models

Run the code above in your browser using DataLab