我正在处理属于A和B两组的数据。我试图找到显示两个群体之间最大差异的变量,我认为Kullback-Leibler距离是一个很好的度量标准。以下是代表我的数据的样本:
df1 <- structure(list(Var1 = c(2L, 3L, 5L, 7L, 2L, 1L, 0L, 0L, 0L, 1L,
3L, 4L), VarA = c(0.56, 0.43, 0.25, 0.12, 0.78, 0.55, 0.35, 0.36,
0.3, 0.41, 0.43, 0.5), VarT = c(10L, 11L, 15L, 12L, 8L, 7L, 7L,
7L, 6L, 5L, 1L, 2L), Var3 = c(152L, 187L, 149L, 132L, 132L, 178L,
240L, 205L, 137L, 125L, 124L, 56L), group = structure(c(1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), .Names = c("Var1",
"VarA", "VarT", "Var3", "group"), class = "data.frame", row.names = c(NA,
-12L))
df2 <- structure(list(Var1 = c(5L, 8L, 7L, 4L, 5L, 2L, 1L, 2L, 6L, 5L
), VarA = c(0.24, 0.76, 0.43, 0, 0.52, 0.63, 0.46, 0.64, 0.55,
0.78), VarT = c(10L, 8L, 9L, 5L, 11L, 14L, 12L, 1L, 7L, 7L),
Var3 = c(205L, 120L, 531L, 203L, 215L, 224L, 211L, 212L,
134L, 222L), group = structure(c(1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L), .Label = "B", class = "factor")), .Names = c("Var1",
"VarA", "VarT", "Var3", "group"), class = "data.frame", row.names = c(NA,
-10L))
我想在一个for循环中应用Kullback-Leibler距离测试来比较相似列,以查看在两个组中同一变量之间显示最大距离的变量。
首先,我尝试运行FNN
软件包中的此命令。
require(FNN)
X <- df1[,2]
Y <- df2[,2]
KLx.dist(X, Y, k = 5)
[1] NaN -Inf -0.1928958 0.0312911 0.1972085
结果相当有趣,这些距离根本不接近彼此!我的问题是:我是否正确应用了测试?如果是的话,为什么距离显示如此巨大的差异呢?
注意:如果有其他测试可以完成工作,我很乐意尝试。
非常感谢。
ks.test
),Cramer-von-Mises等。 - Vincent Zoonekynd