Descriptive-Statistics

結塊的標準度量?

  • July 29, 2012

我有很多數據,我想做一些看起來很簡單的事情。在這個龐大的數據集中,我對特定元素聚集在一起的程度很感興趣。假設我的數據是這樣的有序集:{A,C,B,D,A,Z,T,C…}。假設我想知道 A 是否傾向於彼此相鄰,而不是隨機(或更均勻地)分佈在整個集合中。這就是我稱之為“叢生”的屬性。

現在,是否有一些簡單的數據“塊狀”測量?也就是說,一些統計數據會告訴我隨機分佈的 As 有多遠?如果沒有一種簡單的方法可以做到這一點,那麼困難的方法是什麼?任何指針都非常感謝!

例如,假設您有一個有序集合,其中每個位置成為字母表中任何小寫字母的概率相同。在這種情況下,我將使有序集包含元素。

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

事實證明,如果有序集合的每個位置在字母表的小寫字母上遵循均勻分佈,那麼相同字母的兩次出現之間的距離遵循具有參數的幾何分佈. 根據這些信息,讓我們計算同一字母連續出現之間的距離。

# 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)

紅點代表距離的實際概率質量函數,如果有序集合的每個位置遵循字母上的均勻分佈,直方圖的條代表與有序相關的距離的經驗概率質量函數。放。

在此處輸入圖像描述

希望上面的圖像能夠證明幾何分佈是合適的。

同樣,如果有序集合的每個位置在字母上遵循均勻分佈,我們會期望相同字母出現之間的距離遵循帶有參數的幾何分佈. 那麼距離的預期分佈和差異的經驗分佈有多相似?兩個離散分佈之間的Bhattacharyya 距離是當分佈完全相同並且趨向於隨著分佈變得越來越不同。

就巴塔查亞距離而言,從上面看如何d.flat與預期的幾何分佈進行比較?

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)

預期幾何分佈與距離的經驗分佈之間的 Bhattacharyya 距離約為, 這相當接近.

編輯:

而不是簡單地說明上面觀察到的 Bhattacharyya 距離 () 相當接近,我認為這是模擬派上用場的一個很好的例子。現在的問題如下:如果有序集合的每個位置在字母上是一致的,則上面觀察到的 Bhattacharyya 距離與觀察到的典型 Bhattacharyya 距離相比如何?讓我們生成這樣的有序集合,並根據預期的幾何分佈計算它們的每個 Bhattacharyya 距離。

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))

在這種情況下,概率大約為.

為了完整起見,下圖是模擬的 Bhattacharyya 距離的直方圖。我認為重要的是要意識到你永遠不會觀察到 Bhattacharyya 距離因為有序集的長度是有限的。上面,任何兩次出現的字母之間的最大距離最多為.

在此處輸入圖像描述

引用自:https://stats.stackexchange.com/questions/33283

comments powered by Disqus

相關問答