Compute 10 fasting indices from glucose (mmol/L) and insulin (pmol/L): Fasting_inv, Raynaud, HOMA_IR_inv, FIRI, QUICKI, Belfiore_basal, Ig_ratio_basal, Isi_basal, Bennett, HOMA_IR_rev_inv. Units converted internally: G0_mg = G0*18 (mg/dL), I0_u = I0/6 (muU/mL).
Arguments
- data
Data frame with required inputs.
- col_map
Named list mapping required keys:
G0: fasting glucose (mmol/L)
I0: fasting insulin (pmol/L)
- normalize
One of: "none","z","inverse","range","robust".
- na_action
One of:
"keep" (retain all rows; indices become NA where inputs missing/non-finite)
"omit" (drop rows with any missing/non-finite required inputs)
"error" (abort if any required input is missing/non-finite)
"warn" (emit a warning for rows with missing inputs, then keep them)
- verbose
Logical; if
TRUE(default), prints column mapping, the list of indices being computed, and a per-column results summary.
Value
Tibble with 10 columns (indices listed above). If an ID column is
detected in data (e.g. id, IID, participant_id), it is prepended
as the first output column.
References
Matthews DR, Hosker JP, Rudenski AS, Naylor BA, Treacher DF, Turner RC (1985). “Homeostasis Model Assessment: Insulin Resistance and Beta-Cell Function from Fasting Plasma Glucose and Insulin Concentrations in Man.” Diabetologia, 28(7), 412–419. doi:10.1007/BF00280883 . Katz A, Nambi SS, Mather K, Baron AD, Follmann DA, Sullivan G, Quon MJ (2000). “Quantitative Insulin Sensitivity Check Index: A Simple, Accurate Method for Assessing Insulin Sensitivity in Humans.” Journal of Clinical Endocrinology & Metabolism, 85(7), 2402–2410. doi:10.1210/jcem.85.7.6661 . Raynaud E, Pérez-Martin A, Brun J, Benhaddad AA, Mercier J (1999). “Fasting Plasma Insulin and Insulin Resistance Indices.” Diabetes & Metabolism, 25(6), 524–532. No DOI identified in Crossref/PubMed as of 2026-03-16; see URL, https://pubmed.ncbi.nlm.nih.gov/?term=Fasting+Plasma+Insulin+and+Insulin+Resistance+Indices. Avignon A, Charles M, Rabasa-Lhoret R, et al. (1999). “Assessment of Insulin Sensitivity from Oral Glucose Tolerance Test in Normal Subjects and in Insulin-Resistant Patients.” International Journal of Obesity, 23(5), 512–517. doi:10.1038/sj.ijo.0800864 . Belfiore F, Iannello S, Volpicelli G (1998). “Insulin Sensitivity Indices Calculated from Basal and OGTT-Related Insulin and Glucose Levels.” Molecular Genetics and Metabolism, 63(2), 134–141. doi:10.1006/mgme.1997.2658 . Sluiter D, Erkelens DW, Reitsma WD, Doorenbos H (1976). “Glucose Tolerance and Insulin Release: A Mathematical Approach.” Diabetes, 25, 245–249. doi:10.2337/diabetes.25.4.245 . Hanson RL, Pratley RE, Bogardus C, Narayan KMV, Roumain J, Imperatore G, Fagot-Campagna A, Pettitt DJ, Bennett PH, Knowler WC (2000). “Evaluation of Simple Indices of Insulin Sensitivity and Insulin Secretion for Use in Epidemiologic Studies.” American Journal of Epidemiology, 151(2), 190–198. doi:10.1093/oxfordjournals.aje.a010187 . Anderson RL, Hamman RF, Savage PJ, Saad MF, Laws A, Kades WW, Sands RE, Cefalu WT (1995). “Exploration of Simple Measures of Insulin Resistance.” American Journal of Epidemiology, 142(7), 724–732. doi:10.1093/aje/142.7.724 .
Examples
# Minimal example (units: G0 in mmol/L, I0 in pmol/L)
df <- data.frame(G0 = c(5.2, 6.1, 4.8), I0 = c(60, 120, 80))
res <- fasting_is(df, col_map = list(G0 = "G0", I0 = "I0"))
#> fasting_is(): reading input 'df' — 3 rows × 2 variables
#> fasting_is(): col_map (2 columns — 2 specified)
#> G0 -> 'G0'
#> I0 -> 'I0'
#> fasting_is(): computing markers:
#> Fasting_inv [G0, I0]
#> Raynaud [G0, I0]
#> HOMA_IR_inv [G0, I0]
#> FIRI [G0, I0]
#> QUICKI [G0, I0]
#> Belfiore_basal [G0, I0]
#> Ig_ratio_basal [G0, I0]
#> Isi_basal [G0, I0]
#> Bennett [G0, I0]
#> HOMA_IR_rev_inv [G0, I0]
#> fasting_is(): results: Fasting_inv 3/3, Raynaud 3/3, HOMA_IR_inv 3/3, FIRI 3/3, QUICKI 3/3, Belfiore_basal 3/3, Ig_ratio_basal 3/3, Isi_basal 3/3, Bennett 3/3, HOMA_IR_rev_inv 3/3
head(res)
#> # A tibble: 3 × 10
#> Fasting_inv Raynaud HOMA_IR_inv FIRI QUICKI Belfiore_basal Ig_ratio_basal
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 -10 4 -41.6 37.4 0.146 0.00213 -0.107
#> 2 -20 2 -97.6 87.8 0.130 0.000910 -0.182
#> 3 -13.3 3 -51.2 46.1 0.142 0.00173 -0.154
#> # ℹ 3 more variables: Isi_basal <dbl>, Bennett <dbl>, HOMA_IR_rev_inv <dbl>
# With NA handling
df2 <- data.frame(G0 = c(5.0, NA), I0 = c(90, 150))
fasting_is(df2, col_map = list(G0 = "G0", I0 = "I0"), na_action = "keep")
#> fasting_is(): reading input 'df2' — 2 rows × 2 variables
#> fasting_is(): col_map (2 columns — 2 specified)
#> G0 -> 'G0'
#> I0 -> 'I0'
#> fasting_is(): computing markers:
#> Fasting_inv [G0, I0]
#> Raynaud [G0, I0]
#> HOMA_IR_inv [G0, I0]
#> FIRI [G0, I0]
#> QUICKI [G0, I0]
#> Belfiore_basal [G0, I0]
#> Ig_ratio_basal [G0, I0]
#> Isi_basal [G0, I0]
#> Bennett [G0, I0]
#> HOMA_IR_rev_inv [G0, I0]
#> fasting_is(): results: Fasting_inv 2/2, Raynaud 2/2, HOMA_IR_inv 1/2, FIRI 1/2, QUICKI 1/2, Belfiore_basal 1/2, Ig_ratio_basal 1/2, Isi_basal 1/2, Bennett 1/2, HOMA_IR_rev_inv 1/2
#> # A tibble: 2 × 10
#> Fasting_inv Raynaud HOMA_IR_inv FIRI QUICKI Belfiore_basal Ig_ratio_basal
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 -15 2.67 -60 54 0.139 0.00148 -0.167
#> 2 -25 1.6 NA NA NA NA NA
#> # ℹ 3 more variables: Isi_basal <dbl>, Bennett <dbl>, HOMA_IR_rev_inv <dbl>