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.