Beck Depression Inventory-II (BDI-II) is one of the most widely used instruments for measuring the severity of self-reported depression in adolescents and adults. As a general rule, BDI-II is administrated in LCBC to adults with an upper cut off around 60 years, while depression in older adults is assessed with the Geriatric Depression Scale (GDS). However, please consult the instructions for each project, as this guideline has been implemented at different time points across the projects.The questionnaire consists of 21 statements, each reflecting a depression symptom or attitude which could be rated from 0 to 3 in terms of intensity. The answers should be based the participant´s feelings throughout the last week, including the day of filling out the form. The sum of the scores of the items (0-3) yields one total score, with a possible range between 0 and 62.
Score | Category |
0-10 | These ups and downs are considered to be normal |
11-16 | Mild mood disturbance |
17 – 20 | Borderline clinical disturbance |
21 – 30 | Moderate depression |
31 – 40 | Severe depression |
Above 40 | Extreme depression |
If a participant scores >= 17
, we should consider contacting the participant to follow up on this and offer making a note for the participant's doctor describing the scores.
By default, the functions assume that columns have names in the manner of bdi_XX
where XX
is a zero-padded (i.e. zero in front of numbers below 9, eg. 09
) question number of the inventory.
You may have column names in another format, but in that case you will need to supply to the functions the names of those columns using tidy-selectors (see the tidyverse packages for this).
The columns should adhere to some naming logic that is easy to specify.
Aaron T.Beck, Robert A.Steer, Margery G.Carbin (1988) Psychometric properties of the Beck Depression Inventory: Twenty-five years of evaluation, Clinical Psychology Review, Volume 8, Issue 1, Pages 77-100, doi: 10.1016/0272-7358(88)90050-5
Robert A.Steer, David J.Rissmiller, Aaron T.Beck (2000) Use of the Beck Depression Inventory-II with depressed geriatric inpatients Behaviour Research and Therapy Volume 38, Issue 3,Pages 311-318, doi: https://doi.org/10.1016/S0005-7967(99)00068-6
Groth-Marnat G. (1990). The handbook of psychological assessment (2nd ed.). New York: John Wiley & Sons.
bdi_compute(
data,
cols = matches("bdi_[0-9][0-9]$"),
max_missing = 0,
prefix = "bdi_",
keep_all = TRUE
)
bdi_compute_sum(data, cols = matches("bdi_[0-9][0-9]$"), max_missing = 0)
bdi_factorise(bdi_sum)
Data containing BDI data
Columns that contain BDI data
Maximum number of components allowed to be missing.
Defaults to "0", and will return NA
if missing any question. If set to
NULL
any missing component counts as 0, meaning if all BDI
components are missing, the sum is still 0, not NA
.
string to prefix column names of computed values
logical, append to data.frame
Sum of BDI questions, as summed by bdi_compute_sum
data.frame
bdi_compute_sum()
: Compute the BDI sum based on a data.frame containing the BDI data. Returns a numeric vector.
bdi_factorise()
: Create a factor based on the BDI sum, with the cut-off points as described in original paper.
# Example of treatment of missing values
library(dplyr)
#>
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#>
#> filter, lag
#> The following objects are masked from ‘package:base’:
#>
#> intersect, setdiff, setequal, union
library(questionnaires)
data <- tibble(
bdi_01 = c(1, NA_real_, NA_real_, 2, 1),
bdi_02 = c(1, 1, NA_real_, 2, NA_real_)
)
# Row with all components missing, gets sum 0
bind_cols(data,
bdi_sum = bdi_compute_sum(data))
#> # A tibble: 5 × 3
#> bdi_01 bdi_02 bdi_sum
#> <dbl> <dbl> <dbl>
#> 1 1 1 2
#> 2 NA 1 NA
#> 3 NA NA NA
#> 4 2 2 4
#> 5 1 NA NA
# Do not allow any missing values
bind_cols(data,
bdi_sum = bdi_compute_sum(data, max_missing = 0))
#> # A tibble: 5 × 3
#> bdi_01 bdi_02 bdi_sum
#> <dbl> <dbl> <dbl>
#> 1 1 1 2
#> 2 NA 1 NA
#> 3 NA NA NA
#> 4 2 2 4
#> 5 1 NA NA
# Allow one missing value
bind_cols(data,
bdi_sum = bdi_compute_sum(data, max_missing = 2))
#> # A tibble: 5 × 3
#> bdi_01 bdi_02 bdi_sum
#> <dbl> <dbl> <dbl>
#> 1 1 1 2
#> 2 NA 1 1
#> 3 NA NA 0
#> 4 2 2 4
#> 5 1 NA 1