## MATLAB code for Bradley-Terry models

Here are a few MATLAB functions that perform estimation in the Bradley-Terry model and its extension to the multicomparison case referred to as the Plackett-Luce model. For an explanation of these models, see the paper "MM algorithms for generalized Bradley-Terry models".

I've made minor changes made in the code, so the results of running these algorithms on the given datasets do not agree perfectly with published results (they're pretty close, though!).

Here are three different ways to fit a plain Bradley-Terry model given a dataset in win-matrix form (explained in the comments of the code). There is also a MATLAB (version 5) dataset with the results of the 1997 NFL season. For details on this dataset and on the three methods, see "Optimization transfer using surrogate objective functions".
1. btmm.m, which uses an MM method
2. btqn.m, which uses a quasi-Newton accelerated MM method
3. btnr.m, which uses a Newton-Raphson method
4. btcov.m, which returns an approximate covariance matrix for the MLE.
5. nfl1997.mat, the MATLAB version of the NFL dataset

## Plackett-Luce models

Here are at least two, maybe four, ways to fit a Plackett-Luce model. Unfortunately, I don't guarantee the success of algorithms placknr.m or placknr2.m; neither of these works, for example, with the NASCAR example given below. See the documentation in the code to understand how the dataset should be coded.

Unlike in the Bradley-Terry case, there really seems to be no good reason to use Newton-Raphson here; the placknr3 algorithm, which is a hybrid MM-Newton-Raphson algorithm, is included just for the sake of completeness and so one can (sort of) compare MM to Newton-Raphson in this example.

1. plackmm.m, which uses an MM method
2. placknr.m, an unmodified Newton-Raphson algorithm
3. placknr2.m, which uses step-halving withint a Newton-Raphson algorithm (theoretically, this ought to work because of the strict concavity of the loglikelihood; but numerically, the theory doesn't always help!)
4. placknr3.m, which uses a hybrid MM and Newton-Raphson algorithm (i.e., it uses MM whenever the NR step doesn't increase the likelihood).
5. nascar2002.mat, a MATLAB 5 dataset that can be used to test the algorithm; this is the same dataset referred to in my paper.
6. nascar2002.txt, a text version of the same dataset.
7. nascar2002.xls, an Excel spreadsheet containing all the NASCAR results plus some other stuff. You'll need this file to match the drivers with their ID numbers in nascar.mat. I'm not a racing fan, so there are some details about this spreadsheet I can't fully explain; mostly it's pretty self-explanatory though. This spreadsheet was painstakingly compiled using a great deal of cutting and pasting!