0
私は条件付き限界濃度を推定し、新しい観測値でそれらを評価しています。次に、推定値を配列に入力します。このコードは遅く、速度を大幅に上げることができませんでした。どんな助けも大歓迎です。ここでは、小さな再現性の例です:double forループを置き換えて速度を上げる
library(sm)
y <- rep(1:6, 30)
K <- length(unique(y))
X <- matrix(rnorm(180 * 1000), nrow=180)
newx <- matrix(rnorm(20 * 1000), nrow=20)
f.estimates <- array(dim=c(dim(newx)[1], dim(X)[2], K - 1))
g.estimates <- array(dim=c(dim(newx)[1], dim(X)[2], K - 1))
for(k in 1:(K - 1)) {
for(j in 1:dim(X)[2]) {
f.estimates[, j, k] <- sm.density(X[y <= k, j],
eval.points=newx[, j],
display="none")$estimate
g.estimates[, j, k] <- sm.density(X[y > k, j],
eval.points=newx[, j],
display="none")$estimate
}
}
内部ループを2つの 'sapply'関数で置き換えることができます。これは、0.2のオーダでわずかな性能向上をもたらす可能性がある。見て、結果の行列を転置しなければならないかもしれません。 – lmo
あなたの問題は並行して行うこともできます。ここから始めるのが良い参考資料です。 'foreach'を見てください。ここには良いリソースhttp://www.r-bloggers.com/how-to-go-parallel-in-r-basics-tips/があります。 –