拟合SAIGE空模型时出现Sigma_E=0未收敛错误求助
SAIGE空模型拟合报错(Sigma_E=0,模型未收敛)的解决思路
问题重现
执行SAIGE步骤2的空模型拟合命令:
seqFitNullGLMM_SPA(pheno~age+sex, phenotye, grm, trait.type="quantitative", sample.col="IID", maf=0.005, missing.rate=0.01)
出现如下报错:
Filtering variants: [==================================================] 100%, completed, 10s Fit the null model: pheno ~ age + sex + var(GRM) # of samples: 10,033 # of variants: 40,739 using 1 thread Transform on the design matrix with QR decomposition: new formula: y ~ x0 + x1 + x2 - 1 Start loading SNP genotypes: [==================================================] 100%, completed, 13s using 590.1M (sparse matrix) Quantitative outcome: pheno mean sd min max 0.2772192 0.05953586 0.05 1.04 Inverse normal transformation on residuals with standard deviation: 0.05748074 Initial fixed-effect coefficients: x0 x1 x2 -5.064086e-09 8.959324e-05 0.0003868113 Initial variance component estimates, tau: Sigma_E: 0.00165196, Sigma_G: 0.00165196 Iteration 1: tau: (0.001737522, 0.001646519) fixed coeff: (-5.064086e-09, 8.959324e-05, 0.0003868113) tau: (0, 0) Error in seqFitNullGLMM_SPA(pheno ~ age + sex, : Sigma_E = 0, model not converged!
解决思路
1. 排查GRM构建的SNPs质量问题
- 严格质控GRM位点:GRM所用SNPs需经过严格过滤,建议:
- 提高MAF阈值至0.01(避免低频率位点引入噪声)
- 严格控制缺失率(比如<0.05)
- 过滤偏离哈迪-温伯格平衡的位点(HWE p值>1e-6)
- 排除高LD区域的冗余位点(比如用PLINK的
--indep-pairwise参数)
- 验证GRM标准化:确保GRM构建时对每个位点做了方差标准化(每个SNP的方差为1),未标准化的GRM会导致方差成分估计异常。
- 检查GRM秩与样本相关性:若GRM秩远低于样本量,可能存在重复样本或高度近亲样本,需先移除这类样本;可通过计算GRM矩阵的秩来验证。
2. 调整空模型拟合参数
- 关闭逆正态转换:尝试设置
invNormalize=FALSE,转换后的残差可能改变方差结构,导致模型难以收敛。 - 手动指定初始方差值:根据表型方差手动设置初始tau值,比如
init.tau=c(0.002, 0.001)(参考表型方差0.0035左右,分配遗传和环境方差初始值),避免默认初始值引发迭代崩溃。 - 增加迭代次数:设置
max.iter=100或更高,给模型足够的迭代收敛空间。 - 切换优化算法:尝试改用REML方法拟合,设置
method="REML",替代默认的SPA算法,看是否能稳定收敛。
3. 样本与协变量的进一步检查
- 验证表型分布:绘制表型直方图,确认是否存在过度集中的情况(比如大部分样本值接近均值),这种情况会导致遗传方差无法被有效估计。
- 评估协变量解释力:先拟合线性模型
lm(pheno~age+sex)查看R²值,若协变量解释力极低,需考虑加入群体分层主成分(PCs)作为协变量,群体分层会干扰GRM的有效性,进而导致方差成分估计失败。 - 确认样本顺序一致性:确保GRM的样本ID顺序与表型、协变量数据的样本ID完全匹配,SAIGE对样本顺序敏感,不匹配会引发模型错误。
4. 调试辅助技巧
- 小样本测试:先用1000左右的小样本子集拟合模型,若小样本能收敛,说明大样本下可能是GRM质量或计算资源问题;若小样本仍报错,可锁定GRM或核心参数的问题。
- 检查计算资源:确保运行时内存充足,稀疏矩阵加载需要足够内存,内存不足可能导致迭代过程中数据异常。
内容的提问来源于stack exchange,提问作者Wenbo Zhang
相关产品推荐
相关产品推荐

