2017-11-21 11 views
0

10倍交差検証を行い、並列処理(parLapply)を使用してジョイントモデルのモデル性能を評価しようとしています。イムは、私はエラーメッセージが表示される理由を見つけるしようとしている: は次のようにリモートエラー(val)のチェックでエラーが発生しました:5ノードがエラーを生成しました:オブジェクトが見つかりません

コードが見えます「checkForRemoteErrorsでエラーが発生しました(valは):オブジェクトが見つからないウィーク ':5つのノードがエラーを生成」:

# Validation using 10-fold CV 
    library("parallel") 
    set.seed(123) 
    V <- 10 
    n <- nrow(dfC) 
    splits <- split(seq_len(n), sample(rep(seq_len(V), length.out = n))) 
    CrossValJM <- function (i) { 
     library("JM") 
     library("nlme") 
     trainingData <- dfL[!dfL$ID %in% i, ] 
     trainingData_ID <- trainingData[!duplicated(trainingData$ID), ] 
     testingData <- dfL[dfL$ID %in% i, ] 

     lmeFit <- lme(DA ~ ns(Week, 2), data = trainingData, 
          random = ~ ns(Week, 2) | ID) 
     coxFit <- coxph(Surv(TT_event, Event) ~ Gender * Age, data = 
          trainingData_ID, 
          x = TRUE) 

     jointFit <- jointModel(lmeFit, coxFit, timeVar = "Week") 

     pe <- prederrJM(jointFit, newdata = testingData, Tstart = 10, 
                Thoriz = 20) 
     auc <- aucJM(jointFit, newdata = testingData, Tstart = 10, 
                Thoriz = 20) 
     list(pe = pe, auc = auc) 
    } 

    cl <- makeCluster(5) 
    res <- parLapply(cl, splits, CrossValJM) 
    stopCluster(cl) 

関数自体は受け入れられますが、クラスターコマンドを実行すると、関数内で与えられたオブジェクトを認識できないというエラーが発生します。または、parLapply関数を正しく使用していないのですか?

P.S:次のようにデータが見えます(DFLが長〜1000およびDFC〜200のデータフレームである):

dfL <- data.frame(ID = c(1, 1, 1, 2, 2, 3), DA = c(0.4, 1.8, 1.2, 3.2, 3.6, 2.8), Week = c(0, 4, 16, 4, 20, 8), Event = c(1, 1, 1, 0, 0, 1), TT_Event = c(16, 20, 8), Gender = c(0, 0, 0, 1, 1, 0), Age = c(24, 24, 24, 56, 56, 76)) 

dfC <- data.frame(ID = c(1, 2, 3, 4, 5, 6), DA = c(1.2, 3.6, 2.8, 2.4, 1.9, 3.4), Week = c(16, 20, 8, 36, 24, 32), Event = c(1, 0, 1, 1, 1, 0), TT_Event = c(16, 20, 8, 36, 24, 32), Gender = c(0, 1, 0, 0, 1, 1), Age = c(24, 56, 76, 38, 44, 50)) 

のthnx :)

答えて

0

非常に関連した質問がすでにスタックオーバーフローに答えてきました。あなたがクラスタに必要な変数(最も一般的な方法)

  • パスそれらは自動的にエクスポートされるように、あなたの関数CrossValJMの引数としてすべての変数をエクスポートする

    • 使用clusterExport: は基本的には、次の3つのソリューションを持っていますエクスポートする、自動的に変数を検出(、怠惰なソリューションをもうまく動作するようだ)すべきであるクラスタ(私が好むソリューション、最もプログラム的に正しいもの)
    • 使用パッケージfuture

    たとえば、thisを参照してください。

  • +0

    ThnxF.Privé..しかし、上記の他の投稿を読んでください...既にこのようなものを試してみました – Oesj

    関連する問題