计算R

时间:2018-07-04 13:52:31

标签: r p-value kolmogorov-smirnov

我有一个数据集,我想在其中应用多个测试,例如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值。

1 个答案:

答案 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}))