Learn R Programming

VGAM (version 1.1-14)

bratt: Bradley Terry Model With Ties

Description

Fits a Bradley Terry model with ties (intercept-only model) by maximum likelihood estimation.

Usage

bratt(refgp = "last", refvalue = 1, ialpha = 1, i0 = 0.01)

Arguments

Value

An object of class "vglmff"

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

Details

There are several models that extend the ordinary Bradley Terry model to handle ties. This family function implements one of these models. It involves \(M\) competitors who either win or lose or tie against each other. (If there are no draws/ties then use brat). The probability that Competitor \(i\) beats Competitor \(j\) is \(\alpha_i / (\alpha_i+\alpha_j+\alpha_0)\), where all the \(\alpha\)s are positive. The probability that Competitor \(i\) ties with Competitor \(j\) is \(\alpha_0 / (\alpha_i+\alpha_j+\alpha_0)\). Loosely, the \(\alpha\)s can be thought of as the competitors' `abilities', and \(\alpha_0\) is an added parameter to model ties. For identifiability, one of the \(\alpha_i\) is set to a known value refvalue, e.g., 1. By default, this function chooses the last competitor to have this reference value. The data can be represented in the form of a \(M\) by \(M\) matrix of counts, where winners are the rows and losers are the columns. However, this is not the way the data should be inputted (see below).

Excluding the reference value/group, this function chooses \(\log(\alpha_j)\) as the first \(M-1\) linear predictors. The log link ensures that the \(\alpha\)s are positive. The last linear predictor is \(\log(\alpha_0)\).

The Bradley Terry model can be fitted with covariates, e.g., a home advantage variable, but unfortunately, this lies outside the VGLM theoretical framework and therefore cannot be handled with this code.

References

Torsney, B. (2004). Fitting Bradley Terry models using a multiplicative algorithm. In: Antoch, J. (ed.) Proceedings in Computational Statistics COMPSTAT 2004, Physica-Verlag: Heidelberg. Pages 513--526.

See Also

brat, Brat, binomialff.

Examples

Run this code
# citation statistics: being cited is a 'win'; citing is a 'loss'
journal <- c("Biometrika", "Comm.Statist", "JASA", "JRSS-B")
mat <- matrix(c( NA, 33, 320, 284,
                730, NA, 813, 276,
                498, 68,  NA, 325,
                221, 17, 142,  NA), 4, 4)
dimnames(mat) <- list(winner = journal, loser = journal)

# Add some ties. This is fictitional data.
ties <- 5 + 0 * mat
ties[2, 1] <- ties[1,2] <- 9

# Now fit the model
fit <- vglm(Brat(mat, ties) ~ 1, bratt(refgp = 1), trace = TRUE,
            crit = "coef")

summary(fit)
c(0, coef(fit))  # Log-abilities (last is log(alpha0))
c(1, Coef(fit))  #     Abilities (last is alpha0)

fit@misc$alpha   # alpha_1,...,alpha_M
fit@misc$alpha0  # alpha_0

fitted(fit)  # Probabilities of winning and tying, in awkward form
predict(fit)
(check <- InverseBrat(fitted(fit)))    # Probabilities of winning
qprob <- attr(fitted(fit), "probtie")  # Probabilities of a tie
qprobmat <- InverseBrat(c(qprob), NCo = nrow(ties))  # Pr(tie)
check + t(check) + qprobmat  # Should be 1s in the off-diagonals

Run the code above in your browser using DataLab