我正在尝试将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?
我无法弄清楚发生了什么。任何人都可以对此有所了解吗? 谢谢
答案 0 :(得分:0)
很少有专家意见:
1)装配正常混合物可能很困难,有时也是如此 优化算法(EM)将陷入非常缓慢的收敛。 据推测,包中有选项可以增加最大值 放弃之前的步骤数或使收敛标准更少 敏感。前者会增加运行时间而后者会增加 降低最优性(可能会让你离真实距离更远) 最佳)。所以你应该考虑改变这些 合适的。
2)来自Martin Maechler, 苏黎世联邦理工学院:如果是一个一个 - 维度高斯的混合物的情况,强烈建议看看CRAN 包&#39; nor1mix&#39; (&#34; 1&#34;用于&#34; 一个 -dimensional)。 有一段时间,小包装正在提供替代品 到EM,即直接MLE,只需使用optim()所在的地方 可能性使用了一些有点智能的参数化。 当然,作为EM ,这也取决于起始值, 但我的(有限的)经验就是这样 nor1mix :: norMixMLE() 比EM更快,更可靠 还提供了nor1mix :: norMixEM()。
Apropos&#39;起始值&#39;:帮助页面显示了如何使用 kmeans()for&#34; some&#34;可靠的开始;或者,我 建议使用cluster :: pam()从那里开始。
对于我来说,尝试第一种方法对一些基因做得更好,但仍然对其他基因失败。所以,最后,我使用tryCatch来启动和运行我的脚本,丢失一些基因的信息。