Every method follows its original paper and is solved exactly; new tools check the analysis, build zones, compare tests, predict performance and report the test. What’s new in lactater 1.0 shows how the numbers compare with 0.3.0, and The methods and the evidence how each method is computed.
|> replaces %>%,
which is no longer re-exported.run_data_input(), the RStudio gadget, is removed: the
web form (recording_sheet()) records a test and
read_recording() reads it back; seven packages leave
Suggests with it.loglog_restrainer is deprecated (Log-log uses all
stages, as Beaver et al., 1985, did); a value below 1 warns.ltp_breakpoints = 1); a curve with more parameters than
points is an error.lactate_threshold() returns a
lactate_thresholds tibble with method_category
first; intensities are whole watts, km/h to 0.1 and m/s to 0.01.dmax_anchor),
NA when the curve never dips below the line; ModDmax counts
a rise of exactly 0.4 mmol/L.ltp_fix_first_slope); one turn point for submaximal tests
(ltp_breakpoints = 1).IAT (Dickhuth et al., 1999) and
Stegmann (Stegmann et al., 1981, from recovery
samples and stage_duration).Keul and Simon for running (Keul et
al., 1979; Simon et al., 1981): the speed where the polynomial rises by
1.26 or 1 mmol/L per km/h.NA outside them.fixed (OBLA), baseline_plus
(Bsln+), iat_rise (IAT), moddmax_rise
(ModDmax), dmax_methods (adds
"LTP1-Poly-ModDmax"), max_intensity (drop
stages above it).last_stage_duration: the intensity of a last stage
that was not completed is time-weighted (Kuipers et al., 2003);
read_recording() does it from the form’s time in the last
stage."rowing"; running, swimming and rowing get a
pace column.heart_rate_column is optional; new rpe_column
and rpe_scale..by analyzes many tests in one call; rows with a
missing lactate are dropped with a warning.demo_data) and nearly
twice as fast with them.ci = TRUE: wild-bootstrap intervals for the noise of
the samples (n_boot, ci_level,
seed); failed replicates are counted in a warning.
Calibration in “Checking the analysis”.lactate_checks(): stages, resting sample,
thresholds not found or at the edge, early dip, no rise in the last
stage, test stopped before LTP2, non-blood sample, and
whether the LT1 and LT2 methods agree.lactate_fit_quality() (thanks @Victorivus, #11) and
lactate_diagnostics(): residuals, leverage, Cook’s
distance, every threshold without each stage, and a six-panel plot.sample, stage_duration,
site and grade record the protocol;
predict_performance(), reference_percentiles()
and compare_tests() check it against theirs.autoplot(x) draws an overview of
every threshold on one axis, grouped by what the method aims at (the
first rise, the second rise, a fixed lactate), with a table of values;
autoplot(x, method = ) one method.autoplot(lactate_zones(x), view = "ruler") draws the
zones as one bar over the intensity, pace, heart rate and RPE at each
boundary, to hand to the athlete.options(lactater.style = "night") and
"journal", options(lactater.font = ), and
theme_lactater() for your own plots.lactate_report() (a gt table) and
gt_lactater();
options(lactater.web_font = FALSE) leaves the web font out
of the tables.test_report(): the test as a web page and a
two-page PDF for the athlete or the coach; report_start()
and the report_*() steps build one part by part; two to
five tests of one athlete give a progress report.recording_sheet(): a web form, a printable sheet
and a CSV template; read_recording() reads the form’s
.xlsx.lactate_threshold(lt1 = , lt2 = ) chooses the athlete’s
LT1 and LT2 once: the print, the overview, the zones, the report and the
headers of compare_tests() and
predict_performance() follow that pair.compare_tests() sets every change against the
noise of its method (what two tests differ by when nothing
changed), with their ratio and a verdict of “beyond” or
“within the noise”, and shows the cv behind it. The default
noise of each method is lactater’s own calculation on the open data of
Heuberger et al. (2018), in data-raw/reliability_cycling.R;
the help page lists the published values beside it.
lactate_reliability() gives the bias between
tests, the interval of the cv and its degrees of freedom,
and compare_tests() widens its intervals for a
cv from few athletes; lactate_trend() takes a
level.lactate_zones(): three or five zones from LT1 and
LT2 (Bsln + 0.5 and Log-Poly-ModDmax by default) at the intensity
domains, with intensity, pace, lactate, heart rate and RPE;
split sets the cuts inside the domains. Heart rate is drawn
in a panel under the curve, or on a second axis
(heart_rate = "axis").training_load(): time in each zone and the
polarization index (Treff et al., 2019).compare_tests(): each change against the
test-retest noise of the method, with a verdict and notes on what
differs between the tests; lactate_reliability() measures
that noise on your own athletes; curve_shift(),
curve_shape() (shift or new shape, by an F test and AICc),
lactate_trend() (series of tests),
relative_thresholds() (per kg, % of peak).reference_percentiles(): percentiles of the power
at 3 mmol/L and at baseline + 1 mmol/L among German adults of the same
sex and age (Fiedler et al., 2025).predict_performance() (running from Roecker et al.,
1998, and Sjodin & Jacobs, 1981; cycling from the open data of
Heuberger et al., 2018) and calibrate_performance() for
your own equation.lactate_mlss() (the maximal lactate steady state
from constant-load bouts, Beneke’s 10 to 30 min window) and
vlamax() (the maximal lactate accumulation rate from a
sprint test).lactate_tests: 16 step tests across cycling,
running, rowing and swimming, from elite to untrained; twelve real
(Trinity College Dublin and Heuberger et al. 2018, CC BY 4.0), four
simulated. demo_data gains a simulated RPE.lactate_threshold() performance by reducing
repeated model preparation and minimizing expensive data wrangling in
method pipelines.ggplot_build() from x-axis adjustment and simplifying plot
construction paths.lactate_curve() to retrieve data for
plotting the lactate curve and heart rate response.Patched a modification to the Dmax method, which was
producing negative values in a few edge cases.
Make sure that infinite values are not retrieved when converting intensity to log.
Dmax method that was producing
very high estimations in a few cases.Log-log
method.align attribute in img tag.NEWS.md file to track changes to the
package.