2016-09-06 5 views
0

に私は、次のコマンド(コードの一部)を使用して、(残留値は一般化線形モデルを実行した後に得られた)私のデータに2成分のガンマ混合モデルに合うようにしようとしています:gammamixEMのエラー...異なる数のコンポーネントを試しますか? R

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

少数の専門家の意見:

1)継手の通常の混合物が困難になることができ、そしていつか 最適化アルゴリズム(EM)は、非常にゆっくりと収束して動けなくなります。 パッケージ内には、最大 のステップ数を増やすか、収束基準をそれほど控えるようにするかのどちらかのオプションがあります。 前者は実行時間を増加させ、後者は最適性を低下させます( の最適値から遠ざける可能性があります)。 したがって、 が適切であると考えるように、これらを変更する必要があります。マーティンMaechler、 ETHチューリッヒから

2):それは次元ガウス分布の混合物の場合であれば、それはまた強くCRAN パッケージ「nor1mix」を見てお勧めします(「1」は "のためであります今、小さなパッケージが 可能性はややスマートパラメータ化を使用する単純OPTIMを用いてEM、即ち直接MLE、()の代替 を提供しているしばらく次元1)。 。もちろん としてEM、これはまた、開始値、 に依存しますが、私の(限られた)経験はtha t nor1mix :: norMixMLE() は、EMよりもはるかに高速で信頼性が高くなります(I はnor1mix :: norMixEM()としても機能します)。

Apropos 'starting value':ヘルプページには、幾分信頼性の高い開始点として012irtskmeans()を使用する方法が示されています。代わりに、 はcluster :: pam()を使用してそこから開始することをお勧めします。

最初のアプローチを試してみると、いくつかの遺伝子にとってより良い結果が得られましたが、他の人にとってはまだ失敗し続けました。そこで、私はスクリプトを起動して実行するためにtryCatchを使用し、いくつかの遺伝子の情報を失ってしまいました。

関連する問題