我有一个数据集,我想在其中应用多个测试,例如KS两个样本。因此,我试图找到一种可以将KS两个样本测试应用于所有样本的算法。基本思想是:
让我们说一个关于这些观察的数据集:
1 2 3 4
Study1 9 1 2 6
Study2 5 6 7 8
Study3 4 3 2 1
Study4 8 7 6 5
Study5 1 3 5 7
Study6 2 4 6 8
Study7 1 3 6 9
Study8 2 4 7 1
Study9 2 5 8 4
Study10 3 6 8 5
我可以通过以下方法将KS测试应用于每项研究:
ks.test(as.numeric(as.vector(df[1,])),as.numeric(as.vector(df[1,])))
ks.test(as.numeric(as.vector(df[1,])),as.numeric(as.vector(df[2,])))
ks.test(as.numeric(as.vector(df[1,])),as.numeric(as.vector(df[3,])))
...
ks.test(as.numeric(as.vector(df[1,])),as.numeric(as.vector(df[10,])))
ks.test(as.numeric(as.vector(df[2,])),as.numeric(as.vector(df[1,])))
...
ks.test(as.numeric(as.vector(df[10,])),as.numeric(as.vector(df[10,])))
这将导致10x10的p值,我的目标是将其用作距离的度量。
因此,我正在寻找一种算法,该算法可以对n x n个样本运行KS测试,然后在n x n矩阵中输出p值。
答案 0 :(得分:0)
您正在寻找outer
:
outer(1:10, 1:10, Vectorize(function(i,j) {ks.test(as.numeric(as.vector(df[i,])),as.numeric(as.vector(df[j,])))$p.value}))