2017-10-23 2 views
4

比較的大きなデータセットにgeneralized linear mixed-effects modelsをフィッティングする戦略の提案を探しています。R - ビッグデータ:一般化線形混合効果モデル

私は、米国バスケットボールパスの8 millionのデータを10年間で約300チームで持っています。

data <- data.frame(count = c(1,1,2,1,1,5), 
       length_pass= c(1,2,5,7,1,3), 
       year= c(1,1,1,2,2,2), 
       mean_length_pass_team= c(15,15,9,14,14,8), 
       team= c('A', 'A', 'B', 'A', 'A', 'B')) 
data 
count length_pass year mean_length_pass_team team 
1  1   1 1     15 A 
2  1   2 1     15 A 
3  2   5 1      9 B 
4  1   7 2     14 A 
5  1   1 2     14 A 
6  5   3 2      8 B 

私は、プレイヤーがボールを渡す前に取るcountの手順を説明したい:データは次のようになります。 countlength_passの間にチームレベルの違いがあると想定する理論的な動機があるため、マルチレベル(つまり混合効果)モデルが適切と思われます。

私の個々のレベル制御変数はlength_passyearです。

チームレベルで私にはmean_length_pass_teamがあります。これは、生態学的な誤謬を避けるために役立つはずです、Snijders, 2011によると。

私はlme4パッケージとbrmsパッケージを使用してこれらのモデルを見積もっていますが、これらのモデルをローカルの12コア128GBマシンに適合させるには数日から数週間かかります。

私は一般化線形混合効果モデルに合うようにフィッティングプロセスや新しいテクニックをスピードアップするための提案を探しています
library(lme4) 
model_a <- glmer(count ~ length_pass + year + mean_length_pass_team + (1 | team), 
       data=data, 
       family= "poisson", 
       control=glmerControl(optCtrl=list(maxfun=2e8))) 

library(brms) 
options (mc.cores=parallel::detectCores()) 
model_b <- brm(count ~ length_pass + year + mean_length_pass_team + (1 | team), 
       data=data, 
       family= "poisson") 

  • (どのように)私はlme4brmsの速度を向上させることができますフィット?
  • 他にも検討すべきパッケージはありますか?
  • 適合モデルの速度を高めるのに役立つ手順はstep-wiseですか?
  • R環境の外に、これに適した興味深いオプションがありますか?

どのポインタも大変ありがとうございます。

+0

[this](https://www.rdocumentation.org/packages/biglm/versions/0.9-1/topics/bigglm)が役立つかもしれません。 –

+0

@F.Frivé 'biglm'パッケージはマルチレベルの式を受け入れないようです - つまり、|問題がある。しかし、あなたの考えに感謝します! –

+1

はあまり役に立たないかもしれませんが、https://stackoverflow.com/questions/44677487/lme4glmer-vs-statas-melogit-command/44728498#44728498はスピードアップや試しにnagQ = 0を提案しています – user20650

答えて

0

一般的な速度向上のために、ネイティブBLASの代わりにopenBLASを使用することをお勧めします。残念ながら、私はLME4がBLASに依存しているとは思わない。

しかし、私はgenerating the LME4 models in parallelを提案することもできます。これは効果的に待ち時間を半減させます。

+1

実際にlme4はBLASを使用していません。なぜなら、 'Eigen'パッケージに入っているファンシーな線形代数が必要だからです。 –

関連する問題