predict_work_till_distance()
functionmodel_timing_gates_FD_fixed()
and
model_time_distance_FD_fixed()
which allow user to set the
fixed FD
parameter. This was before done using additional
parameter in model_timing_gates_FD()
and
model_time_distance_FD()
functions, but now these functions
only provide estimated FD
. This is done to allow confidence
intervals estimation, which was impossible to do since fixed
FD
was also estimated, but it was constrained by
the optimization function to user-provided value.model_in_situ()
function, the filtering parameters
(velocity_threshold
, velocity_step
, and
n_observations
) are returned in the
corrections
element of the returned object. These are also
returned in the CV
element of the returned object for every
cross-validation foldvelocity_threshold
parameter in the
model_in_situ()
function is now by default
NULL
, in which case the velocity of the observation with
the fastest acceleration is taken as the cutoff valuetheme_bw()
from README and set default
ggplot
theme with ggdist::ggdist()
find_optimal_FV_scalar()
function
and all upper-level calling functions which happens when
resistance
parameter is below zerosplit_times
since it has AsIs
object, causing issues with ggplot2
plotting in the README
filemodel_radar_gun()
and
model_laser_gun()
examples that happened on
r-release-macos-arm64
and r-oldrel-macos-arm64
due to the perfect model fit causing “singular gradient matrix at
initial parameter estimates”. This is sorted by adding simple noise to
the simulated datamodel_in_situ()
function to now use
minpack.lm::nlsLM()
instead of stats::lm()
function, which now estimates MSS
and MAC
parameters, and it is thus easier to read the code, and estimate the
confidence intervalsget_air_resistance()
function where both head wind and tail wind returned the same
resistance.make_FV_profile()
function when
estimating force-velocity profile with wind conditions.convert_FV()
function when
converting force-velocity profile back to acceleration-velocity profile
with wind conditions.make_FV_profile()
function to
create_FVP()
.convert_FV()
function to
convert_FVP()
.predict_kinematics()
function
relative_power
to power_relative
to be in
alignment with other variables.work
, average_power
, and
average_power_relative
to the output of
predict_kinematics()
function, and removed
net_horizontal_force
from the output to avoid confusion
whether the inertia is included or not.shorts_model_fit()
function to return
model fit metrics in both absolute and percentage forms.model_sprint()
wrapper function and
updated internal new_shorts_model()
constructor which
provide changes in the model output format ("shorts_model"
class). This will create BREAK CHANGE from the previous
versions of the {shorts}
package.predict_work_till_time()
and
predict_work_till_distance()
to calculate horizontal work
performance.model_radar_gun()
and added alias
model_laser_gun()
function.model_timing_gates()
,
model_timing_gates_TC()
,
model_timing_gates_FD()
, and
model_timing_gaes_FD_TC()
, functions. Now the
TC
parameter has positive sign.model_tether()
and
model_tether_DC()
functions. Changed the sign of the
DC
parameter.model_
family of functions to include
predict_
function in the model definition. Now
MSS
and MAC
are estimated, rather than
MSS
and TAU
. This improves readability of the
model definition. Also moved MAC
in the output after
MSS
parameter.model_timing_gates_FD_TC()
function.model_timing_gates_DC()
and
model_timing_gates_TC_DC()
functions.model_in_situ()
function which performs
embedded (i.e., in-situ) analysis of the session
monitoring data using GPS or LPS systems which provide instantaneous
acceleration and velocity.model_time_distance()
,
model_time_distance_TC()
,
model_time_distance_DC()
,
model_time_distance_TC_DC()
, and
model_time_distance_FD()
functions. These are exactly the
same as model_timing_gates
family of functions, but with
reverse predictor and outcome variables.create_sprint_trace()
function for quickly
creating sprint traces with time- and distance-shifts, as well as flying
starts. Useful for creating examples for issues in modeling sprint
traces."shorts_model"
class. The plot method now plots four
different types of plots, depending on the type
argument:
“model” (default), “kinematics-time”, “kinematics-distance”, or
“residuals”.confint
S3 method to provide confidence intervals
of the parameters.coef
S3 method to return all model parameters,
not only sprint parameters.model_
family of
functions.LPS_session
dataset. This dataset represents a
sample data provided by Local Positioning System (LPS) on a single
individual performing a single basketball practice session (aprox.
90min). Sampling frequency is 20Hz.dynaspeed
dataset.laser_gun_data
dataset.inertia
(mass; in kg) and resistance
(force; in Newtons) to predict_force_
,
predict_power_
, predict_relative_power_
, as
well as predict_kinematics()
functions. This increases the
ability of the {shorts} package to deal with external resistance, like
weight vest, sled, and tether devices.predict_kinematics()
function to include
inertia
(mass; in kg) and resistance
(force;
in Newtons) parameters, as well as to allow the user to either provide
the shorts_model
object, or provide MSS
and
MAC
parameters. Additional parameter
add_inertia_to_vertical
to allow user to decided whether
inertia should be added to bodymass
when calculating
vertical force.predict_force_at_velocity()
functionfind_max_power_
and
find_power_critial_
function to add support for the
inertia
(mass; in kg) and resistance
(force;
in Newtons) parametersmake_FV_profile()
function and added support
for the inertia
(mass; in kg) and resistance
(force; in Newtons) parameters. Removed the S3 print and plot methods,
as well as the class type involving this functionconvert_FV()
function available for the
users and added support for the inertia
(mass; in kg) and
resistance
(force; in Newtons) parameterspredict_time_at_distance_FV()
function to use
simpler convert_FV()
functionfind_max_power
functions to
find_peak_power
to avoid confusion between
Pmax
and Ppeak
inertia
(mass; in kg) and
resistance
(force; in Newtons) to optimal_FV()
functioninertia
(mass; in kg) and
resistance
(force; in Newtons) to probe_FV()
functionmodel_tether_DC()
function with an
additional distance correction
(DC) parameter estimate. DC
parameter serves as an intercept when distance doesn’t start at
zerouse_observed_MSS
parameter to
model_radar_gun()
and model_tether()
functions. This allows user to estimate MSS
parameter from
the observed dataFD
parameter to
model_timing_gates_FD()
and
model_timing_gates_FD_TC()
functions, which allow user to
provide fixed FD
parameter value.predict()
function not to return fitted
values, but to use generic predict method on the object. This allows
user to use newdata
parameter. Added fitted()
method to return fitted values insteadFV_slope_perc
to profile_imb
in the output of the optimal_
functionsfind_optimal_FV()
and
find_optimal_FV_peak()
are now wrapped inside the
optimal_FV
, but the method is selected using
method
parameter (“max” for find_optimal_FV()
and “peak” for find_optimal_FV_peak()
). Please refer to
examplesoptimal_
functions
and moved to probe_FV()
and probe_MSS_MAC()
functions. Please refer to examplesfind_optimal_distance()
function that can take
other optimal and probe functions as parameter. Please refer to
examplesfind_optimal_FV_peak()
(now
implemented in find_optimal_FV()
function using
method="peak"
parameter) where information needed to
calculate air resistance was not forwardedfind_optimal_MSS_MAC()
and find_optimal_FV()
functions. Some of the columns are renamed to better clarityconvert_FV()
to convert from FV
profile to sprint profile. This is used to calculate Peak Power
(Ppeak
) metric and its locationmin_func
parameter to
find_optimal_MSS_MAC_distance()
and
find_optimal_FV_distance()
. This allows to optimize by
using any other metricfind_optimal_FV_peak()
function, which optimize
the profile while keeping the Peak Power the same. Accompanying
find_optimal_FV_peak_distance()
is also addedformat_splits()
model_tether()
function for modeling data output
from tether devices, which involve velocity at distancePmax_relative
to Pmax_rel
in
the output of the make_FV_profile()
functionF0_poly
,
F0_poly_rel
, V0_poly
, Pmax_poly
,
Pmax_poly_rel
, and FV_slope_poly
to the output
of the make_FV_profile()
function using the method outlined
in Pierre Samozino and Nicolas Peyror, et al (2021) <doi:
10.1111/sms.14097>predict_time_at_distance_FV()
which uses FV
profile’s F0
and V0
to predict time at
distance. For more info see Pierre Samozino and Nicolas Peyror, et al
(2021) <doi: 10.1111/sms.14097>find_optimal_MSS_MAC()
,
find_optimal_MSS_MAC_distance()
,
find_optimal_FV()
, find_optimal_FV_distance()
.
For more info on the FV optimization see Pierre Samozino and Nicolas
Peyror, et al (2021) <doi: 10.1111/sms.14097>This is NEW version of the {shorts} package INCOMPATIBLE with the previous due to drastic changes in functions. Here are the changes utilized:
predict_
functions, time_correction
and
distance_correction
are no longer used, since due to novel
models of estimation, it is hard to neatly implement them into
functions. Now the predict_
functions predict on a scale
where sprint starts at t=0
and d=0
, rather
than on the original (data) scale. This will also remove the confusion
for the user.predict_
functions, the user now uses
MSS
and MAC
parametersstats::nls()
to minpack.lm::nlsLM()
in
model_
functions. This is done to avoid “singular gradient”
error and inability of the stats::nls()
to estimate when
there are zero residuals. Please make note that now when you use
...
in model_
function, it will be forwarded
to minpack.lm::nlsLM()
. If you have been using
control = stats::nls.control(warnOnly = TRUE)
to avoid
stats::nls()
to throw error when fitting when there are
zero residuals, now you can remove it. If needed use
control = minpack.lm::nls.lm.control()
instead.create_timing_gates_splits()
function to generate
timing gates splitsmodel_timing_gates()
,
model_timing_gates_TC()
,
model_timing_gates_FD()
, and
model_timing_gates_FD_TC()
. All other functions have been
removedmodel_radar_gun()
which also estimates time correction
(TC
) parameter.model_radar_gun()
feature n-folds
cross-validation, as opposed to
model_timing_gates()
family of functions, which features
leave-one-out cross-validation (LOOCV) due to small number of
observations. Using the CV
parameter, set n-fold
cross-validations for the model_radar_gun()
function.LOOCV
in the
shorts_model
object to CV
to reflect above
changes in model_radar_gun()
functionmodel_using_splits_with_distance_correction()
function the
predict_XXX_at_distance()
family of functions doesn’t work
correctly if distance_correction
is used as parameter
(i.e., different than zero). This is because the model definition is
completely different, and predicting on the same distance scale is not
possible. Please refer to Jovanović, M., Vescovi, J.D. (2020) for more
information.plot.shorts_fv_profile()
functionresiduals()
S3 method, as well as with internal
function shorts_model_fit()
that provides model fit
estimates (i.e. RMSE, MAE, MAPE)model_using_splits_with_distance_correction()
function that implements novel model definition to estimate flying start
distancemixed_model_using_splits_with_distance_correction()
function that implements novel model definition to estimate flying start
distanceggplot2
and tidyr
package dependency
and implemented it in S3 plotting functionsget_FV_profile
now return a object class
shorts_fv_profile
shorts_fv_profile
objectforce
and relative_force
to
horizontal_force
and relative_horizontal_force
in the shorts_fv_profile
object and data frame returned by
the predict_kinematics
acceleration
, bodymass
,
net_horizontal_force
, air_resistance
, and
vertical_force
, resultant_force_relative
,
power
, and force_angle
in the
shorts_fv_profile
object and data frame returned by the
predict_kinematics
shorts_model
and
shorts_mixed_model
objectsAdded sample radar gun data from Jean-Benoît Morin Microsoft
Excel spreadsheet, freely available at his website
(accessed October 27, 2020)). For more information
?jb_morin
Added get_FV_profile
for generating Force-Velocity
profile summary using Pierre Samozino and Jean-Benoît Morin method (for
more DOI:10.1111/sms.12490)
get_air_resistance
function to estimate air
resistance in newtonspredict_air_resistance_at_time
and
predict_air_resistance_at_time
functionspredict_force_at_time
and
predict_force_at_distance
functionspredict_power_at_time
and
predict_power_at_distance
functionspredict_relative_power_at_distance
and
predict_relative_power_at_time
use air resistance to do the
calculations. The default bodymass is 75kg. To replicate earlier
function behavior, use predict_velocity_at_
multiplied by
predict_acceleration_at_
to get relative power without air
resistancepredict_kinematics
now uses aforementioned
changes in predict_relative_power_
functions, and added
force and air resistance in the outputfind_max_power_distance
and
find_power_critical_distance
now uses aforementioned
changes and returns absolute power, rather than relative, and air
resistance is used in the power calculationsfind_max_power_time
,
find_velocity_critical_time
,
find_acceleration_critical_time
, and
find_power_critical_time
functionsmodel_using_radar_with_time_correction
where
time_correction parameter is estimatedmixed_model_using_radar_with_time_correction
where time_correction parameter is estimateddata("vescovi")
). For more info see
?vescovi
time_correction
and
distance_correction
to all model parameters output to align
thempredict_kinematics
function that predicts 0-6s
distance (100Hz), velocity, acceleration, and relative powerprint
, coef
,
summary
, predict
, and residuals
methodsrandom
parameter to mixed_
family of
functions to allow higher flexibility in model definitions, but removed
corrections_as_random_effects
parameter. The default
behavious is to use all parameters as random effects....
to model_using_radar
and
mixed_model_using_radar
to be forwarded to
nlme::nlme
sprint-corrections
vignette by adding a
short simulation studytime_delay
to time_correction
in
shorts::model_using_instant_velocity
and
shorts::mixed_model_using_instant_velocity
functions to be
more consistent across functions. Also, this correction is
added to time, so use negative numbers insteadtime_correction
in
shorts::mixed_model_using_instant_velocity
and
shorts::mixed_model_using_split_times
is now numeric
vector, not column nametime_correction
in
shorts::model_using_split_times
and
shorts::mixed_model_using_split_times
time_correction
in
shorts:predict_
family of functionsdistance_correction
in
shorts:predict_
family of functionstime_correction
in
shorts::model_using_split_times_with_time_correction
and
shorts::mixed_model_using_split_times_with_time_correction
distance_correction
in
shorts::model_using_split_times_with_corrections
and
shorts::mixed_model_using_split_times_with_corrections
shorts::mixed_model_
functionsmaxAbsErr
from model_fit elementfind_
family of functions for finding max
power and critical distance when velocity or acceleration reaches
certain threshold...
to all modeling functions so that extra
parameters can be forwarded to the optimization enginesplit_times
recreated using distance shift behind
the first timing gate. Needed to demo mixed models with corrections_model_using_instant_velocity
to
_model_using_radar
_model_using_split_times_
to
_model_using_splits_