【发布时间】:2017-06-01 22:46:14
【问题描述】:
我正在尝试创建一个矩阵,该矩阵从两个单独的矩阵(均为 200 x 1000,但也可以具有不同的列大小)中获取索引,并根据函数 ks.test(Kologomorov-Smirnov 测试)计算一个值。目前我已经嵌套了创建KS.mat 的 sapply 函数,但这只会使代码更清晰,而不是更快。有没有办法加快速度?
N1=100
N2=100
m=1000
set.seed(12345)
X1=matrix(rnorm(N1*m),nrow=N1)
X2=matrix(rnorm(N2*m),nrow=N2)
#Data matrix
dat = rbind(X1,X2)
#Create a matrix of permuted labels where X1 are labeled 1 and X2 are labeled 2
B=1000
label.mat=matrix(rep(rep(c(1,2),times=c(N1,N2)),B),ncol=B)
perm.mat=apply(label.mat,2,sample)
#Create matrix of KS statistics based on permuted labels and dat
KS.mat=sapply(seq(m),function(j)
sapply(seq(B),function(b) ks.test(dat[perm.mat[,b]==1,j],dat[perm.mat[,b]==2,j])$statistic))
【问题讨论】: