Skip to contents

Calculate injury summary statistics such as injury incidence and injury burden (see Bahr et al. 20), including total number of injuries, number of days lost due to injury, total time of exposure etc., by means of a (widely used) Poisson method, negative binomial, zero-inflated poisson or zero-inflated negative binomial, on a player and overall basis.

Usage

injsummary(
  injd,
  var_type_injury = NULL,
  method = c("poisson", "negbin", "zinfpois", "zinfnb"),
  conf_level = 0.95,
  quiet = FALSE
)

Arguments

injd

injd S3 object (see prepare_all()).

var_type_injury

Character specifying the name of the column according to which compute injury summary statistics. It should refer to a (categorical) variable that describes the "type of injury". Optional, defaults to NULL.

method

Method to estimate injury incidence and injury burden. One of "poisson", "negbin", "zinfpois" or "zinfnb"; characters that stand for Poisson method, negative binomial method, zero-inflated Poisson and zero-inflated negative binomial.

conf_level

Confidence level (defaults to 0.95).

quiet

Logical, whether or not to silence the warning messages (defaults to FALSE).

Value

A list of two data frames comprising player-wise and overall injury summary statistics, respectively, that constitute an injds

S3 object. Both of them made up of the following columns:

  • ninjuries: number of injuries sustained by the player or overall in the team over the given period specified by the injd data frame.

  • ndayslost: number of days lost by the player or overall in the team due to injury over the given period specified by the injd data frame.

  • mean_dayslost: average of number of days lost (i.e. ndayslost) playerwise or overall in the team.

  • median_dayslost: median of number of days lost (i.e. ndayslost) playerwise or overall in the team.

  • iqr_dayslost: interquartile range of number of days lost (i.e. ndayslost) playerwise or overall in the team.

  • totalexpo: total exposure that the player has been under risk of sustaining an injury.

  • injincidence: injury incidence, number of injuries per unit of exposure.

  • injburden: injury burden, number of days lost per unit of exposure.

  • var_type_injury: only if it is specified as an argument to function.

Apart from this column names, they may further include these other columns depending on the user's specifications to the function:

  • percent_ninjuries: percentage (%) of number of injuries of that type relative to all types of injuries (if var_type_injury specified).

  • percent_dayslost: percentage (%) of number of days lost because of injuries of that type relative to the total number of days lost because of all types of injuries (if var_type_injury specified).

  • injincidence_sd and injburden_sd: estimated standard deviation, by the specified method argument, of injury incidence (injincidence) and injury burden (injburden), for the overall injury summary statistics (the 2nd element of the function output).

  • injincidence_lower and injburden_lower: lower bound of, for example, 95% confidence interval (if conf_level = 0.95) of injury incidence (injincidence) and injury burden (injburden), for the overall injury summary statistics (the 2nd element of the function output).

  • injincidence_upper and injburden_upper: the same (as above item) applies but for the upper bound.

References

Bahr R., Clarsen B., & Ekstrand J. (2018). Why we should focus on the burden of injuries and illnesses, not just their incidence. British Journal of Sports Medicine, 52(16), 1018–1021. https://doi.org/10.1136/bjsports-2017-098160

Waldén M., Mountjoy M., McCall A., Serner A., Massey A., Tol J. L., ... & Andersen T. E. (2023). Football-specific extension of the IOC consensus statement: methods for recording and reporting of epidemiological data on injury and illness in sport 2020. British journal of sports medicine.

Examples

# \donttest{
df_exposures <- prepare_exp(raw_df_exposures, player = "player_name",
                            date = "year", time_expo = "minutes_played")
df_injuries  <- prepare_inj(raw_df_injuries, player = "player_name",
                            date_injured = "from", date_recovered = "until")
injd         <- prepare_all(data_exposures = df_exposures,
                            data_injuries  = df_injuries,
                            exp_unit = "matches_minutes")
# }

