0

我正在尝试使用以下命令(部分代码)将 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?     

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

4

1 回答 1

0

几位专家意见:

1) 拟合正常混合可能很困难,有时优化算法 (EM) 会因收敛速度非常慢而陷入困境。据推测,包中有选项可以在放弃之前增加最大步数,或者使收敛标准不那么敏感。前者会增加运行时间,而后者会降低最优性(可能使您远离真正的最优性)。所以你应该考虑在你认为合适的时候改变这些。

2)来自苏黎世联邦理工学院的 Martin Maechler:如果是维高斯混合的情况,也强烈建议查看 CRAN 包“nor1mix”(“1”代表“维”)。一会儿现在这个小包正在提供 EM 的替代方案,即直接 MLE,只需使用 optim() ,其中可能性使用某种智能参数化。当然,作为 EM,这也取决于起始值,但我的(有限)经验是 nor1mix::norMixMLE() 比 EM(我也提供为 nor1mix::norMixEM() )更快更可靠。

Apropos 'starting value':帮助页面显示了如何使用 kmeans() 进行“有点”可靠的启动;或者,我建议使用 cluster::pam() 从那里开始。

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

于 2017-06-02T17:18:26.900 回答