Skip to content

Commit c5b99cf

Browse files
committed
added flash grade analyses
1 parent c0dea8e commit c5b99cf

22 files changed

+105
-11
lines changed

R/ascent-plotting.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ ascent.summary <- function(lb.routes, gradeColName="grade", successColName="succ
3131
##########################################################################################
3232
plot.all.attempts <- function(lb) {
3333

34-
climbers <- unique(lb$account.id)
34+
climbers <- sort(unique(lb$account.id))
3535

3636
legend = c();
3737

R/bayesian-climbing-analysis.Rmd

+16-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ params:
99
startDate: "2016-08-01"
1010
endDate: "2021-08-01"
1111
filter.by.tickprop.lrp: FALSE
12-
per.session: TRUE
12+
per.session: FALSE
1313
min.ascents: 400
1414
min.failures: 1
1515
in.path: "~/Git/climbing-grades/data/processed/"
@@ -194,16 +194,26 @@ mean.grade <- unlist(mean.grade)
194194
195195
hist(mean.grade)
196196
197+
hist(data$m)
198+
199+
197200
```
198201

199-
```{r}
200-
summary <- table(data$df$account.id, data$df$ascent_factor)
201-
quantile(summary[,"dog"]+summary[,"attempt"]+summary[,"working"], c(0, 0.025, 0.05, 0.1, 0.5, 0.9, 0.95, 0.975, 1))
202202

203-
quantile((summary[,"dog"]+summary[,"attempt"]+summary[,"working"])/rowSums(summary), c(0, 0.025, 0.05, 0.5, 0.95, 0.975,1))
203+
```{r}
204+
summary <- table(data$df$account.id, data$df$ascent.type)
204205
205206
summary(summary[,"dog"]+summary[,"attempt"]+summary[,"working"]+summary[,"retreat"])
206207
207-
summary((summary[,"dog"]+summary[,"attempt"]+summary[,"working"]+summary[,"retreat"])/rowSums(summary))
208+
fail.fraction <- (summary[,"dog"]+summary[,"attempt"]+summary[,"working"]+summary[,"retreat"])/rowSums(summary)
209+
210+
summary(fail.fraction)
211+
212+
```
213+
214+
```{r}
215+
216+
208217
218+
plot(data$m, fail.fraction)
209219
```

R/produce-analysis-data.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ produce.analysis.data <- function(params, res, routes) {
5555
df.top <- res3$df
5656
df.top$ascent.type <- as.character(df.top$ascent.type)
5757

58-
climbers <- unique(df.top$account.id);
58+
climbers <- sort(unique(df.top$account.id));
5959
df.final = df.top
6060
final.filter.results = res3$filter.results
6161

828 KB
Binary file not shown.

bibliography/2001.05388.pdf

477 KB
Binary file not shown.
275 KB
Binary file not shown.

bibliography/3292500.3330831.pdf

775 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

bibliography/PhysicalDeterminants.pdf

1.42 MB
Binary file not shown.

bibliography/WHR.pdf

324 KB
Binary file not shown.

manuscript/ClimbingGrades.tex

+6-2
Original file line numberDiff line numberDiff line change
@@ -295,11 +295,15 @@ \section*{Discussion and Conclusion}
295295

296296
The most questionable detail of the model presented is the idea that the probability of a successful ascent remains the same after each previous attempt of the route, i.e. practising a particle route does not improve the climber's chance of success. This is clearly a bad assumption, so at best the probability of success implied by the Bradley-Terry model should be considered as some sort of ``effective'' probability, averaged over different levels of practice. The real underlying probability is probably increasing with practice. The problems with developing a model that admits learning are at least two-fold: (i) we expect some routes are more amenable to practice than others, and (ii) it is unclear what functional form the expected improvement in probability per attempt should take.
297297

298-
Suffice to say, there is still much work to do. Besides considerations above, foremost in our mind is the need to adapt recently developed whole-history inference methods to account for ascertainment biases in public repository data in a much more rigorous way than pursued here. This will require a better understanding of the differing ways that climbers approach self-reporting of climbing ascents. It seems likely that climber that logs their own ascent and attempts are likely to be susceptible to various biases and to follow differing conventions, depending on their purpose for making a public log book of their ascents. Data-driven approaches to learning about these differing conventions and biases in order to classifying climbers by their logging approach is an obvious next step.
298+
Selective logging of failures is a major concern. It is clear that most climbers don't log all failures. It seems likely that failures on easy routes would be more embarrassing than failures on harder routes. So if this motivation is no action, then harder routes will be appear relatively harder than easy routes, since the failures are underreported for easier routes. This would lead to an overestimation of the slope of the grade scale.
299+
300+
Selection bias is another concern. This is the propensity of climbers to chose routes that are at the easier end of the grade, or at least routes that suit their climbing style (rather than choosing a random climb at the grade). There are two reasons why we think that selection bias shouldn't have a large impact on the estimate of the climbing grade slope parameter. Firstly, climbers are probably less selective at low to middle grades, and the slope is derived from the full ranges of grades that a climber attempts. Secondly, if a climber is selective at all grades, such a bias doesn't change the slope, but instead changes the intercept, because in each grade the result will be to select from the lower end of the grade, which will still result in the same slope. The main result of such selection bias will be an overestimate the grade of the climber by up to 1 grade. So selection bias will overestimate a climber's ability a bit, but it won't have a big effect on the fundamental grade scale parameter estimate. The worst case scenario will be if all climbers only climb relatively hard routes from they choices in their lowest grade and relatively easy routes from the choices in their hardest grade. This would mean the true range in the x-axis of the regression is actually up to a grade less than what is used to compute the slope. So the estimated slope will be flatter than the true slope. This extreme scenario would flatten the slope by about $(k-1)/k$, where $k$ is the difference between the highest grade and the lowest grade. In our data set the interquartile range for $k$ is 8-10. So the worst case scenario if everybody is maximally biased in this way is an underestimate of the slope of about 10\%.
301+
302+
Suffice to say, there is still much work to do. Foremost in our mind is the need to adapt recently developed whole-history inference methods to account for biases in public repository data in a much more rigorous way than pursued here. This will require a better understanding of the differing ways that climbers approach self-reporting of climbing ascents. It seems likely that climber that logs their own ascent and attempts are likely to be susceptible to various biases and to follow differing conventions, depending on their purpose for making a public log book of their ascents. Data-driven approaches to learning about these differing conventions and biases in order to classifying climbers by their logging approach is an obvious next step.
299303

300304
\section*{Acknowledgement}
301305

302-
The authors would like to thank Simon Dale and Ulf Fuchslueger from \url{thecrag.com}, for providing access to the theCrag API (\url{https://www.thecrag.com/en/article/api}) so that the public ascent data could be downloaded programmatically for the analyses produced in this work. In addition we thank Dr Joseph Heled, Daniel Krippner, Dr Michael Matschiner, and Dr Tim Vaughan for helpful discussions on earlier versions of this manuscript.
306+
The authors would like to thank Simon Dale and Ulf Fuchslueger from \url{thecrag.com}, for providing access to the theCrag API (\url{https://www.thecrag.com/en/article/api}) so that the public ascent data could be downloaded programmatically for the analyses produced in this work. In addition we thank Simon Dale, Dr Joseph Heled, Daniel Krippner, Dr Michael Matschiner, and Dr Tim Vaughan for helpful discussions on earlier versions of this manuscript.
303307

304308
\printglossaries
305309

manuscript/SupplementaryInformation-ClimbingGrades.tex

+22
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,28 @@ \section{Assessing the suitability of the logistic model for climbing grade scal
115115
\label{fig2}
116116
\end{figure}
117117

118+
\section{Estimates of flash grade and grade scale slope assuming whole-history data available}
119+
120+
Figure \ref{aus_ascents_by_attempt} shows the estimated ``flash grade'' through time plot between August 2016 and July 2021 inclusive for 105 climbers that fulfilled our selection criteria and who climbed predominantly in Australia. The second panel reports the posterior distribution of the $e^m$, which was jointly estimated. The posterior estimate was 2.14 (95\% HPD: $[2.11, 2.17]$).
121+
122+
\begin{figure}
123+
\centering
124+
\includegraphics[width=\textwidth]{../results/aus/ascents-from-2016-08-01-to-2021-08-01-minAscents400-minFails1-posterior.png}
125+
\caption{\small The posterior estimate of each Australian climber's grade ($n=105$) through time and the posterior distribution of the proportional increase in difficulty per grade increment $d = e^m$.}
126+
\label{aus_ascents_by_attempt}
127+
\end{figure}
128+
129+
Figure \ref{nz_ascents_by_attempt} shows the estimated ``flash grade'' through time plot between August 2016 and July 2021 inclusive for 5 climbers that fulfilled our selection criteria and who climbed predominantly in New Zealand. The second panel reports the posterior distribution of the $m$ parameter which was jointly estimated.
130+
131+
132+
\begin{figure}
133+
\centering
134+
\includegraphics[width=\textwidth]{../results/nz/ascents-from-2016-08-01-to-2021-08-01-minAscents400-minFails1-posterior.png}
135+
\caption{\small The posterior estimate of each New Zealand climber's grade through time and the posterior distribution of the proportional increase in difficulty per grade increment $d = e^m$. Because there were only 5 climbers in this analysis we were able to depict the 95\% credible interval around the grade estimate through time as well.}
136+
\label{nz_ascents_by_attempt}
137+
\end{figure}
138+
139+
118140

119141
\section{Interpreting whole-community ascent success data}
120142

Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
% latex table generated in R 3.6.2 by xtable 1.8-4 package
2+
% Mon Sep 6 19:22:48 2021
3+
\begin{table}[ht]
4+
\centering
5+
\begingroup\fontsize{9pt}{10pt}\selectfont
6+
\begin{tabular}{rrl}
7+
\hline
8+
{\bf rows.in} & {\bf rows.out} & {\bf filter} \\
9+
\hline
10+
1627548 & 1465494 & Exclude ascents with no date or no grade information. \\
11+
1465494 & 1429967 & Exclude artificial ascents \\
12+
1429967 & 1310458 & Exclude gear styles: Boulder, Alpine, DWS, Traverse, Aid, Ice, Via ferrata \\
13+
1310458 & 1309854 & Exclude trad ascent types: greenpoint, greenpointonsight \\
14+
1309854 & 1275445 & Exclude boulder ascent types: send, dab, repeat \\
15+
1275445 & 1272836 & Exclude non-ascent types: hit, target, mark \\
16+
1272836 & 691090 & Keep only Ewbank grades \\
17+
691090 & 691079 & Remove grades with value '--' \\
18+
691079 & 403210 & Remove ascents before 2016-08-01 \\
19+
403210 & 397991 & Remove ascents on or after 2021-08-01 \\
20+
397991 & 373234 & Remove ascents with no month information. \\
21+
373234 & 293566 & Remove ascents with grade less than 16 \\
22+
293566 & 230274 & Exclude ambiguous ascent types: tick, lead, leadsolo, second, toprope, aidsolo, ropedsolo \\
23+
230274 & 67986 & Keep climbers with at least 400 ascents, and at least 1 failed ascents. \\
24+
\hline
25+
\end{tabular}
26+
\endgroup
27+
\caption{Summary of data processing for analysis of Australia ascent data.}
28+
\label{table-data-processing-aus}
29+
\end{table}
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
% latex table generated in R 3.6.2 by xtable 1.8-4 package
2+
% Mon Sep 6 19:02:03 2021
3+
\begin{table}[ht]
4+
\centering
5+
\begingroup\fontsize{9pt}{10pt}\selectfont
6+
\begin{tabular}{rrl}
7+
\hline
8+
{\bf rows.in} & {\bf rows.out} & {\bf filter} \\
9+
\hline
10+
41546 & 38147 & Exclude ascents with no date or no grade information. \\
11+
38147 & 37928 & Exclude artificial ascents \\
12+
37928 & 37928 & Exclude gear styles: \\
13+
37928 & 37871 & Exclude trad ascent types: greenpoint, greenpointonsight \\
14+
37871 & 36197 & Exclude boulder ascent types: send, dab, repeat \\
15+
36197 & 36160 & Exclude non-ascent types: hit, target, mark \\
16+
36160 & 33167 & Keep only Ewbank grades \\
17+
33167 & 33167 & Remove grades with value '--' \\
18+
33167 & 26462 & Remove ascents before 2016-08-01 \\
19+
26462 & 26343 & Remove ascents on or after 2021-08-01 \\
20+
26343 & 25208 & Remove ascents with no month information. \\
21+
25208 & 21488 & Remove ascents with grade less than 16 \\
22+
21488 & 15626 & Exclude ambiguous ascent types: tick, lead, leadsolo, second, toprope, aidsolo, ropedsolo \\
23+
15626 & 2707 & Keep climbers with at least 400 ascents, and at least 1 failed ascents. \\
24+
\hline
25+
\end{tabular}
26+
\endgroup
27+
\caption{Summary of data processing for analysis of New Zealand ascent data.}
28+
\label{table-data-processing-nz}
29+
\end{table}
Loading
Loading

results/nz/ascents-from-2016-08-01-to-2021-08-01-minAscents400-minFails1-session-processing-table.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
% latex table generated in R 3.6.2 by xtable 1.8-4 package
2-
% Mon Sep 6 12:00:45 2021
2+
% Mon Sep 6 19:17:05 2021
33
\begin{table}[ht]
44
\centering
55
\begingroup\fontsize{9pt}{10pt}\selectfont
Loading

0 commit comments

Comments
 (0)