我是一名植被生态学家和计算机科学的穷学生,最近了解了 Wasserstein 度量。我发现将此度量应用于一维分布相当直观,并且检查 R 中传输包中的 wasserstein1d 函数有助于我理解它的计算,以下行对我的理解最关键:
mean(abs(sort(b) - sort(a))^p)^(1/p)
在两个向量 a 和 b 长度不等的情况下,该函数似乎会进行插值,在每个向量中插入值,这些值是源数据的副本,直到长度相等。
我的问题与将 Wasserstein 度量扩展到 n 维分布有关。使用 R 中生成的以下 7d 示例数据集:
d <- 7
obs <- 100
d7a <- matrix(nrow = obs, ncol = d, data = 0)
d7b <- matrix(nrow = obs, ncol = d, data = 0)
set.seed(123)
for(i in 1:7){
d7a[,i] <- rnorm(obs)
d7b[,i] <- rnorm(obs)
}
wassersteindNd(d7a, d7b) #fictitious function here
是否可以计算这个距离,R 或 python 中是否有可用的包可以做到这一点?