Quote:
Originally Posted by Ether
Can you post a brief overview of the method/algorithm you are using to compute OPR?
For example, are you forming the normal equations matrix N (square positive definite TxT matrix, where T is the number of teams) directly from the match scores data?
Or are you forming the 2MxT binary design matrix A (where M is the number of matches)?
Once you have N (or A), how are you using that to compute OPR?
.
|
I'm forming matrices A, b, and T: T is the list of teams (Tx1), b is the list of scores (2Mx1), and A is a matrix of which teams were playing which matches represented as 0s and 1s (2MxT). I think that's the same A you're referring to, but if not, A was created so that if team2, team3, and team5 played a match and got 100 points at an event with 10 teams, that row in the matrix would look like this:
0 1 1 0 1 0 0 0 0 0
And that row in b would be 100.
A and b are printed into the "misc" tab (b is the right-most column). T is printed directly into row 1 of the OPR tab. The equation to solve for OPR is put into the second row of the OPR tab:
=mmult(minverse(mmult(transpose(misc!A1:CX408), misc!A1:CX408)), mmult(transpose(misc!A1:CX408), misc!CY1:CY408))
which is the line (A'*A)\(A'*b) in your octave/matlab code
For anyone confused over what those equations do, it's just solving the following equation:
That equation is generated in the code because the size/location of the matrices varies (the one above is for MICMP data), which as Brendan said, you can access by making a copy of the sheet.
If that doesn't answer your question or I wasn't clear about something please let me know.