次のようなスクリプトがあります。
#This is the master script. It runs all other scripts.
rm(list=ls())
#Run data cleaing script
source("datacleaning.R")
set.seed(413) #Seed pre-selected as lead author's wife's birthday (April 13th)
reps=128
#Make imputated datasets
source("makeimps.R")
#Model selection step 1.
source("model_selection.1.R")
load("AIC_results.1")
AIC_results
#best model removed the year interaction
#Model selection step 2. removed year interaction
source("model_selection.2.R")
load("AIC_results.2")
AIC_results
#all interactions pretty good. keeping this model
#Final selected model:
source("selectedmodel.R")
このマスター スクリプトをスーパーコンピューティング クラスターに送信します。32 コアで約 17 時間の CPU 時間と 40 分のウォールタイムが必要です。(したがって、私の再現不可能な例)。しかし、スクリプトを実行して結果を確認し、もう一度実行して結果を確認すると、結果が少し異なります。なんで?種をまきました!シードはどういうわけかリセットされますか?各スクリプト ファイル内でシードを指定する必要がありますか?
十分に収束していないことは明らかなので、回数を増やす必要があります。しかし、それは別の問題です。ここでの結果が再現されないのはなぜですか?どうすれば修正できますか?
前もって感謝します。
EDIT:私は、とを介して並列化を行っていdoMC
ますplyr
。以下のコメントに基づいたいくつかの軽いグーグルは、これらのパッケージを使用して「並列シード」を実際に設定できないという事実を明らかにします。コードをSNOW
何らかの方法で移行する必要があります。doMC
との解決策を誰かが知っている場合plyr
は、それが何であるかを教えていただければ幸いです。