gammamixEM 出错...尝试不同数量的组件?在 R

Error in gammamixEM... Try different number of components? in R

我正在尝试使用以下命令(代码的一部分)将 2 分量伽马混合模型拟合到我的数据(在 运行 广义线性模型之后获得的残差值):

  expr_mix_gamma <- gammamixEM(expr_glm_residuals, lambda = c(0.75,0.25), k = 2, epsilon = 1e-08, maxit = 1000, maxrestarts=20, verb = TRUE)

代码针对多个基因文件运行(循环)。它对某些文件运行良好,而对其他文件则抛出以下错误:

Error in gammamixEM(expr_glm_residuals, lambda = c(0.75, 0.25), k = 2,  : Try different number of components?     

我无法弄清楚发生了什么。任何人都可以对此有所了解吗? 谢谢

少数专家意见:

1) 拟合正态混合物可能很困难,有时 优化算法 (EM) 会陷入非常缓慢的收敛状态。 据推测,包中有选项可以增加最大值 放弃之前的步骤数或减少收敛标准 敏感的。前者会增加运行时间,后者会 降低最优性(可能让你离真实的更远 最佳)。所以你应该按照你的想法考虑改变这些 合适。

2) 来自 Martin Maechler, ETH Zurich:如果是维高斯混合的情况,也强烈推荐看CRAN 包 'nor1mix'(“1”代表“一维”)。 一段时间以来,小包装提供了另一种选择 到 EM,即直接 MLE,只需使用 optim(),其中 likelihood 使用了一种有点智能的参数化。 当然,作为EM,这个也要看起始值, 但我(有限的)经验是 nor1mix::norMixMLE() 比 EM(我 还提供 nor1mix::norMixEM() .

Apropos 'starting value': 帮助页面显示了如何使用 kmeans() "somewhat" 可靠启动;或者,我会 建议使用 cluster::pam() 开始。

对我来说,尝试第一种方法对某些基因效果更好,但对其他基因仍然失败。所以,最后,我使用 tryCatch 启动我的脚本并 运行ning,丢失一些基因的信息。