Quote:
Originally Posted by jlmcmchl
Total OPR should be calculated via the match results, without modification, with Cholesky Decomposition.
|
The only problem I see with that is DQs. If a team is DQ'd and doesn't play, does it make sense to include the 2-team alliance's score in the DQ'd team's OPR?
Quote:
|
The component OPRs, however, do not take surrogate/dqs into account. I propose that, for matches with surrogate/dq'd teams, those teams are not credited for that match: for their row in matrix A, none of the columns are incremented. However, for the non-surrogate/dq teams, the columns representing their alliance partners are incremented. So, matrix A will be asymmetric, which would require a different way to solve the system.
|
Doing what you suggested above does not cause the matrix for the normal equations to be asymmetric. It will still be square, symmetric, positive definite. It doesn't require a different way to solve the system.
I use the following nomenclature to avoid confusion: [A] is the alliances design matrix. It is a binary matrix (each element either 1 or 0). Its dimensions are 2MxT, where M is the number of matches (therefore 2M is the number of alliances) and T is the number of teams.
[b] is the column vector of alliance scores. Its dimensions are 2Mx1. Its elements come directly from the alliance scores in the MatchResults table.
[A][x]≈[b] is an overdetermined system of equations: there is no exact solution for [x].
To find the least squares solution for [A][x]≈[b] you can form and solve the normal equations.
Set [N]=[A']*[A] and [d]=[A']*[b]
Then [N][x]=[d] are the normal equations.
[N] will be square, symmetric, positive definite.
[N][x]=[d] has an exact solution, and that solution is the least-squares solution to [A][x]≈[b].
I took the MatchResults data from the ININD event, formed the design matrix [A], manually removed Red Team1 (5010) from the first match, used that modified [A] to compute N=[A']*[A], and tested [N] for symmetry. It was symmetric. I successfully used [N][x]=[d] to compute [x].
So bottom line, mathematically what you proposed creates no problem for the linear algebra.
[EDIT] BTW, nice work on that Python script. It worked for me straight out of the box :-)