私はdoParallel
パッケージに出くわしました。私のケースでは便利かもしれません。異なる説明変数のセットでRのパラレルパネルロジット計算
次のコードは、パラレル、いくつかのpglm
回帰で評価することを目指し:
require("foreach")
require("doParallel")
resVar <- sample(1:6,100,TRUE)
x1 <- 1:100
x2 <- rnorm(100)
x3 <- rchisq(100, 2, ncp = 0)
x4 <- rweibull(100, 1, scale = 1)
Year <- sample(2011:2014,100,replace=TRUE)
X <- data.frame(resVar,x1,x2,x3,x4,Year)
facInt = 1:4 # no factors
#find all possible combinations
cmbList <- lapply(2, function(nbFact) {
allCmbs <- t(combn(facInt, nbFact))
dupCmbs <- combn(1:4, nbFact, function(x) any(duplicated(x)))
allCmbs[!dupCmbs, , drop = FALSE] })
noSubModel <- c(0, sapply(cmbList, nrow))
noModel <- sum(noSubModel)
combinations <- cmbList[[1]]
factors <- X[,c("x1","x2","x3","x4")]
coeff_vars <- matrix(colnames(factors)[combinations[1:length(combinations[,1]),]],ncol = length(combinations[1,]))
yName <- 'resVar'
cl <- makeCluster(4)
registerDoParallel(cl)
r <- foreach(subModelInd=1:noSubModel[2], .combine=cbind) %dopar% {
require("pglm")
vars <- coeff_vars[subModelInd,]
formula <- as.formula(paste('as.numeric(', yName, ')',' ~ ', paste(vars,collapse=' + ')))
XX<-X[,c("resVar",vars,"Year")]
ans <- pglm(formula, data = XX, family = ordinal('logit'), model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year')
coefficients(ans)
}
stopCluster(cl)
cl <- c()
私は、次の方法でそれを並列化しようとすると、それは動作しません。私は次のエラーを取得する:
Error in { : task 1 failed - "object 'XX' not found"
いくつかのpglm
回帰順番に評価作品のセット:
require("pglm")
r <- foreach(icount(subModelInd), .combine=cbind) %do% {
vars <- coeff_vars[subModelInd,]
formula <- as.formula(paste('as.numeric(', yName, ')',' ~ ', paste(vars,collapse=' + ')))
XX<-X[,c("resVar",vars,"Year")]
ans <- pglm(formula, data = XX, family = ordinal('logit'), model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year')
coefficients(ans)
}
誰かが正しく、このタスクを並列化する方法についてのアドバイスをしてくださいことはできますか?
ありがとうございます!
ここで、オブジェクトXを定義しますか?この割り当て 'XX <-X [、c(" resVar "、vars、" Year ")]'それは何をするのですか? – jsb
もちろん、Xは2つのループを実行する前に定義されたソースデータセットで、 'resVar'を従属変数としています。次に、1からサブモデルの数になる 'subModelInd'のサブモデルの量をループします。 –
XXのサンプルデータを最小限の再現可能なサンプルにすることができますか?http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example? – rbm