📖 什么是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²))
其中:
- • 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模型才能达到足够的统计效能。