injsummary(injd)
#> Warning: 
#>   Exposure time unit is matches_minutes
#>   So... Injury incidence and injury burden are calculated per 100 player-matches of exposure (90 minutes times 100)
#> 
#> Warning: 
#>   Exposure time unit is matches_minutes
#>   So... Injury incidence and injury burden are calculated per 100 player-matches of exposure (90 minutes times 100)
#> 
#> $playerwise
#> # A tibble: 28 × 9
#>    player         ninjuries ndayslost mean_dayslost median_dayslost iqr_dayslost
#>    <fct>              <dbl>     <dbl>         <dbl>           <dbl> <chr>       
#>  1 adam-lallana           6       302         43.1             43   18.5-52.5   
#>  2 alberto-moreno         1        50         25               25   12.5-37.5   
#>  3 alex-oxlade-c…         1       316        316              316   316-316     
#>  4 alisson                0         0          0                0   0-0         
#>  5 andrew-robert…         5        22          3.67             2.5 1.25-3.75   
#>  6 daniel-sturri…         3       122         30.5             33.5 12-52       
#>  7 danny-ings             0         0          0                0   0-0         
#>  8 dejan-lovren           6       160         22.9             13   9-28.5      
#>  9 divock-origi           1         5          2.5              2.5 1.25-3.75   
#> 10 dominic-solan…         0         0          0                0   0-0         
#> # ℹ 18 more rows
#> # ℹ 3 more variables: totalexpo <dbl>, injincidence <dbl>, injburden <dbl>
#> 
#> $overall
#> # A tibble: 1 × 14
#>   ninjuries ndayslost mean_dayslost median_dayslost iqr_dayslost totalexpo
#>       <dbl>     <dbl>         <dbl>           <dbl> <chr>            <dbl>
#> 1        82      2049          19.0             7.5 1-20.25          74690
#> # ℹ 8 more variables: injincidence <dbl>, injburden <dbl>,
#> #   injincidence_sd <dbl>, injburden_sd <dbl>, injincidence_lower <dbl>,
#> #   injincidence_upper <dbl>, injburden_lower <dbl>, injburden_upper <dbl>
#> 
#> attr(,"class")
#> [1] "injds" "list" 
#> attr(,"unit_exposure")
#> [1] "matches_minutes"
#> attr(,"unit_timerisk")
#> [1] "100 player-match"
#> attr(,"conf_level")
#> [1] 0.95
injsummary(injd, var_type_injury = "injury_type")
#> Warning: 
#>   Exposure time unit is matches_minutes
#>   So... Injury incidence and injury burden are calculated per 100 player-matches of exposure (90 minutes times 100)
#> 
#> Warning: 
#>   Exposure time unit is matches_minutes
#>   So... Injury incidence and injury burden are calculated per 100 player-matches of exposure (90 minutes times 100)
#> 
#> $playerwise
#> # A tibble: 140 × 10
#>    player         injury_type ninjuries ndayslost mean_dayslost median_dayslost
#>    <fct>          <fct>           <dbl>     <dbl>         <dbl>           <dbl>
#>  1 adam-lallana   Bone                0         0           0                 0
#>  2 adam-lallana   Concussion          3        97          32.3              25
#>  3 adam-lallana   Ligament            0         0           0                 0
#>  4 adam-lallana   Muscle              3       205          68.3              45
#>  5 adam-lallana   Unknown             0         0           0                 0
#>  6 alberto-moreno Bone                0         0           0                 0
#>  7 alberto-moreno Concussion          0         0           0                 0
#>  8 alberto-moreno Ligament            1        50          50                50
#>  9 alberto-moreno Muscle              0         0           0                 0
#> 10 alberto-moreno Unknown             0         0           0                 0
#> # ℹ 130 more rows
#> # ℹ 4 more variables: iqr_dayslost <chr>, totalexpo <dbl>, injincidence <dbl>,
#> #   injburden <dbl>
#> 
#> $overall
#> # A tibble: 5 × 17
#>   injury_type ninjuries percent_ninjuries ndayslost percent_dayslost
#>   <fct>           <dbl>             <dbl>     <dbl>            <dbl>
#> 1 Bone               11              13.4       173             8.44
#> 2 Concussion         16              19.5       213            10.4 
#> 3 Ligament            9              11.0       596            29.1 
#> 4 Muscle             25              30.5       735            35.9 
#> 5 Unknown            21              25.6       332            16.2 
#> # ℹ 12 more variables: mean_dayslost <dbl>, median_dayslost <dbl>,
#> #   iqr_dayslost <chr>, totalexpo <dbl>, injincidence <dbl>, injburden <dbl>,
#> #   injincidence_sd <dbl>, injburden_sd <dbl>, injincidence_lower <dbl>,
#> #   injincidence_upper <dbl>, injburden_lower <dbl>, injburden_upper <dbl>
#> 
#> attr(,"class")
#> [1] "injds" "list" 
#> attr(,"unit_exposure")
#> [1] "matches_minutes"
#> attr(,"unit_timerisk")
#> [1] "100 player-match"
#> attr(,"conf_level")
#> [1] 0.95