Scores the Female Sexual Function Index (FSFI)
A data frame containing responses to the 19 FSFI items, and possibly other variables.
Item number prefix. Quote the letter(s) preceding the FSFI
item numbers as they are named in your data frame. If this argument is
omitted, the function will assume that your items are named
Logical, whether to return variables containing the
number of valid, non-missing items on each scale for each respondent should
be returned in the data frame with the scale scores. The default is
This function returns the 6 subscale scores and the FSFI Total score (Rosen
et al., 2000), as well as an indicator variable flagging respondents with FSFI
Total scores suggestive of clinically significant levels of sexual
fsfi_tot <= 26.55; Wiegel et al., 2005).
The FSFI is intended to measure the sexual function of recently sexually active women (Rosen et al., 2000), and strong evidence suggests it may not be a valid measure of sexual function in women with little or no recent sexual activity (e.g., see Baser et al., 2012).
As such the
fsfi function also returns two variables
fsfi_sexactive01) that can be used to
evaluate whether respondents have been sufficiently sexually active for the
FSFI to be a valid assessment of their sexual function. These variables are
based on the fact that 15 of the 19 FSFI items have a response option of "no
sexual activity" or "did not attempt intercourse", which corresponds to an
item score of
0. Specifically, the
contains the number of items with responses of
NA (out of
those 15 items that have a response option indicating "no sexual activity").
Missing responses (i.e.,
NA) are included in this count because
respondents with no relevant sexual activity often skip these items. The
fsfi_sexactive01 variable is a rough indicator that a respondent was
sufficiently sexually active for the FSFI to be a valid assessment of their
sexual function. It is a dummy variable that is
fsfi_nzero15 <= 7 (i.e., when the respondent said "no sexual activity"
to 7 or fewer of the 15 items with that option), and
0 otherwise. See
Baser et al. (2012) for more details on how this cutoff was chosen.
A data frame with the following variables is returned:
fsfi_des - FSFI Desire subscale (range 1.2 - 6)
fsfi_arous - FSFI Arousal subscale (range 0 - 6)
fsfi_lub - FSFI Lubrication subscale (range 0 - 6)
fsfi_org - FSFI Orgasm subscale (range 0 - 6)
fsfi_sat - FSFI Satisfaction subscale (range 0.8 - 6)
fsfi_pain - FSFI Pain subscale (range 0 - 6)
fsfi_tot - FSFI Total score (range 2 - 36)
fsfi_dys01 - Indicator of FSFI sexual dysfunction (i.e., of
fsfi_tot <= 26.55);
0 = No Dysfunction,
fsfi_nzero15 - There are 15 FSFI items that have a response
0 ("No sexual activity"). This is the number of those
items with responses of
NA (See Details).
fsfi_sexactive01 - For the FSFI scores to be valid estimates
of sexual functioning, respondents need to have been sexually active
during the 4 week recall period. This variable indicates whether their
sexual activity levels were high enough for their FSFI scores to be
valid. Specifically, it is an indicator that
fsfi_nzero15 <= 7 (See
Optionally, the data frame can additionally have variables containing the
number of valid item responses on each scale for each respondent (if
keepNvalid = TRUE, but this option might be removed in future package
The FSFI authors do not indicate how to handle missing item data when
calculating the FSFI scores. This is unfortunate because women frequently
skip items they feel are not relevant to them (e.g., the items asking about
satisfaction with "your partner" are often skipped by non-partnered women),
leading to an unexpectedly large number of missing subscale and FSFI total
scores. To minimize excessive missing values for the FSFI subscale and Total
fsfi function handles missing items similarly to the
scoring methods for many other PROs. Specifically, the
will calculate the 6 subscale scores as long as at least half of the items on
the given subscale have valid, non-missing item responses. More concretely,
each subscale must have at least 2 non-missing responses, except for Desire,
which has only 2 items and requires only 1 non-missing response. The
fsfi function will calculate the FSFI Total Score for a respondent as
long as it was able to calculate at least 5 out of the 6 subscale scores.
Scores calculated in the presence of missing items are pro-rated so that
their theoretical minimum and maximum values are identical those from scores
calculated from complete data.
These methods of handling missing item responses were chosen to balance the reality that respondents often skip some items with the need to maintain the validity of the scores. However, I know of no directly applicable empirical study that supports these choices, and I encourage more research into how missing responses affect the psychometrics of this and other instruments.
The six FSFI subscale scores are scaled to have a maximum score of 6.0.
The subscale scores are summed to calculate the FSFI Total score, which has
a maximum score of 36. Because 4 items have no response option scored
0 (2 items from Desire subscale and 2 from Satisfaction subscale),
the minimum possible score for the Desire subscale, the Satisfaction
subscale, and the FSFI Total score is greater than zero.
Rosen, R, Brown, C, Heiman, J, Leiblum, S, Meston, C, Shabsigh, R, et al. (2000). The Female Sexual Function Index (FSFI): a multidimensional self-report instrument for the assessment of female sexual function. Journal of Sex & Marital Therapy, 26(2), 191-208.
Wiegel, M, Meston, C, & Rosen, R. (2005). The Female Sexual Function Index (FSFI): Cross-Validation and Development of Clinical Cutoff Scores. Journal of Sex & Marital Therapy, 31(1), 1-20.
Baser, RE, Li, Y, & Carter, J. (2012). Psychometric validation of the female sexual function index (FSFI) in cancer survivors. Cancer, 118(18), 4606-4618.
1 2 3 4 5 6 7 8
# Creating data frame of fake FSFI responses dat <- PROscorerTools::makeFakeData(n = 10, nitems = 19, values = 0:5, prefix = 'f') dat1 <- PROscorerTools::makeFakeData(n = 10, nitems = 4, values = 1:5) names(dat1) <- c('f1', 'f2', 'f15', 'f16') dat[c(1, 2, 15, 16)] <- dat1 # Scoring the fake FSFI responses fsfi(dat, 'f')
fsfi_des fsfi_arous fsfi_lub fsfi_org fsfi_sat fsfi_pain fsfi_tot fsfi_dys01 1 1.2 0.0 0.0 0.0 0.8 0.0 2.00 1 2 6.0 6.0 6.0 6.0 6.0 6.0 36.00 0 3 2.4 3.0 4.0 3.2 3.6 4.0 20.20 1 4 5.4 0.8 2.0 4.4 NA 5.4 21.60 1 5 3.6 2.4 4.4 2.8 4.4 2.4 20.00 1 6 3.6 3.2 1.8 4.2 4.0 0.8 17.60 1 7 1.2 0.0 NA 4.8 4.8 3.2 16.80 1 8 1.2 2.0 3.2 1.6 3.6 3.2 14.80 1 9 2.4 3.6 1.2 2.4 3.0 3.0 15.60 1 10 NA 1.2 3.2 3.2 2.8 3.2 16.32 1 fsfi_nzero15 fsfi_sexactive01 1 15 0 2 0 1 3 3 1 4 7 1 5 4 1 6 9 0 7 7 1 8 2 1 9 4 1 10 4 1
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.