Ravi
Regular
- Joined
- Mar 21, 2006
- Messages
- 113
- Location
- Kirksville, MO, USA
- WCA ID
- 2005FERN01
- YouTube
- Visit Channel
I have long been of the opinion that a five-solve trimmed average measures a speedcuber’s skill too unreliably to decide the winner of a competition. Recent events have shown this observation to be correct, especially after the tightening of the top group of competitors that has taken place over the last several years. One case that comes to mind is Breandan Vallance’s spectacular yet improbable 10.74 average in last year’s world championship. Another is last year’s US Nationals: although Rowe did have the best overall performance, his victory must be attributed at least partly to chance, as the three rounds of the competition actually produced three different winners. As I write this, the 2010 edition of US Nationals promises to be even more so, as none of the top three cubers in the first round managed to return to the podium in round 2.
I recently calculated some statistics to test just how uncertain averages can be. I started by assuming that any given speedcuber’s times are modeled fairly accurately by a normal distribution (bell curve)--this ignores factors such as lucky cases, DNFs, nerves, and mechanical slips*, but it should be close enough for our purposes. Then any speedcuber can be represented essentially by two numbers: his or her mean and standard deviation. The purpose of taking averages, of course, is to decrease the standard deviation while preserving the mean. The question: How much do standard deviations decrease when averages are used?
There are two ways to find out, and I somewhat regrettably chose the one that didn’t involve solving Rubik’s Cubes all night. First, I programmed the trimmed-averaging process into Mathematica (the input is a list of arbitrary length):
trim[x_] := Drop[Drop[Sort[x], -1], 1]
avg[x_] := Mean[trim[x]]
Now it’s time for some number-crunching. I had Mathematica calculate a million random averages using the default mean of 0 and standard deviation of 1 (a translation and a dilation away from our ideal cuber’s distribution), then calculate the standard deviation of the averages.
StandardDeviation[Table[avg[RandomReal[NormalDistribution[0, 1], 5]], {i, 1000000}]]
I tried this several times, generally getting results around 0.4765. This means that the standard deviation of your averages is slightly less than half of the standard deviation of your raw times; that is, if you ordinarily have a standard deviation of 1.4 seconds, the standard deviation of your averages will likely be around 0.7 seconds. For comparison, I tried a few other averaging schemes, with the approximate coefficients listed below:
single solve (mean of 1): 1.000
avg (median) of 3: 0.670
mean of 3: 0.577
mean of 4: 0.500**
avg of 5: 0.477
mean of 5: 0.447
mean of 10: 0.316
avg of 12: 0.295
mean of 3 avgs of 5: 0.275***
avg of 15: 0.262
mean of 15: 0.258
mean of 20: 0.224
You can experiment with this by adjusting the “5” in the code above and, for untrimmed means, changing “avg” to “Mean”.
What do these statistics mean? Well, averages of 5 are certainly more precise than single solves, but it is not difficult to improve further. An average of 12, for example, theoretically has only 62% of the standard deviation of an average of 5. Moreover, most major competitions already have three rounds of five solves each, so using combined finals for 3x3 could cut standard deviations nearly in half without requiring any additional time in the schedule. Of course, if more than five solves were used to calculate averages, it may be necessary to allow, say, two dropped times instead of one for the odd DNF. Or, in the interest of maintaining compatibility with existing average records, it might make more sense to simply rank competitors based on the mean of their averages throughout the competition, in the same way that a golf tournament is scored. This would have no adverse effects on scheduling, compatibility with past records, or (in my opinion) suspense, but it would make our competition results much more precise (coefficient = 0.275).
In more practical terms, let’s imagine a pair of hypothetical competitors, A and B. A and B both have standard deviations of exactly one second, but A is half a second faster than B on average. If they compete with a single solve in a one-on-one competition, then A has a 63.8% chance of winning. With trimmed averages of 5, A has a 77.1% chance of winning. With a mean of three averages of 5, as I suggested above, A has a 90.1% chance of winning****.
In the next few hours, the final round of this year’s US Nationals will take place. If, as I expect, no single person emerges as a clear champion, then I believe it will be time to seriously consider a more precise averaging scheme for our competitions.
May the best cuber win.
* I suspect that all of these factors, especially nerves, would mildly increase unpredictability and therefore all standard deviations. Also, the distribution is somewhat skewed in real life, since (for example) a speedcuber who averages 11 seconds is much more likely to screw up somehow and solve in 18 seconds than to get lucky enough to solve in 4 seconds. A generalized extreme value distribution is likely to provide a better model, but only slightly so.
** You may notice that the coefficient for a mean of n is 1/sqrt(n). This follows from the fact that for independent X and Y, stdev(X+Y) = sqrt[stdev(X)^2 + stdev(Y)^2]. Exact values for the standard deviations of trimmed averages are less obvious.
*** Mathematica code:
StandardDeviation[Table[Mean[Table[avg[RandomReal[NormalDistribution[0, 1], 5]], {i, 3}]], {i,
1000000}]]
**** Mathematica code:
N[CDF[NormalDistribution[0, Sqrt[2]], 0.5]]
N[CDF[NormalDistribution[0, Sqrt[2]*0.4765], 0.5]]
N[CDF[NormalDistribution[0, Sqrt[2]*0.275], 0.5]]
The factor of sqrt(2) comes from the fact that I did the calculation by subtracting two normal distributions centered on the origin and checking the probability of the signed difference being less than 0.5. Standard deviations of differences of normal distributions are the same as those of sums--see the double-asterisked item above.
I recently calculated some statistics to test just how uncertain averages can be. I started by assuming that any given speedcuber’s times are modeled fairly accurately by a normal distribution (bell curve)--this ignores factors such as lucky cases, DNFs, nerves, and mechanical slips*, but it should be close enough for our purposes. Then any speedcuber can be represented essentially by two numbers: his or her mean and standard deviation. The purpose of taking averages, of course, is to decrease the standard deviation while preserving the mean. The question: How much do standard deviations decrease when averages are used?
There are two ways to find out, and I somewhat regrettably chose the one that didn’t involve solving Rubik’s Cubes all night. First, I programmed the trimmed-averaging process into Mathematica (the input is a list of arbitrary length):
trim[x_] := Drop[Drop[Sort[x], -1], 1]
avg[x_] := Mean[trim[x]]
Now it’s time for some number-crunching. I had Mathematica calculate a million random averages using the default mean of 0 and standard deviation of 1 (a translation and a dilation away from our ideal cuber’s distribution), then calculate the standard deviation of the averages.
StandardDeviation[Table[avg[RandomReal[NormalDistribution[0, 1], 5]], {i, 1000000}]]
I tried this several times, generally getting results around 0.4765. This means that the standard deviation of your averages is slightly less than half of the standard deviation of your raw times; that is, if you ordinarily have a standard deviation of 1.4 seconds, the standard deviation of your averages will likely be around 0.7 seconds. For comparison, I tried a few other averaging schemes, with the approximate coefficients listed below:
single solve (mean of 1): 1.000
avg (median) of 3: 0.670
mean of 3: 0.577
mean of 4: 0.500**
avg of 5: 0.477
mean of 5: 0.447
mean of 10: 0.316
avg of 12: 0.295
mean of 3 avgs of 5: 0.275***
avg of 15: 0.262
mean of 15: 0.258
mean of 20: 0.224
You can experiment with this by adjusting the “5” in the code above and, for untrimmed means, changing “avg” to “Mean”.
What do these statistics mean? Well, averages of 5 are certainly more precise than single solves, but it is not difficult to improve further. An average of 12, for example, theoretically has only 62% of the standard deviation of an average of 5. Moreover, most major competitions already have three rounds of five solves each, so using combined finals for 3x3 could cut standard deviations nearly in half without requiring any additional time in the schedule. Of course, if more than five solves were used to calculate averages, it may be necessary to allow, say, two dropped times instead of one for the odd DNF. Or, in the interest of maintaining compatibility with existing average records, it might make more sense to simply rank competitors based on the mean of their averages throughout the competition, in the same way that a golf tournament is scored. This would have no adverse effects on scheduling, compatibility with past records, or (in my opinion) suspense, but it would make our competition results much more precise (coefficient = 0.275).
In more practical terms, let’s imagine a pair of hypothetical competitors, A and B. A and B both have standard deviations of exactly one second, but A is half a second faster than B on average. If they compete with a single solve in a one-on-one competition, then A has a 63.8% chance of winning. With trimmed averages of 5, A has a 77.1% chance of winning. With a mean of three averages of 5, as I suggested above, A has a 90.1% chance of winning****.
In the next few hours, the final round of this year’s US Nationals will take place. If, as I expect, no single person emerges as a clear champion, then I believe it will be time to seriously consider a more precise averaging scheme for our competitions.
May the best cuber win.
* I suspect that all of these factors, especially nerves, would mildly increase unpredictability and therefore all standard deviations. Also, the distribution is somewhat skewed in real life, since (for example) a speedcuber who averages 11 seconds is much more likely to screw up somehow and solve in 18 seconds than to get lucky enough to solve in 4 seconds. A generalized extreme value distribution is likely to provide a better model, but only slightly so.
** You may notice that the coefficient for a mean of n is 1/sqrt(n). This follows from the fact that for independent X and Y, stdev(X+Y) = sqrt[stdev(X)^2 + stdev(Y)^2]. Exact values for the standard deviations of trimmed averages are less obvious.
*** Mathematica code:
StandardDeviation[Table[Mean[Table[avg[RandomReal[NormalDistribution[0, 1], 5]], {i, 3}]], {i,
1000000}]]
**** Mathematica code:
N[CDF[NormalDistribution[0, Sqrt[2]], 0.5]]
N[CDF[NormalDistribution[0, Sqrt[2]*0.4765], 0.5]]
N[CDF[NormalDistribution[0, Sqrt[2]*0.275], 0.5]]
The factor of sqrt(2) comes from the fact that I did the calculation by subtracting two normal distributions centered on the origin and checking the probability of the signed difference being less than 0.5. Standard deviations of differences of normal distributions are the same as those of sums--see the double-asterisked item above.