#' Homeostasis model assessment
#'
#' @param data data
#' @param years years
#' @param IR logical. whether to keep IR, insulin resistance
#' @param IS logical. whether to keep IS, insulin sensitivity
#' @param beta logical. whether to keep beta, function of beta cell function
#' @param fglu logical. whether to keep fast glucose
#' @param finsulin logical. whether to keep fast insulin
#'
#' @details
#' - HOMA-IR: fglu(mmol/L) * finsulin(uU/mL) / 22.5
#' - HOMA-IS: 1/HOMA-IR
#' - HOMA-beta(%): 20 * finsulin(uU/mL) / (fglu(mmol/L)-3.5)
#'
#' @references Matthews DR, Hosker JP, Rudenski AS, Naylor BA, Treacher DF, Turner RC . Homeostasis model assessment: insulin resistance and beta-cell function from fasting plasma glucose and insulin concentrations in man. Diabetologia 1985; 28: 412–419.
#'
#' @return
#' @export
#'
attach_HOMA <- function(data,years,
IR=TRUE,
IS=TRUE,
beta=TRUE,
fglu=FALSE,
finsulin=FALSE){
if (!missing(data)){
years <- unique(data$Year)
seqn <- unique(data$seqn)
}
years <- prepare_years(years)
(gluam <- nhs_tsv('lab10am|l10am_b|l10am_c|glu',items = 'Laboratory',years=years,cat=FALSE))
(ins <- nhs_tsv('ins',items = 'Laboratory',years=years,cat=FALSE))
nr <- nhs_read(gluam,'lbxglusi,lbdglusi:fglu',
'lbxin:finsulin',
ins,'lbxin:finsulin',cat = FALSE)
if (!missing(data)) nr <- nr[nr$seqn %in% seqn,]
# nr$fglu <- nr$fglu*1000 # fglu: mmol/L to nmol/L
# nr$finsulin <- nr$finsulin * 1/1000 # finsulin: uU/mL to mU/mL
nr$HOMA_IR <- nr$fglu * nr$finsulin / 22.5
nr$HOMA_IS <- 22.5 /(nr$fglu * nr$finsulin)
nr$HOMA_beta <- 20 * nr$finsulin / (nr$fglu-3.5)
colnames <- c('seqn','Year')
if (fglu) colnames <- c(colnames,'fglu')
if (finsulin) colnames <- c(colnames,'finsulin')
if (IR) colnames <- c(colnames,'HOMA_IR')
if (IS) colnames <- c(colnames,'HOMA_IS')
if (beta) colnames <- c(colnames,'HOMA_beta')
data0 <- nr[,colnames]
if (missing(data)){
data <- data0
}else{
data0 <- data0[,!colnames(data0) %in% 'Year']
data <- as.data.frame(dplyr::left_join(data,data0,'seqn'))
}
return(data)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.