Wbal_ {cycleRtools} | R Documentation |
W' balance.
Description
Generate a vector of W' balance values from time and power data. The
underlying algorithm is published in Skiba et al. (2012). Wbal
is a wrapper for the Rcpp function Wbal_
.
Usage
Wbal_(t, P, CP)
Wbal(data, time = "timer.s", pwr = "power.smooth.W", CP = attr(data,
"CP"), noisy = TRUE, character.only = FALSE)
Arguments
t , P |
numeric vectors of time and power, respectively. |
CP |
a critical power value for use in the calculation. |
data |
a data.frame/matrix object with time and power columns. |
time |
character; name of the time (seconds) column in |
pwr |
character; name of the power (watts) column in |
noisy |
logical; create smoother data by pooling power data into sub- and supra-CP sections. |
character.only |
are column name arguments given as character strings? A backdoor around non-standard evaluation. |
Details
The algorithm used here, while based on Dr Phil Skiba's model, differs in that values are positive as opposed to negative. The original published model expressed W' balance as W' minus W' expended, the latter recovering with an exponential time course when P < CP. An issue with this approach is that an athlete might be seen to go into negative W' balance. Hence, to avoid assumptions regarding available W', this algorithm returns W' expended (and its recovery) as positive values; i.e. a ride is begun at 0 W' expended, and it will increase in response to supra-CP efforts.
It is advisable on physiological grounds to enter smoothed power values to the function, hence this is the default behaviour. If nothing else, this prevents an unrealistic inflation of W' values that are inconsistent with estimates derived from power-time modelling.
The essence of the algorithm can be seen in the function test file.
Note that if there are NA
values in the power column, these are
ignored and the correspoding W' expended value assumes that of the last
available power value. NA
values are not allowed in the time column.
Value
A numeric vector of W' balance values, in kilojoules or joules for
Wbal
or Wbal_
respectively.
References
Skiba, P. F., W. Chidnok, A. Vanhatalo, and A. M. Jones. Modeling the Expenditure and Reconstitution of Work Capacity above Critical Power. Med. Sci. Sports Exerc., Vol. 44, No. 8, pp. 1526-1532, 2012. PubMed link.
See Also
Examples
## Not run:
data(ridedata)
## Basic usage.
ridedata$Wexp.kJ <- Wbal(ridedata, timer.s, power.W, 310)
## Data can be noisy or "smooth"; e.g.
Wbal_noisy <- Wbal(ridedata, timer.s, power.W, 310, noisy = TRUE)
Wbal_smth <- Wbal(ridedata, timer.s, power.W, 310, noisy = FALSE)
## Plot:
ylim <- rev(extendrange(Wbal_noisy)) # Reverse axes.
plot(ridedata$timer.min, Wbal_noisy, type = "l", ylim = ylim,
main = "NOISY")
plot(ridedata$timer.min, Wbal_smth, type = "l", ylim = ylim,
main = "Smooooth")
## Example of NA handling.
d <- data.frame(t = seq_len(20), pwr = rnorm(20, 300, 50), Wexp.J = NA)
d[14:16, "pwr"] <- NA
d[, "Wexp.J"] <- Wbal(d, "t", "pwr", CP = 290)
print(d)
## Using underlying Rcpp function:
Wbal_(t = 1:20, P = rnorm(20, 300, 50), CP = 300) # Values are in joules.
## End(Not run)