衡量结块的标准方法?


13

我有很多数据,我想做一些看起来很简单的事情。在大量数据中,我对特定元素的聚集量感兴趣。假设我的数据是这样的有序集合:{A,C,B,D,A,Z,T,C ...}。假设我想知道A是否趋于彼此相邻,而不是随机(或更均匀)分布在整个集合中。这就是我所说的“笨拙”属性。

现在,是否有一些简单的数据“堆积”度量方法?也就是说,一些统计信息将告诉我距离随机分布的距离有多远?如果没有简单的方法可以做到,那么困难的方法大概是什么?任何指针,不胜感激!

Answers:


14

例如,假设您有一个有序集合,其中每个位置都有相等的概率成为字母表中的任何小写字母。在这种情况下,我将使有序集合包含元素。1000

# generate a possible sequence of letters
s <- sample(x = letters, size = 1000, replace = TRUE)

事实证明,如果每个所述有序集合的位置的如下在字母表的小写字母的均匀分布,然后两次出现相同的字母之间的距离遵循具有参数的几何分布。根据此信息,让我们计算同一字母的连续出现之间的距离。p=1/26

# find the distance between occurences of the same letters
d <- vector(mode = 'list', length = length(unique(letters)))
for(i in 1:length(unique(letters))) {
    d[[i]] <- diff(which(s == letters[i]))
}
d.flat <- unlist(x = d)

让我们看一下相同字母出现之间的距离的直方图,并将其与与上述几何分布关联的概率质量函数进行比较。

hist(x = d.flat, prob = TRUE, main = 'Histogram of Distances', xlab = 'Distance',
     ylab = 'Probability')
x <- range(d.flat)
x <- x[1]:x[2]
y <- dgeom(x = x - 1, prob = 1/26)
points(x = x, y = y, pch = '.', col = 'red', cex = 2)

红点表示距离的实际概率质量函数,如果有序集合的每个位置在字母上均一分布,并且直方图的条形表示与有序序列相关的距离的经验概率质量函数,我们将期望组。

在此处输入图片说明

希望上面的图像可以说服几何分布是适当的。

p=1/260

d.flat从上方看,与预期的几何分布在Bhattacharyya距离方面的比较如何?

b.dist <- 0
for(i in x) {
    b.dist <- b.dist + sqrt((sum(d.flat == i) / length(d.flat)) * dgeom(x = i - 1,
              prob = 1/26))
}
b.dist <- -1 * log(x = b.dist)

0.0260

编辑:

0.026010,000

gen.bhat <- function(set, size) {
    new.seq <- sample(x = set, size = size, replace = TRUE)
    d <- vector(mode = 'list', length = length(unique(set)))
    for(i in 1:length(unique(set))) {
        d[[i]] <- diff(which(new.seq == set[i]))
    }
    d.flat <- unlist(x = d)
    x <- range(d.flat)
    x <- x[1]:x[2]
    b.dist <- 0
    for(i in x) {
        b.dist <- b.dist + sqrt((sum(d.flat == i) / length(d.flat)) * dgeom(x = i -1,
                  prob = 1/length(unique(set))))
    }
    b.dist <- -1 * log(x = b.dist)
    return(b.dist)
}
dist.bhat <- replicate(n = 10000, expr = gen.bhat(set = letters, size = 1000))

现在,如果有序集合的生成方式是使每个位置的位置遵循字母上的均匀分布,则我们可以计算观察到的观察到的上述Bhattacharyya距离或一个极端值的概率。

p <- ifelse(b.dist <= mean(dist.bhat), sum(dist.bhat <= b.dist) / length(dist.bhat),
            sum(dist.bhat > b.dist) / length(dist.bhat))

0.38

0999

在此处输入图片说明


您似乎在一开始就假设字母的分布是多项式,每个字母的概率相等。如果分布的字母概率不相等怎么办?-每个字母出现的距离的预期分布是否仍是几何形状?以及什么参数?
ttnphns

对于每个字母不等的概率,每个字母出现之间的距离仍然是几何的。但是,参数随字母而变化,并且对于每个字母,它等于有序集中包含该字母的位置的概率。
假定正常的2012年

1
我喜欢你的方法。假设每个字母的数目都是固定的,并且在所有可能的顺序中均匀地绘制顺序,是否更现实?不幸的是,在这种情况下,我不知道分布是什么。任何想法?
gui11aume12年

@ gui11aume这是一个有趣的想法。您是否在指一种排列测试方法,在该方法中,我们对观察到的有序集进行了多次置换,并使用某些统计数据查看了原始有序集与置换的相似程度?
假定正常的2012年

是的,这就是我的想法。然后,您可以使用Bhattacharyya距离或Kullback-Leibler散度来测量完全混合的偏离。
gui11aume12年

7

您所描述的确切内容已编入一个称为“运行测试”的过程。掌握起来并不复杂。您可以在许多统计测试来源中找到它,例如Wikipedia或Nat'l Instit。标准技术YouTube


+1。@ Alan,Runs测试也称为Wald–Wolfowitz测试-您知道。
ttnphns

运行测试的问题在于,它仅适用于二分数据或二分数据。
ttnphns 2012年

0

如果您对这个观点稍有不同,可以参考信息理论入门-信息学领域的数学领域,涉及计算,图像/视频/音频处理,通信理论以及(也许更令人惊讶的)物理学和宇宙学(对理解黑洞以及经典的热力学至关重要)甚至生物学。

非正式地,我们可以说,使用通用压缩算法时,“簇”字母序列(按照您的示例)将被更密集地压缩-即包含原始文本的zip文件将更小。类似地,“笨拙”的图像(例如,纯绿色的baize上的几个台球)将比更多样化的图像(例如,一群人的图像)更有效地压缩(例如,创建较小的jpeg文件) )。当然,此类数据的信息内容(又称负熵或“负熵”)具有各种形式的定义,而与特定的压缩算法无关。

信息理论上的一种方法可能比上面更为经典的统计分析更具启发性的一种情况是,如果您有兴趣在多个(或所有)分辨率级别上识别“结块”。在您的文本字符串的示例中,如果在序列的开头有很多“ A”成束在一起,那么“ A”的成束就不多了,然后随着序列的继续而周期性地更多成束而更少成束,那么团块可以说存在于多种分辨率下-这可以通过信息理论方法很自然地捕捉到。

(编辑)我想到您担心这可能是一个荒谬的问题,而实际上,以信息和(负)熵为幌子对“团块性”的研究从本质上告诉了我们现代生活的日常运作(互联网,移动通信,语言本身)和宇宙的性质(黑洞,星系形成,对宇宙背景辐射的解释,确定什么是“活着”)应该用格言来回答:“没有愚蠢的问题,只有愚蠢的答案” [未分配的报价]。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.