options(digits = 4)

## Package and data
library("betareg")
data("GasolineYield", package = "betareg")

## Same results as in Table 1 in Kosmidis and Firth (2010, EJS,
## http://dx.doi.org/10.1214/10-EJS579)
gyML <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "identity")
gyBC <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "identity", type = "BC")
gyBR <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "identity", type = "BR")

## Coefficients and standard errors
se <- function(obj, ...) sqrt(diag(vcov(obj, ...)))
sapply(list(gyML, gyBC, gyBR), coef)
sapply(list(gyML, gyBC, gyBR), se)

## Same results as in Table 3 in Kosmidis and Firth (2010, EJS,
## http://dx.doi.org/10.1214/10-EJS579). BR and BC estimates in the
## latter study were calculated in a different way than betareg
## computes them which provides some indication on the correctness of
## implementation
gyMLlog <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "log")
gyBClog <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "log", type = "BC")
gyBRlog <- betareg(yield ~ batch + temp, data = GasolineYield, link.phi = "log", type = "BR")
sapply(list(gyMLlog, gyBClog, gyBRlog), coef)
sapply(list(gyMLlog, gyBClog, gyBRlog), se)

## Fit with temp as a dispersion covariate
gy2ML <- betareg(yield ~ batch + temp | temp, data = GasolineYield)
gy2BC <- betareg(yield ~ batch + temp | temp, data = GasolineYield, type = "BC")
gy2BR <- betareg(yield ~ batch + temp | temp, data = GasolineYield, type = "BR")
sapply(list(gy2ML, gy2BC, gy2BR), coef)
sapply(list(gy2ML, gy2BC, gy2BR), se)

