0

我有一个数据集,我想在其中应用几个测试,例如 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 值,我的目标是将其用作距离的度量。

所以我正在寻找一种算法,它可以对 nxn 个样本运行 KS 测试,然后在 anxn 矩阵中输出 p 值。

4

1 回答 1

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}))
于 2018-07-04T13:57:21.933 回答