On Saturday I participated in the Tri the Illini triathlon on the University of Illinois campus. You can read all about the race here. One of the interesting things about this race is that participants were started 10 seconds apart in order of their estimated time for the 300 meter swim in the indoor pool. In theory, if everyone swims at their estimated time nobody will have to pass anyone else in the pool. Now that the results have been posted, let's take a quick look to see how accurate the participants' predictions were.
Import the data from the results web page.
data = Import["http://www.mattoonmultisport.com/images/stories/results/trithetri/overall.htm", {"HTML", "FullData"}];
Clean it up a bit by removing empty elements, labels, and column headers. Basically, we only want the entries with an integer value in the first column (the overall place).
Length[data]
9
data = DeleteCases[data, {}|{{}}];
Length[data]
1
data = First[data];
Length[data]
345
Take[data, 12]//InputForm
{{"", "------- Swim -------", "------- T1 -------",
"------- Bike -------", "------- T2 -------", "------- Run -------",
"Total"}, {"Place", "Name", "Bib No", "Age", "Rnk", "Time", "Pace",
"Rnk", "Time", "Pace", "Rnk", "Time", "Rate", "Rnk", "Time", "Pace",
"Rnk", "Time", "Pace", "Time"}, {1, "Daniel Bretscher", 8, 26, 3,
"04:19.75", "23:59/M", 1, "00:34.00", "", 1, "26:42.95", "24.7mph",
19, "00:44.25", "", 2, "16:09.15", "5:23/M", "48:30.10"},
{2, "Michael Bridenbaug", 27, 25, 15, "04:39.50", "25:50/M", 6,
"00:43.65", "", 5, "28:16.55", "23.3mph", 6, "00:37.55", "", 4,
"16:15.75", "5:25/M", "50:33.00"}, {3, "Peter Garde", 17, 24, 24,
"04:53.05", "27:08/M", 51, "01:21.90", "", 2, "27:06.50", "24.4mph",
109, "01:05.95", "", 3, "16:13.05", "5:24/M", "50:40.45"},
{4, "Nickolaus Early", 16, 29, 2, "04:07.30", "22:52/M", 18,
"00:57.45", "", 4, "27:58.40", "23.6mph", 4, "00:36.40", "", 9,
"18:01.25", "6:00/M", "51:40.80"}, {5, "Zach Rosenbarger", 78, 33, 50,
"05:15.85", "29:10/M", 45, "01:16.75", "", 3, "27:42.00", "23.8mph",
54, "00:53.30", "", 5, "17:11.80", "5:44/M", "52:19.70"},
{6, "Edward Elliot", 32, 28, 11, "04:35.45", "25:28/M", 16, "00:56.15",
"", 6, "28:23.40", "23.3mph", 38, "00:48.85", "", 7, "17:43.75",
"5:54/M", "52:27.60"}, {7, "Ryan Forster", 28, 27, 35, "05:03.95",
"28:03/M", 9, "00:46.20", "", 12, "29:39.95", "22.3mph", 39,
"00:49.05", "", 11, "18:07.00", "6:02/M", "54:26.15"},
{8, "Jun Yamaguchi", 15, 27, 27, "04:58.20", "27:36/M", 2, "00:37.85",
"", 11, "29:36.70", "22.3mph", 30, "00:47.05", "", 13, "18:49.30",
"6:16/M", "54:49.10"}, {9, "Scott Paluska", 63, 42, 71, "05:35.30",
"31:01/M", 3, "00:40.70", "", 7, "28:44.00", "23.0mph", 118,
"01:06.90", "", 12, "18:43.60", "6:14/M", "54:50.50"},
{10, "Rob Raguet-Schoofield", 42, 31, 44, "05:09.75", "28:37/M", 20,
"01:01.55", "", 18, "30:10.50", "21.9mph", 45, "00:51.45", "", 8,
"17:52.60", "5:57/M", "55:05.85"}}
"------- Bike -------", "------- T2 -------", "------- Run -------",
"Total"}, {"Place", "Name", "Bib No", "Age", "Rnk", "Time", "Pace",
"Rnk", "Time", "Pace", "Rnk", "Time", "Rate", "Rnk", "Time", "Pace",
"Rnk", "Time", "Pace", "Time"}, {1, "Daniel Bretscher", 8, 26, 3,
"04:19.75", "23:59/M", 1, "00:34.00", "", 1, "26:42.95", "24.7mph",
19, "00:44.25", "", 2, "16:09.15", "5:23/M", "48:30.10"},
{2, "Michael Bridenbaug", 27, 25, 15, "04:39.50", "25:50/M", 6,
"00:43.65", "", 5, "28:16.55", "23.3mph", 6, "00:37.55", "", 4,
"16:15.75", "5:25/M", "50:33.00"}, {3, "Peter Garde", 17, 24, 24,
"04:53.05", "27:08/M", 51, "01:21.90", "", 2, "27:06.50", "24.4mph",
109, "01:05.95", "", 3, "16:13.05", "5:24/M", "50:40.45"},
{4, "Nickolaus Early", 16, 29, 2, "04:07.30", "22:52/M", 18,
"00:57.45", "", 4, "27:58.40", "23.6mph", 4, "00:36.40", "", 9,
"18:01.25", "6:00/M", "51:40.80"}, {5, "Zach Rosenbarger", 78, 33, 50,
"05:15.85", "29:10/M", 45, "01:16.75", "", 3, "27:42.00", "23.8mph",
54, "00:53.30", "", 5, "17:11.80", "5:44/M", "52:19.70"},
{6, "Edward Elliot", 32, 28, 11, "04:35.45", "25:28/M", 16, "00:56.15",
"", 6, "28:23.40", "23.3mph", 38, "00:48.85", "", 7, "17:43.75",
"5:54/M", "52:27.60"}, {7, "Ryan Forster", 28, 27, 35, "05:03.95",
"28:03/M", 9, "00:46.20", "", 12, "29:39.95", "22.3mph", 39,
"00:49.05", "", 11, "18:07.00", "6:02/M", "54:26.15"},
{8, "Jun Yamaguchi", 15, 27, 27, "04:58.20", "27:36/M", 2, "00:37.85",
"", 11, "29:36.70", "22.3mph", 30, "00:47.05", "", 13, "18:49.30",
"6:16/M", "54:49.10"}, {9, "Scott Paluska", 63, 42, 71, "05:35.30",
"31:01/M", 3, "00:40.70", "", 7, "28:44.00", "23.0mph", 118,
"01:06.90", "", 12, "18:43.60", "6:14/M", "54:50.50"},
{10, "Rob Raguet-Schoofield", 42, 31, 44, "05:09.75", "28:37/M", 20,
"01:01.55", "", 18, "30:10.50", "21.9mph", 45, "00:51.45", "", 8,
"17:52.60", "5:57/M", "55:05.85"}}
data = DeleteCases[data, x_/;Head[First[x]] === String];
Length[data]
301
places = data[[All, 1]];
places==Range[301]
True
swimSeeds = data[[All, 3]];
swimPlaces = data[[All, 5]];
swimΔ = swimPlaces - swimSeeds;
Take a look at {overall place, swim seed, swim place, swim Δ} for each participant. A negative Δ means the participant's swim place was better than their seeded swim place, while a positive Δ means the participant's swim place was worse than their seeded swim place.
Grid[Prepend[Transpose[{places, swimSeeds, swimPlaces, swimΔ}], {"Overall\nPlace", "Swim\nSeed", "Swim\nPlace", "Swim\nΔ"}], Dividers->All]
Overall Place | Swim Seed | Swim Place | Swim Δ |
1 | 8 | 3 | - 5 |
2 | 27 | 15 | - 12 |
3 | 17 | 24 | 7 |
4 | 16 | 2 | - 14 |
5 | 78 | 50 | - 28 |
6 | 32 | 11 | - 21 |
7 | 28 | 35 | 7 |
8 | 15 | 27 | 12 |
9 | 63 | 71 | 8 |
10 | 42 | 44 | 2 |
11 | 9 | 9 | 0 |
12 | 62 | 31 | - 31 |
13 | 54 | 105 | 51 |
14 | 30 | 14 | - 16 |
15 | 200 | 155 | - 45 |
16 | 14 | 8 | - 6 |
17 | 83 | 83 | 0 |
18 | 6 | 33 | 27 |
19 | 47 | 53 | 6 |
20 | 66 | 34 | - 32 |
21 | 40 | 102 | 62 |
22 | 86 | 106 | 20 |
23 | 100 | 75 | - 25 |
24 | 45 | 59 | 14 |
25 | 120 | 58 | - 62 |
26 | 4 | 12 | 8 |
27 | 3 | 36 | 33 |
28 | 33 | 13 | - 20 |
29 | 51 | 25 | - 26 |
30 | 72 | 115 | 43 |
31 | 12 | 16 | 4 |
32 | 39 | 7 | - 32 |
33 | 65 | 66 | 1 |
34 | 330 | 240 | - 90 |
35 | 48 | 64 | 16 |
36 | 21 | 6 | - 15 |
37 | 13 | 5 | - 8 |
38 | 68 | 56 | - 12 |
39 | 212 | 89 | - 123 |
40 | 214 | 79 | - 135 |
41 | 67 | 45 | - 22 |
42 | 76 | 21 | - 55 |
43 | 75 | 211 | 136 |
44 | 81 | 63 | - 18 |
45 | 251 | 172 | - 79 |
46 | 44 | 114 | 70 |
47 | 162 | 95 | - 67 |
48 | 7 | 4 | - 3 |
49 | 74 | 92 | 18 |
50 | 55 | 48 | - 7 |
51 | 52 | 29 | - 23 |
52 | 237 | 124 | - 113 |
53 | 11 | 18 | 7 |
54 | 77 | 98 | 21 |
55 | 56 | 30 | - 26 |
56 | 117 | 104 | - 13 |
57 | 1 | 1 | 0 |
58 | 300 | 74 | - 226 |
59 | 151 | 125 | - 26 |
60 | 139 | 82 | - 57 |
61 | 274 | 151 | - 123 |
62 | 64 | 22 | - 42 |
63 | 122 | 87 | - 35 |
64 | 36 | 37 | 1 |
65 | 250 | 243 | - 7 |
66 | 154 | 148 | - 6 |
67 | 121 | 90 | - 31 |
68 | 136 | 258 | 122 |
69 | 282 | 146 | - 136 |
70 | 87 | 69 | - 18 |
71 | 112 | 110 | - 2 |
72 | 315 | 278 | - 37 |
73 | 24 | 19 | - 5 |
74 | 80 | 77 | - 3 |
75 | 135 | 184 | 49 |
76 | 69 | 97 | 28 |
77 | 185 | 163 | - 22 |
78 | 59 | 49 | - 10 |
79 | 128 | 94 | - 34 |
80 | 60 | 51 | - 9 |
81 | 187 | 28 | - 159 |
82 | 35 | 20 | - 15 |
83 | 113 | 134 | 21 |
84 | 90 | 40 | - 50 |
85 | 163 | 17 | - 146 |
86 | 22 | 38 | 16 |
87 | 133 | 200 | 67 |
88 | 267 | 73 | - 194 |
89 | 256 | 145 | - 111 |
90 | 92 | 122 | 30 |
91 | 159 | 206 | 47 |
92 | 165 | 130 | - 35 |
93 | 137 | 153 | 16 |
94 | 149 | 128 | - 21 |
95 | 104 | 80 | - 24 |
96 | 182 | 136 | - 46 |
97 | 26 | 46 | 20 |
98 | 172 | 93 | - 79 |
99 | 241 | 55 | - 186 |
100 | 277 | 109 | - 168 |
101 | 114 | 165 | 51 |
102 | 97 | 103 | 6 |
103 | 131 | 159 | 28 |
104 | 228 | 194 | - 34 |
105 | 46 | 117 | 71 |
106 | 141 | 199 | 58 |
107 | 132 | 162 | 30 |
108 | 246 | 132 | - 114 |
109 | 115 | 205 | 90 |
110 | 213 | 183 | - 30 |
111 | 127 | 181 | 54 |
112 | 157 | 147 | - 10 |
113 | 254 | 131 | - 123 |
114 | 266 | 256 | - 10 |
115 | 41 | 61 | 20 |
116 | 61 | 39 | - 22 |
117 | 43 | 41 | - 2 |
118 | 191 | 196 | 5 |
119 | 106 | 257 | 151 |
120 | 96 | 81 | - 15 |
121 | 234 | 60 | - 174 |
122 | 201 | 85 | - 116 |
123 | 108 | 142 | 34 |
124 | 161 | 218 | 57 |
125 | 123 | 149 | 26 |
126 | 98 | 150 | 52 |
127 | 138 | 271 | 133 |
128 | 265 | 179 | - 86 |
129 | 195 | 54 | - 141 |
130 | 50 | 86 | 36 |
131 | 53 | 161 | 108 |
132 | 170 | 137 | - 33 |
133 | 58 | 26 | - 32 |
134 | 169 | 120 | - 49 |
135 | 204 | 249 | 45 |
136 | 342 | 65 | - 277 |
137 | 91 | 100 | 9 |
138 | 103 | 47 | - 56 |
139 | 125 | 182 | 57 |
140 | 82 | 68 | - 14 |
141 | 88 | 76 | - 12 |
142 | 147 | 241 | 94 |
143 | 238 | 107 | - 131 |
144 | 303 | 202 | - 101 |
145 | 70 | 191 | 121 |
146 | 297 | 247 | - 50 |
147 | 188 | 178 | - 10 |
148 | 2 | 10 | 8 |
149 | 130 | 164 | 34 |
150 | 311 | 288 | - 23 |
151 | 168 | 187 | 19 |
152 | 283 | 158 | - 125 |
153 | 144 | 216 | 72 |
154 | 295 | 287 | - 8 |
155 | 208 | 244 | 36 |
156 | 287 | 157 | - 130 |
157 | 111 | 176 | 65 |
158 | 199 | 111 | - 88 |
159 | 272 | 223 | - 49 |
160 | 179 | 242 | 63 |
161 | 84 | 190 | 106 |
162 | 310 | 152 | - 158 |
163 | 109 | 118 | 9 |
164 | 37 | 67 | 30 |
165 | 180 | 227 | 47 |
166 | 340 | 135 | - 205 |
167 | 328 | 193 | - 135 |
168 | 263 | 197 | - 66 |
169 | 312 | 250 | - 62 |
170 | 148 | 143 | - 5 |
171 | 242 | 224 | - 18 |
172 | 278 | 230 | - 48 |
173 | 253 | 139 | - 114 |
174 | 292 | 279 | - 13 |
175 | 10 | 32 | 22 |
176 | 276 | 254 | - 22 |
177 | 18 | 101 | 83 |
178 | 155 | 167 | 12 |
179 | 271 | 276 | 5 |
180 | 102 | 169 | 67 |
181 | 192 | 248 | 56 |
182 | 257 | 78 | - 179 |
183 | 93 | 210 | 117 |
184 | 346 | 294 | - 52 |
185 | 255 | 269 | 14 |
186 | 158 | 192 | 34 |
187 | 49 | 171 | 122 |
188 | 126 | 201 | 75 |
189 | 143 | 140 | - 3 |
190 | 231 | 88 | - 143 |
191 | 220 | 186 | - 34 |
192 | 298 | 177 | - 121 |
193 | 107 | 144 | 37 |
194 | 94 | 129 | 35 |
195 | 129 | 188 | 59 |
196 | 184 | 274 | 90 |
197 | 116 | 273 | 157 |
198 | 224 | 259 | 35 |
199 | 186 | 214 | 28 |
200 | 174 | 198 | 24 |
201 | 290 | 221 | - 69 |
202 | 95 | 175 | 80 |
203 | 152 | 215 | 63 |
204 | 189 | 246 | 57 |
205 | 156 | 239 | 83 |
206 | 336 | 141 | - 195 |
207 | 118 | 174 | 56 |
208 | 197 | 91 | - 106 |
209 | 194 | 280 | 86 |
210 | 196 | 212 | 16 |
211 | 291 | 121 | - 170 |
212 | 190 | 189 | - 1 |
213 | 247 | 119 | - 128 |
214 | 286 | 126 | - 160 |
215 | 219 | 52 | - 167 |
216 | 229 | 170 | - 59 |
217 | 23 | 23 | 0 |
218 | 236 | 277 | 41 |
219 | 235 | 265 | 30 |
220 | 252 | 204 | - 48 |
221 | 258 | 281 | 23 |
222 | 99 | 84 | - 15 |
223 | 211 | 226 | 15 |
224 | 279 | 272 | - 7 |
225 | 216 | 267 | 51 |
226 | 167 | 116 | - 51 |
227 | 243 | 275 | 32 |
228 | 262 | 220 | - 42 |
229 | 230 | 154 | - 76 |
230 | 288 | 166 | - 122 |
231 | 337 | 251 | - 86 |
232 | 269 | 228 | - 41 |
233 | 233 | 252 | 19 |
234 | 20 | 208 | 188 |
235 | 110 | 185 | 75 |
236 | 308 | 284 | - 24 |
237 | 261 | 231 | - 30 |
238 | 245 | 127 | - 118 |
239 | 343 | 283 | - 60 |
240 | 160 | 70 | - 90 |
241 | 150 | 264 | 114 |
242 | 85 | 156 | 71 |
243 | 5 | 173 | 168 |
244 | 347 | 213 | - 134 |
245 | 153 | 203 | 50 |
246 | 175 | 219 | 44 |
247 | 339 | 298 | - 41 |
248 | 134 | 290 | 156 |
249 | 203 | 42 | - 161 |
250 | 348 | 282 | - 66 |
251 | 289 | 112 | - 177 |
252 | 124 | 168 | 44 |
253 | 218 | 238 | 20 |
254 | 145 | 207 | 62 |
255 | 119 | 113 | - 6 |
256 | 183 | 123 | - 60 |
257 | 299 | 236 | - 63 |
258 | 73 | 62 | - 11 |
259 | 302 | 261 | - 41 |
260 | 29 | 96 | 67 |
261 | 57 | 57 | 0 |
262 | 173 | 225 | 52 |
263 | 281 | 255 | - 26 |
264 | 31 | 99 | 68 |
265 | 275 | 270 | - 5 |
266 | 319 | 296 | - 23 |
267 | 181 | 245 | 64 |
268 | 178 | 301 | 123 |
269 | 89 | 108 | 19 |
270 | 307 | 291 | - 16 |
271 | 294 | 229 | - 65 |
272 | 215 | 43 | - 172 |
273 | 176 | 160 | - 16 |
274 | 270 | 180 | - 90 |
275 | 240 | 195 | - 45 |
276 | 217 | 263 | 46 |
277 | 318 | 302 | - 16 |
278 | 316 | 303 | - 13 |
279 | 285 | 237 | - 48 |
280 | 280 | 297 | 17 |
281 | 177 | 72 | - 105 |
282 | 207 | 234 | 27 |
283 | 314 | 217 | - 97 |
284 | 309 | 232 | - 77 |
285 | 306 | 253 | - 53 |
286 | 248 | 292 | 44 |
287 | 193 | 289 | 96 |
288 | 296 | 286 | - 10 |
289 | 227 | 285 | 58 |
290 | 171 | 222 | 51 |
291 | 345 | 304 | - 41 |
292 | 305 | 262 | - 43 |
293 | 71 | 268 | 197 |
294 | 264 | 266 | 2 |
295 | 226 | 235 | 9 |
296 | 225 | 209 | - 16 |
297 | 273 | 295 | 22 |
298 | 244 | 260 | 16 |
299 | 142 | 305 | 163 |
300 | 209 | 306 | 97 |
301 | 313 | 307 | - 6 |
It looks like the race leaders were fairly accurate in their predictions, while the differences start to become greater around 40th place or so.
BarChart[swimΔ, FrameLabel->{"Overall Place", "Swim Δ"}, Frame->{True, True, False, False}]
From the sorted Δs it looks like about half of the participants were within 50 places or so of their seeds, while a few were way off (in both directions).
BarChart[Sort[swimΔ]]
Median[Abs@swimΔ]
41
N[Mean[Abs@swimΔ]]
56.70099667774086`
N[StandardDeviation[Abs@swimΔ]]
51.80100030247153`
Commonest[Abs@swimΔ]
{16}
tally = Sort[Tally[Abs@swimΔ]]
{{0, 5}, {1, 3}, {2, 4}, {3, 3}, {4, 1}, {5, 6}, {6, 6}, {7, 6}, {8, 5}, {9, 4}, {10, 5}, {11, 1}, {12, 5}, {13, 3}, {14, 4}, {15, 5}, {16, 10}, {17, 1}, {18, 4}, {19, 3}, {20, 5}, {21, 4}, {22, 6}, {23, 4}, {24, 3}, {25, 1}, {26, 5}, {27, 2}, {28, 4}, {30, 6}, {31, 2}, {32, 4}, {33, 2}, {34, 6}, {35, 4}, {36, 2}, {37, 2}, {41, 5}, {42, 2}, {43, 2}, {44, 3}, {45, 3}, {46, 2}, {47, 2}, {48, 3}, {49, 3}, {50, 3}, {51, 5}, {52, 3}, {53, 1}, {54, 1}, {55, 1}, {56, 3}, {57, 4}, {58, 2}, {59, 2}, {60, 2}, {62, 4}, {63, 3}, {64, 1}, {65, 2}, {66, 2}, {67, 4}, {68, 1}, {69, 1}, {70, 1}, {71, 2}, {72, 1}, {75, 2}, {76, 1}, {77, 1}, {79, 2}, {80, 1}, {83, 2}, {86, 3}, {88, 1}, {90, 5}, {94, 1}, {96, 1}, {97, 2}, {101, 1}, {105, 1}, {106, 2}, {108, 1}, {111, 1}, {113, 1}, {114, 3}, {116, 1}, {117, 1}, {118, 1}, {121, 2}, {122, 3}, {123, 4}, {125, 1}, {128, 1}, {130, 1}, {131, 1}, {133, 1}, {134, 1}, {135, 2}, {136, 2}, {141, 1}, {143, 1}, {146, 1}, {151, 1}, {156, 1}, {157, 1}, {158, 1}, {159, 1}, {160, 1}, {161, 1}, {163, 1}, {167, 1}, {168, 2}, {170, 1}, {172, 1}, {174, 1}, {177, 1}, {179, 1}, {186, 1}, {188, 1}, {194, 1}, {195, 1}, {197, 1}, {205, 1}, {226, 1}, {277, 1}}
BarChart[Range[0, Max[tally[[All, 1]]]]/.Append[Apply[Rule, tally, 1], _Integer->0], FrameLabel->{TraditionalForm[Abs["swimΔ"]], "Count"}, Frame->{True, True, False, False}]
It looks like most people were 40-50 places off (in one direction or the other) from their seed. This is higher than I would have expected. The most common difference was 16 places. There must have been a lot of passing going on.
2 comments:
Interesting. I'd speculate that there are a few factors behind the differences in accuracy between top finishers and the rest. First is the obvious - faster racers (and better swimmers) probably have a better idea of what they can do. They most likely train more and pay attention to the clock. Second might be the combined effect of there being very few really strong swimmers and that most people probably rounded their estimate to the nearest 10, 15, 30, or even 60 seconds. This would result in many subgroups of people (particularly around the mode, which I am guessing included average-to-slow swimmers) that provided the exact same estimate, making the start order random within each subgroup. Of course, if their estimates are still reasonably accurate, one would expect that the 10 second buffer would keep passing to a minimum. Third, with such a short swim, there were probably many clusters of swimmers with very close actual swim times, but separated by many ordinal places in swim time. In this case, one could have an accurate estimate but still have a high swim place delta. I would expect this effect to be greatest for swimmers near the median. None of this explains the guy in front of me that was walking through the shallows. Congratulations on your delta of 2!
I'm curious though...if you start 10s behind someone but end up only 5s behind that person at the end of the leg, wouldn't your swim place be higher but you did NOT pass the person? Something I would want to have explained. Thanks!
Post a Comment