Statistics 测量两个分布之间的差异
我有一个样本程序的距离向量。我试图量化它们有多相似。我使用了样本组之间的欧几里德距离(每个值都属于一个桶,我们逐个桶进行比较),这很好。但是,需要对大量样本进行太多的比较 我想知道是否有一种有效的方法来建立一个索引来比较样本。样品是这样的--Statistics 测量两个分布之间的差异,statistics,distribution,Statistics,Distribution,我有一个样本程序的距离向量。我试图量化它们有多相似。我使用了样本组之间的欧几里德距离(每个值都属于一个桶,我们逐个桶进行比较),这很好。但是,需要对大量样本进行太多的比较 我想知道是否有一种有效的方法来建立一个索引来比较样本。样品是这样的-- 有许多方法可以描述“两种分布之间的差异”。具体和有针对性的回答需要更多关于潜在概率分布的细节 这完全取决于如何定义两个分布之间的差异。给你两个想法: A是一种非参数检验,用于测量两个累积/经验分布函数之间的“距离” 在信息论的语言中,两个分布之间的“距离”
有许多方法可以描述“两种分布之间的差异”。具体和有针对性的回答需要更多关于潜在概率分布的细节 这完全取决于如何定义两个分布之间的差异。给你两个想法:
更新[一年后] 重温这篇文章时,强调以下几点可能很重要:
匹配::KS.boot
中所示。有关更多详细信息,请参见,例如和library(entropy)
library(tidyverse)
expand.grid(1:length(lst), 1:length(lst)) %>%
rowwise() %>%
mutate(KL = KL.empirical(lst[[Var1]], lst[[Var2]]))
由于KL散度不是对称的,我们需要计算成对KL散度矩阵的上下三角部分。为了减少计算时间,可以使用a,它只需要计算成对KL散度矩阵的上三角部分或下三角部分的KL散度(尽管对称KL散度版本本身需要计算两个KL散度,即KL(1->2)
和KL(2->1)
但这可以通过优化的例行程序完成)这些观测是独立的,我们不想多次接触这些分布,因为我们有数百万个这样的分布。我试着使用库尔贝克-莱布勒散度,我不知道如何解释这些差异的意义。@JoyBangla我不知道你在问什么。数以百万计的观测数据对计算时间影响不大。如果要在不同的发行版之间建立相似性度量,请运行成对KS测试。成对KL发散也是如此。我不知道你所说的“解释差异有多大意义”是什么意思。这似乎更像是一个(基本的)统计问题,在这种情况下,SO不是合适的论坛,我推荐一本基本统计教科书。另请参见。瓦瑟斯坦距离如何?
library(entropy)
library(tidyverse)
expand.grid(1:length(lst), 1:length(lst)) %>%
rowwise() %>%
mutate(KL = KL.empirical(lst[[Var1]], lst[[Var2]]))