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_