← 返回教程列表

📊 F统计量计算

衡量工具变量强度的核心指标

📖 什么是F统计量?

F统计量(F-statistics)是衡量工具变量(IVs)强度的重要指标。它反映了工具变量与感兴趣的危险因素相关联的程度和精度。

  • F统计量值越高,工具变量强度越大
  • MR分析的统计功效越强
  • 如果 F > 10,认为该IV是有效的

🎯 F统计量阈值

F统计量 判断结果 说明
F > 10 有效工具变量 不会受到弱工具变量偏倚影响
F < 10 弱工具变量 估计量会产生严重偏倚
F < 5 极弱工具变量 结果不可靠,不建议使用

🔗 F统计量与p值的关系

F统计量 对应p值
F = 10 p ≈ 1e-3
F = 20 p ≈ 1e-5
F = 30 p ≈ 5e-8

💡 提示:MR分析常以 p < 5e-8 作为显著性阈值来筛选工具变量,这对应的F统计量约为30。

📐 F统计量计算公式

F统计量公式:

F = (R² × (N - K - 1)) / (K × (1 - R²))

其中:

  • = IVs解释暴露的程度(表型变异解释度,PVE)
  • N = 暴露GWAS研究的样本数
  • K = SNP的个数

R²(PVE)计算公式:

R² = (2 × β² × MAF × (1 - MAF)) / (sd²)

其中:

  • β = SNP对暴露的效应量(effect size)
  • MAF = 次要等位基因频率(minor allele frequency)
  • sd = 标准差,可由 se × √N 计算

💻 R代码实现

方法一:手动计算F统计量

# 手动计算F统计量
# 参数设置
N <- 50000    # 样本量
K <- 10      # SNP数量
R2 <- 0.02    # R²值

# 计算F统计量
F_stat <- (R2 * (N - K - 1)) / (K * (1 - R2))

cat("F统计量:", F_stat, "\n")

# 判断工具变量强度
if (F_stat > 10) {
  cat("✓ 工具变量强度足够\n")
} else {
  cat("⚠ 警告:存在弱工具变量偏倚\n")
}

方法二:计算R²后再算F

# 计算单个SNP的R²
calculate_R2 <- function(beta, maf, n) {
  # beta: 效应量
  # maf: 次要等位基因频率
  # n: 样本量
  
  sd <- abs(beta) / sqrt(n) # 计算标准差
  R2 <- (2 * beta^2 * maf * (1 - maf)) / (sd^2)
  return(R2)
}

# 示例
beta <- 0.05
maf <- 0.3
n <- 50000

R2_single <- calculate_R2(beta, maf, n)
cat("单个SNP的R²:", R2_single, "\n")

# 多个SNP的R²总和
total_R2 <- sum(R2_vector) # 假设R2_vector是各SNP的R²向量
K <- length(R2_vector)

F_stat <- (total_R2 * (n - K - 1)) / (K * (1 - total_R2))
cat("F统计量:", F_stat, "\n")

方法三:使用TwoSampleMR包

# 使用TwoSampleMR计算F统计量
library(TwoSampleMR)

# 提取暴露数据
exposure_dat <- extract_exposure_data(
  database_id = "ieu-b-38",
  p1 = 5e-8
)

# 计算F统计量(需要手动添加)
# TwoSampleMR不直接提供F统计量计算
# 可使用mr_keep_outcome函数后手动计算

# 或者使用MRBase API
ao <- available_outcomes()
exposure_dat <- extract_instruments("ieu-b-38")

⚠️ 弱工具变量偏倚

弱工具变量:单个遗传变异作为工具变量与暴露的关联关系较弱,不足以代理暴露因素来体现其与结局的关联性。

  • 对于基于个体数据的MR模型:弱工具变量会导致估计量向观察性研究估计量的方向偏倚
  • 对于基于汇总数据的MR模型:弱工具变量会导致估计量向0方向偏倚

通常需要纳入更多的遗传变异作为工具变量,MR模型才能达到足够的统计效能。

📚 相关教程