各行が分布からのサンプルであるマトリックスがあります。ks.test
を使用して分布のローリング比較を行い、それぞれの場合に検定統計を保存したいと考えています。これを概念的に実装する最も簡単な方法は、ループを使用することです。
set.seed(1942)
mt <- rbind(rnorm(5), rnorm(5), rnorm(5), rnorm(5))
results <- matrix(as.numeric(rep(NA, nrow(mt))))
for (i in 2 : nrow(mt)) {
results[i] <- ks.test(x = mt[i - 1, ], y = mt[i, ])$statistic
}
ただし、私の実際のデータには、1 つの例で最大 400 列と最大 300,000 行があり、多くの例があります。だから早くしてほしい。コルモゴロフ-スミルノフ検定は数学的にそれほど複雑ではないので、答えが「で実装する」である場合、Rcpp
私はそれをしぶしぶ受け入れますが、少し驚いています.1つのペアで計算するのはすでに非常に高速です. Rで。
私が試したがうまくいかなかった方法: dplyr
using rowwise/do/lag
、zoo
using rollapply
(これは私がディストリビューションを生成するために使用するものです)、およびdata.table
a をループに投入します (編集: これは機能しますが、それでも遅いです)。