Correndo livre: calculando o fator de eficiência em R

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Rstats – quantixed, e gentilmente contribuiu para os R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Joe Friel republicou um artigo no início deste ano sobre o fator de eficiência na corrida. O fator de eficiência (EF) pode ser visualizado no software Training Peaks e ele descreve como é calculado. Este post descreve como eu calculei o EF no R usando um único arquivo gpx.

O que é fator de eficiência (EF)?

Essencialmente, EF é a distância média que você é impulsionado para frente por batimento cardíaco. Quanto maior o número, mais eficiente você estará executando.

Para calcular o EF, você precisa dos seus dados de velocidade e frequência cardíaca. No post de Joe, ele dá o seguinte exemplo (usando medidas imperiais):

Para uma corrida com Ritmo Gradual Normalizado de 7,5 min / milha (8 milhas por hora), a velocidade em jardas por minuto é 234,7 (1760 jardas * 8/60). Se a frequência cardíaca média for 150, o FE é 1,56 (234,7 / 150).

Não usei o Training Peaks, mas parece que a EF é uma medida única para toda a sua corrida. Deverá ser possível calcular a FE como uma medida contínua, para que você possa observar qualquer alteração na EF ao longo do tempo ou em terrenos específicos durante a corrida. Então essa foi minha outra motivação para calcular a EF em R.

Colocando os dados no R

Estou usando o pacote trackeR para fazer o trabalho duro de carregar os dados do arquivo gpx.

library(trackeR)
library(ggplot2)
library(zoo)
library(hms)
library(gridExtra)

# select a gpx file
filepath 

This gives us the data from the gpx file in a data frame called runDF. Now we have to calculate the normalised graded speed. This is done by first calculating the point-to-point distances, altitudes and thereby the point-to-point gradients. Point-to-point here refers to the sampling frequency of the gps device. We can extract that information too, so that we can calculate speeds.

Here is the code that gets us to normalised graded speed. The calculation of the dist_adj column is described below.

# calculate point-to-point distance from the cumulative distance
runDF$dist_point 

How do I calculate normalised graded pace?

If you are running uphill, your pace will be slower when running on the flat (and vice versa). Can we normalise for gradient to see how fast the runner would be travelling if the whole course was flat.

There is a paper from 2002 looking at the changes in pace over different gradients (Minetti et al. (2002)). However, this was a small study of 10 people. Nowadays we have much more data thanks to consumer-grade GPS-enabled devices. Strava used their user’s data to make a new model to calculate GAP (Grade Adjusted Pace) for display on their site. Their findings plotted with those of Minetti et al. are shown here:

Reproduced from medium post by Drew Robb

I took the points from this graph using IgorThief and fitted a polynomial equation to this data. The co-efficients of this fit allowed me to find what kind of speed adjustment is required for a given gradient. This information is used the line in the code above:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
runDF$dist_adj 

Let’s look at our graphical output before seeing how it was generated.

Example of the output (EF is shown in blue, bottom right)

The output shows speed, elevation, normalised graded speed, heart rate and EF. The example shown above has some intervals (note the peaks in the heart rate trace). EF is pretty constant, but varies a bit during the interval/rest cycles.

The remaining code

The plots above were generated using this code.

# format ticks on plots to be hh:mm
format_hm 

Most parts of that code are standard ggplot stuff. Two exceptions:

  • Para fazer a média rolante, usei o pacote zoo e calculei uma janela de 2 minutos (120 s) com rollmean
  • A supressão dos segundos no eixo x foi feita usando format_hm. Isso é especificado no código e altera um tempo hh: mm: ss para hh: mm

O título do post vem de “Running Free”, do Iron Maiden, de seu LP de estreia homônimo.



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Usando R: 10 anos com R