# 计算METS-VF指数的R代码
# 输入数据框包含以下变量：
# fbg: 空腹血糖 (mmol/L)
# tg: 甘油三酯 (mmol/L)
# hdl: 高密度脂蛋白胆固醇 (mmol/L)
# weight_kg: 体重 (kg)
# height_cm: 身高 (cm)
# waist_cm: 腰围 (cm)
# age: 年龄 (岁)
# gender: 性别 ("male" 或 "female")

# 创建示例数据（实际使用时替换为你的数据）
set.seed(123)
n <- 1000  # 样本量
data <- data.frame(
  fbg = runif(n, 3.9, 6.1),          # 空腹血糖: 3.9-6.1 mmol/L
  tg = runif(n, 0.5, 2.3),           # 甘油三酯: 0.5-2.3 mmol/L
  hdl = runif(n, 1.0, 2.2),          # 高密度脂蛋白: 1.0-2.2 mmol/L
  weight_kg = runif(n, 50, 90),      # 体重: 50-90 kg
  height_cm = runif(n, 150, 180),    # 身高: 150-180 cm
  waist_cm = runif(n, 70, 100),      # 腰围: 70-100 cm
  age = sample(40:80, n, replace = TRUE),  # 年龄: 40-80岁
  gender = sample(c("male", "female"), n, replace = TRUE)  # 性别
)

# 计算中间变量
data <- data %>%
  # 1. 计算BMI (kg/m²)
  mutate(bmi = weight_kg / (height_cm / 100)^2) %>%
  # 2. 计算METS-IR
  mutate(
    mets_ir = (log(2 * fbg + tg) * bmi) / log(hdl)
  ) %>%
  # 3. 计算腰围身高比 (WHtR)
  mutate(
    whtr = waist_cm / height_cm
  ) %>%
  # 4. 性别编码 (男性=1, 女性=0，根据实际研究调整)
  mutate(
    gender_code = ifelse(gender == "male", 1, 0)
  ) %>%
  # 5. 计算METS-VF
  mutate(
    mets_vf = 4.466 + 
      0.011 * (log(mets_ir))^3 + 
      3.239 * (log(whtr))^3 + 
      0.319 * gender_code + 
      0.594 * log(age)
  )

# 查看结果（前6行）
head(data[, c("mets_ir", "whtr", "gender_code", "age", "mets_vf")])