The Two-parameter Beta Distribution Family Function
Estimation of the mean and precision parameters of the beta distribution.
betaff(A = 0, B = 1, lmu = "logitlink", lphi = "loglink", imu = NULL, iphi = NULL, gprobs.y = ppoints(8), gphi = exp(-3:5)/4, zero = NULL)
A, B |
Lower and upper limits of the distribution. The defaults correspond to the standard beta distribution where the response lies between 0 and 1. |
lmu, lphi |
Link function for the mean and precision parameters.
The values A and B are extracted from the
|
imu, iphi |
Optional initial value for the mean and precision parameters
respectively. A |
gprobs.y, gphi, zero |
See |
The two-parameter beta distribution can be written f(y) =
(y-A)^(mu1*phi-1) * (B-y)^((1-mu1)*phi-1) / [beta(mu1*phi,(1-mu1)*phi) * (B-A)^(phi-1)]
for A < y < B, and beta(.,.) is the beta function
(see beta
).
The parameter mu1 satisfies
mu1 = (mu - A) / (B-A)
where mu is the mean of Y.
That is, mu1 is the mean of of a standard beta distribution:
E(Y) = A + (B-A)*mu1,
and these are the fitted values of the object.
Also, phi is positive and A < mu < B.
Here, the limits A and B are known.
Another parameterization of the beta distribution involving the raw
shape parameters is implemented in betaR
.
For general A and B, the variance of Y is (B-A)^2 * mu1 * (1-mu1) / (1+phi). Then phi can be interpreted as a precision parameter in the sense that, for fixed mu, the larger the value of phi, the smaller the variance of Y. Also, mu1=shape1/(shape1+shape2) and phi = shape1+shape2. Fisher scoring is implemented.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
The response must have values in the interval (A, B).
The user currently needs to manually choose lmu
to match
the input of arguments A
and B
, e.g.,
with extlogitlink
; see the example below.
Thomas W. Yee
Ferrari, S. L. P. and Francisco C.-N. (2004). Beta regression for modelling rates and proportions. Journal of Applied Statistics, 31, 799–815.
bdata <- data.frame(y = rbeta(nn <- 1000, shape1 = exp(0), shape2 = exp(1))) fit1 <- vglm(y ~ 1, betaff, data = bdata, trace = TRUE) coef(fit1, matrix = TRUE) Coef(fit1) # Useful for intercept-only models # General A and B, and with a covariate bdata <- transform(bdata, x2 = runif(nn)) bdata <- transform(bdata, mu = logitlink(0.5 - x2, inverse = TRUE), prec = exp(3.0 + x2)) # prec == phi bdata <- transform(bdata, shape2 = prec * (1 - mu), shape1 = mu * prec) bdata <- transform(bdata, y = rbeta(nn, shape1 = shape1, shape2 = shape2)) bdata <- transform(bdata, Y = 5 + 8 * y) # From 5 to 13, not 0 to 1 fit <- vglm(Y ~ x2, data = bdata, trace = TRUE, betaff(A = 5, B = 13, lmu = extlogitlink(min = 5, max = 13))) coef(fit, matrix = TRUE)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.