calculate_isi_cederholm: Cederholm Insulin Sensitivity Index Calculation (from...

View source: R/calculate_isi_cederholm.R

calculate_isi_cederholmR Documentation

Cederholm Insulin Sensitivity Index Calculation (from standard 75g OGTT)

Description

This function calculates the Cederholm Index using glucose and insulin sampled during a standard 75g oral glucose tolerance test.

Usage

calculate_isi_cederholm(
  time,
  glucose,
  insulin,
  weight,
  D = 75,
  glucose_method = "plasma",
  time_units = "min",
  glucose_units = "mg/dl",
  insulin_units = "uU/ml",
  weight_units = "kg"
)

Arguments

time

a column name (unquoted) indicating time values (in minutes)

glucose

a column name (unquoted) storing glucose values (in mg/dL)

insulin

a column name (unquoted) storing insulin values (in uU/mL = mU/L)

weight

Body weight (kg);

D

Glucose dose (default 75g standard OGTT)

glucose_method

Glucose measurement method (default "plasma"; enter "wbg" if fingerstick or whole blood glucose is used)

time_units

if units are not in "min", can indicate here for unit conversion (options "min" or "hr")

glucose_units

if units are not in "mg/dl", can indicate here for unit conversion (options "mg/dl" or "mmol/l")

insulin_units

if units are not in "uU/ml", can indicate here for unit conversion (options "uU/ml" or "pmol/l")

weight_units

Body weight units, to use for conversion if not in kg

Details

Standard timepoints are 0, 30, 60, 90, and 120 min. Note: insulin unit conversion may differ differ depending on assay. Insulin (pmol/l) = insulin (uU/ml)*6

The formula used for this calculation is described in Cederholm et al.:

\frac{75000 + (Glucose_{0} - Glucose_{120}) \cdot 1.15 \cdot 180 \cdot 0.19 \cdot Weight(kg)} {120 \cdot log(Insulin_{mean}) \cdot Glucose_{mean}}

Where 75000 is the glucose dose (mg), 0.19 represents the Glucose space (0.19 * weight), and 1.15*180 factor to converts whole blood glucose (mmol\cdot L^{-1}) to plasma (mg \cdot L^{-1}), and 120 converts 2hours to minutes.

If using Plasma glucose measurements the formula used is:

\frac{Glucose Dose (mg) + (Glucose_{0} - Glucose_{120}) \cdot 0.19 \cdot Weight(kg)} {120 \cdot log(Insulin_{mean}) \cdot Glucose_{mean}}

Therefore some of these conversion factors are not needed if using plasma glucose (eg YSI measurement) and already reporting glucose in mg/dL.

Value

Cederholm insulin sensitivity index as a single value (mg \cdot L^2 \cdot mmol^{-1} \cdot mU^{-1} \cdot min{-1})

Examples

# individual objects for each item
time=c(0, 30, 60, 90, 120)              # minutes
glucose=c(93, 129, 178, 164, 97)        # mg/dL
insulin=c(12.8, 30.7, 68.5, 74.1, 44.0) # uU/mL
calculate_isi_cederholm(time, glucose, insulin, weight=70) # 20.1356

# handling data stored in a dataframe
ogtt1 <- data.frame(time=c(0, 30, 60, 90, 120),              # minutes
                    glucose=c(93, 129, 178, 164, 97),        # mg/dL
                    insulin=c(12.8, 30.7, 68.5, 74.1, 44.0)) # uU/mL
calculate_isi_cederholm(ogtt1$time, ogtt1$glucose, ogtt1$insulin, weight=70)  # 20.1356



# Convert units
ogtt5 <- data.frame(time = c(0,0.5,1,1.5,2), # time in hours
                    glucose = c(5.167, 7.167, 9.889, 9.111, 5.3889), # glucose in mmol/l
                    insulin = c(76.8,184.2,411,444.6,264)) # insulin in pmol/l

calculate_isi_cederholm(time =  ogtt5$time,
                        glucose = ogtt5$glucose,
                        insulin = ogtt5$insulin,
                        weight=154, weight_units="lbs",
                        time_units = "hr", insulin_units = "pmol/l", glucose_units = "mmol/l")
                        
dat <- data.frame( # data from Gutt. Diab Res Clin Pract. 2000 
  stringsAsFactors = TRUE,
cat = c("obese","obese","normal",
        "normal","NGT","NGT","IGT","IGT","DM2","DM2"),
        time = c(0L, 120L, 0L, 120L, 0L, 120L, 0L, 120L, 0L, 120L),
        glucose = c(106.9,145.8,18,65,88.3,
                    103.3,102.3,151.7,20.1,347.5),
                    insulin = c(19.9,96.1,87,106.7,16.2,
                                73.2,25.3,140.6,30.9,57.9))
library(tidyverse)
dat |> 
  group_by(cat) |> 
    summarise(isi_ceder = calculate_isi_cederholm(time, glucose, insulin, weight=70))

JMLuther/tabletools documentation built on April 14, 2025, 3:09 a.m.