Yayılmanın 'düzgünlüğünün' bir ölçüsü var mı?


14

Web'de aradım, ancak yararlı bir şey bulamadım.

Temelde bir değerin 'eşit olarak' dağıtıldığını ölçmenin bir yolunu arıyorum. Bir de olduğu gibi, 'eşit' gibi dağıtılmış dağıtım X : resim açıklamasını buraya girin

ve kabaca aynı ortalama ve standart sapmaya sahip 'dengesiz' dağıtılmış bir dağılım Y : resim açıklamasını buraya girin

Ancak m (X)> m (Y) olacak şekilde m eşitlik ölçüsü var mı? Yoksa, böyle bir ölçü oluşturmanın en iyi yolu ne olurdu?

(Khan Academy'den görüntüler ekran görüntüsü)


1
Çarpıklık ne olacak?
wolfsatthedoor

Entropi, aynı desteğe sahip ayrı dağıtımlar için iyidir. Ama sürekli dağılımlar için güzel olup olmadığını bilmiyorum.
Stéphane Laurent

Nokta grafiğinin istediğiniz gibi olduğundan emin misiniz? Gerçekten tek tipliği sormak istediğini sanmıyorum. Bu, "kümelenme" veya "kümelenme derecesi" veya hatta çok yönlülük hakkında bir soru gibi geliyor.
shadowtalker

@ StéphaneLaurent - Birkaç kişi tarafından entropi önerildi. Lütfen biraz zaman ayırabilir ve biraz ayrıntı verebilir misiniz?
Ketan

1
Ne demek istediğinizi "eşit olarak dağıtılmış" olarak daha net bir şekilde tanımlamanız gerekir. Gerçek fikirli beynim, 1,4,7,10,13, ... gibi verilerin kusursuz bir şekilde dağıldığını söylüyor. Ama tamamen farklı bir şey demek isteyebilirsiniz.
Emil Friedman

Yanıtlar:


16

Standart, güçlü, iyi anlaşılmış, teorik olarak sağlam ve sıkça uygulanan “düzgünlük” ölçüsü Ripley K fonksiyonu ve yakın akrabası L fonksiyonudur. Bunlar tipik olarak iki boyutlu uzamsal nokta yapılandırmalarını değerlendirmek için kullanılsa da, bunları bir boyuta (genellikle referanslarda verilmez) uyarlamak için gereken analiz basittir.


teori

K fonksiyonu tipik bir noktanın mesafesi içindeki ortalama nokta oranını tahmin eder . aralığında eşit dağılım için, gerçek oran hesaplanabilir ve (örnek boyutunda asimptotik olarak) eşittir . L fonksiyonunun uygun tek boyutlu versiyonu, homojenlikten sapmaları göstermek için bu değeri K'dan çıkarır . Bu nedenle, herhangi bir veri grubunu birim aralığına sahip hale getirmeyi ve L işlevini sıfır civarında sapmalar açısından incelemeyi düşünebiliriz.[ 0 , 1 ] 1 - ( 1 - d ) 2d[0,1]1(1d)2


Çalışılan Örnekler

Örnek olarak , bir simüle edilmiş olan boyutundan bağımsız örnekleri düzgün bir dağılım ve (dan daha kısa mesafeler için kendi (normalize edilmiş) L fonksiyonları çizilen için , böylece L fonksiyonunun örnek dağılımını tahmin etmek için bir zarf oluşturma). (Bu zarfın içindeki iyi işaretlenmiş noktalar homojenlikten önemli ölçüde ayırt edilemez.) Bunun üzerinde U şekilli bir dağılımdan, aynı boyutta dört bileşenden oluşan bir karışım dağılımından ve standart bir Normal dağılımdan aynı boyuttaki numuneler için L fonksiyonlarını çizdim. Bu örneklerin histogramları (ve bunların ana dağılımları), L fonksiyonlarınınkilerle eşleşmesi için çizgi sembolleri kullanılarak referans olarak gösterilmiştir.64 0 1 / 39996401/3

şekil

U şeklindeki dağılımın keskin ayrılan sivri uçları (kesikli kırmızı çizgi, en soldaki histogram) yakın aralıklı değer kümeleri oluşturur. Bu, fonksiyonundaki L fonksiyonundaki çok büyük bir eğimle yansıtılır . Daha sonra L fonksiyonu azalır, sonunda ara mesafelerdeki boşlukları yansıtmak için negatif olur.0

Normal dağılımdan gelen örnek (koyu mavi çizgi, en sağdaki histogram) eşit olarak dağıtılmışa oldukça yakındır. Buna göre, L işlevi hızla ayrılmaz. Bununla birlikte, ya da daha fazla mesafelerle, hafif bir kümelenme eğilimi sinyalini vermek için zarfın üzerinde yeterince yükselmiştir. Ara mesafeler boyunca devam eden yükseliş, kümelenmenin yaygın ve yaygın olduğunu göstermektedir (bazı izole piklerle sınırlı değildir).0.1000.10

Karışım dağılımından (orta histogram) numune için ilk büyük eğim , küçük mesafelerde ( az) kümelemeyi ortaya çıkarır . Negatif seviyelere düşerek, ara mesafelerde ayrılma sinyalleri verir. U-şeklindeki dağıtımın L işlevi için bu karşılaştırma açıklayıcıdır: en yamaçlar , bu eğriler üzerine çıkması hangi miktarlarda , ve oranlar hangi en sonunda geri iner her kümelenme mevcut doğası ile ilgili olarak bilgi sağlamak veri. Bu özelliklerden herhangi biri, belirli bir uygulamaya uyacak şekilde "eşitliğin" tek bir ölçüsü olarak seçilebilir.0 0 00.15000

Bu örnekler, verilerin tekdüzelikten ("düzgünlük") ayrılmasını değerlendirmek için bir L-fonksiyonunun nasıl incelenebileceğini ve kalkışların ölçeği ve niteliği hakkında nicel bilgilerin nasıl çıkarılabileceğini göstermektedir.

( Tekdüzelikten büyük ölçekli ayrılmaları değerlendirmek için tam normalleştirilmiş mesafeye kadar uzanan tüm L fonksiyonunu çizebilir.1


Yazılım

RBu rakamı oluşturmak için kod aşağıdaki gibidir. K ve L'yi hesaplamak için fonksiyonlar tanımlayarak başlar. Bir karışım dağılımından simüle etme yeteneği yaratır. Sonra simüle edilmiş verileri üretir ve grafikleri yapar.

Ripley.K <- function(x, scale) {
  # Arguments:
  # x is an array of data.
  # scale (not actually used) is an option to rescale the data.
  #
  # Return value:
  # A function that calculates Ripley's K for any value between 0 and 1 (or `scale`).
  #
  x.pairs <- outer(x, x, function(a,b) abs(a-b))  # All pairwise distances
  x.pairs <- x.pairs[lower.tri(x.pairs)]          # Distances between distinct pairs
  if(missing(scale)) scale <- diff(range(x.pairs))# Rescale distances to [0,1]
  x.pairs <- x.pairs / scale
  #
  # The built-in `ecdf` function returns the proportion of values in `x.pairs` that
  # are less than or equal to its argument.
  #
  return (ecdf(x.pairs))
}
#
# The one-dimensional L function.
# It merely subtracts 1 - (1-y)^2 from `Ripley.K(x)(y)`.  
# Its argument `x` is an array of data values.
#
Ripley.L <- function(x) {function(y) Ripley.K(x)(y) - 1 + (1-y)^2}
#-------------------------------------------------------------------------------#
set.seed(17)
#
# Create mixtures of random variables.
#
rmixture <- function(n, p=1, f=list(runif), factor=10) {
  q <- ceiling(factor * abs(p) * n / sum(abs(p)))
  x <- as.vector(unlist(mapply(function(y,f) f(y), q, f)))
  sample(x, n)
}
dmixture <- function(x, p=1, f=list(dunif)) {
  z <- matrix(unlist(sapply(f, function(g) g(x))), ncol=length(f))
  z %*% (abs(p) / sum(abs(p)))
}
p <- rep(1, 4)
fg <- lapply(p, function(q) {
  v <- runif(1,0,30)
  list(function(n) rnorm(n,v), function(x) dnorm(x,v), v)
  })
f <- lapply(fg, function(u) u[[1]]) # For random sampling
g <- lapply(fg, function(u) u[[2]]) # The distribution functions
v <- sapply(fg, function(u) u[[3]]) # The parameters (for reference)
#-------------------------------------------------------------------------------#
#
# Study the L function.
#
n <- 64                # Sample size
alpha <- beta <- 0.2   # Beta distribution parameters

layout(matrix(c(rep(1,3), 3, 4, 2), 2, 3, byrow=TRUE), heights=c(0.6, 0.4))
#
# Display the L functions over an envelope for the uniform distribution.
#
plot(c(0,1/3), c(-1/8,1/6), type="n", 
     xlab="Normalized Distance", ylab="Total Proportion",
     main="Ripley L Functions")
invisible(replicate(999, {
  plot(Ripley.L(x.unif <- runif(n)), col="#00000010", add=TRUE)
}))
abline(h=0, lwd=2, col="White")
#
# Each of these lines generates a random set of `n` data according to a specified
# distribution, calls `Ripley.L`, and plots its values.
#
plot(Ripley.L(x.norm <- rnorm(n)), col="Blue", lwd=2, add=TRUE)
plot(Ripley.L(x.beta <- rbeta(n, alpha, beta)), col="Red", lwd=2, lty=2, add=TRUE)
plot(Ripley.L(x.mixture <- rmixture(n, p, f)), col="Green", lwd=2, lty=3, add=TRUE)
#
# Display the histograms.
#
n.breaks <- 24
h <- hist(x.norm, main="Normal Sample", breaks=n.breaks, xlab="Value")
curve(dnorm(x)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, col="Blue")
h <- hist(x.beta, main=paste0("Beta(", alpha, ",", beta, ") Sample"), 
          breaks=n.breaks, xlab="Value")
curve(dbeta(x, alpha, beta)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=2, col="Red")
h <- hist(x.mixture, main="Mixture Sample", breaks=n.breaks, xlab="Value")
curve(dmixture(x, p, g)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=3, col="Green")

1
Çoğunlukla Numpy'de, bazen de SciPy'de çalışıyorum. Bu önlemin herhangi bir istatistik python kütüphanesinde mevcut olup olmadığı hakkında herhangi bir fikriniz var mı? Bunu aramak, alakalı bir şey döndürmez.
Ketan

L işlevi muhtemelen kullanılamaz, çünkü genellikle iki veya daha fazla boyut için kodlanır. Buradaki uygulamadan görebileceğiniz gibi algoritma basittir: tüm farklı veri çiftleri arasındaki mesafelerin ampirik kümülatif dağılım işlevini hesaplayın ve sonra gösterildiği gibi ayarlayın Ripley.L.
whuber

Ölçüm varyansı agnostik veya varyans bağımlı mı?
Ketan

1
Burada tarif ettiğim temel prosedür, aralığın aralığına karşılık gelmesi için verileri normalleştirir . Bu nedenle "varyans agnostik" tir. Ancak, bu durum aykırı değerlere duyarlı hale getirir. (Bu sorun daha yüksek boyutlarda ciddi bir sorun olabilir.) Örneğin, bir kantil aralığı (IQR gibi) normalleştirerek ve düzeltmesinde uygun bir ayarlama yaparak bu sınırlamanın üstesinden gelinebilir. L fonksiyonu için. Bu, sonuçta ortaya çıkan L-fonksiyonunu parametrik olmayan ve sağlam hale getirecektir . 1 - ( 1 - d ) 2[0,1]1(1d)2
whuber

"Bu sorun daha yüksek boyutlarda ciddi bir sorun olabilir" dediniz. Tek değişkenli diziler için uyarlanmıştır, değil mi? Her şeyi iyi anladığımdan emin değilim. Lütfen Ripley.L'yi başka bir dilde veya sözde kodla yazabilir misiniz? Ya da sadece mevcut kodu biraz yorumlayabilir veya en azından okunabilirliğini artırmak için Ripley.L'yi birden çok satıra biçimlendirebilirsiniz. Statsmodels.sourceforge.net/stable/generated/… 'da herhangi bir uygun dokümantasyonun olmaması, bana çok fazla yardımcı olmuyor.
Ketan

5

Üniformaya dağılımın ne kadar yakın olduğunu ölçmek istediğinizi varsayıyorum.

Düzgün dağılımın kümülatif dağılım fonksiyonu ile numunenin ampirik kümülatif dağılım fonksiyonu arasındaki mesafeye bakabilirsiniz.

{1,2,3,4,5}Fu(x)

Fu(x)=i=1[x]1/5.

X1,3,5X

FX(1)=1/3,FX(2)=1/3,FX(3)=2/3,FX(4)=2/3,FX(5)=1

Y1,1,5Y

FY(1)=2/3,FY(2)=2/3,FY(3)=2/3,FY(4)=2/3,FY(5)=1

Şimdi, dağılımlar arasındaki mesafenin bir ölçüsü olarak, her bir noktadaki mesafelerin toplamını alalım, yani

d(F,G)=i=15|F(x)G(x)|.

d(Fu,FX)<d(Fu,FY)

Daha karmaşık durumlarda, yukarıda kullanılan normu revize etmeniz gerekir, ancak ana fikir aynı kalır. Test prosedürüne ihtiyacınız varsa, testlerin geliştirildiği normları kullanmak iyi olabilir (@TomMinka'nın işaret ettikleri).


Bir dağılıma olan mesafenin diğer bazı popüler ölçüleri Kolmogorov – Smirnov testi ve Anderson – Darling testidir .
Tom Minka

Selam. Cevap için teşekkürler. Güncellenmiş soruyu belirsizlik için tekrar ziyaret edin ve cevabınız için geçerli olup olmadığını bana bildirin. Eğer yaparsa. Bunu doğrulamam gerekecek.
Ketan

Evet, cevabım, 'çift' üniforma anlamına geldiği sürece geçerlidir.
asukasz Kidziński

Tamam. Cevabı biraz detaylandırabilir misiniz?
Ketan

@TomMinka teşekkürler, geliştirilen bir test prosedürü olduğundan, kesinlikle bu normların daha iyi normları vardır.
asukasz Kidziński

1

Sorunuzu doğru anlarsam, sizin için "en eşit" dağılım, rastgele değişkenin gözlemlenen her değeri bir kez aldığı bir anlamda eşit olacaktır. Aynı değerdeki gözlem "kümeleri" varsa, bu eşit olmayacaktır. Ayrık gözlemlerden bahsettiğimizi varsayarsak, belki de hem olasılık kütle noktaları arasındaki ortalama farka, hem de maksimum farka ya da kaç gözlemin belirli bir eşik üzerindeki "ortalama" dan farkı olduğunu görebilirsiniz.

Eğer gözlemlerde gerçekten muntazam olsaydı, tüm PM noktaları eşit değere sahip olmalı ve max ile min arasındaki fark 0 olmalıdır. Ortalama fark 0'a ne kadar yakın olursa, gözlemlerin kütlesi o kadar "eşit" ise, daha düşük maksimum fark ve daha az "zirve" de ampirik gözlemlerin ne kadar "eşit" olduğunu göstermeye gider.

Güncelleme Elbette, tekdüzelik için ki-kare testi kullanabilir veya ampirik dağılım işlevini bir üniforma ile karşılaştırabilirsiniz, ancak bu durumlarda, gözlemlerin dağılımı hala olsa da, gözlemlerde herhangi bir büyük "boşluk" ile cezalandırılacaksınız. "hatta".


Belirli bir olası değerler kümesi için, temel olarak, bu değer kümesinden belirli bir değere ne kadar 'nadir' veya 'tuhaf' olacağını modellemek istiyorum. Başka seçeneklerin olmaması durumunda, değerlerin ne kadar eşit veya eşit olarak dağıtıldığını ölçmeye çalışıyorum. Dağılım ne kadar eşit olursa, setten herhangi bir tuhaf değere sahip olma şansı o kadar az olur. Örneğin, tüm veriler bir dağılımın uç noktalarında yer alıyorsa, herhangi bir değer 'tuhaf' olarak kabul edilmeye değer bir şey olabilir. Umarım alırsın?
Ketan

1

Aradığınız ölçüye resmen tutarsızlık denir .

Tek boyutlu sürüm aşağıdaki gibidir:

I=[a,b)x1,,xNI

JIA(J,N)J

A(J,N)=|{x1,,xN}J|,
V(J)J

x1,,xNJ = j = 1 [ 0 , t j ) 0 t j1

>DN=supJ|A(J,N)V(J)N|,
J=j=1[0,tj)0tj1

Fark böylece sıra varsayarak bu hacimde nokta beklenen dizi ile, belirli bir hacim içinde noktaları gerçek sayısını, eşit dağıtılır . Ix1,,xNI

Düşük tutarsızlık dizilerine sıklıkla kuasirandom dizileri denir .

Düşük tutarsızlık sekanslarına temel bir genel bakış burada bulunabilir ve " Quasirandom sekanslarının mantıksız etkinliği " blog yazım Sayısal Entegrasyona uygulandığında çeşitli yöntemleri karşılaştırır, kürenin yüzeyine eşleme noktaları ve quasiperiodic fayans.


0

Büyüme veya trendin modellenmesi durumunda olduğu gibi, belirli bir sırayla rastgele gözlenen değerlerin ikili farklarıyla ilgileniyorsunuz gibi görünüyor. Zaman serisi analizlerinde bunu yapmanın birkaç yolu vardır. Çok temel bir yaklaşım, sekans değerlerini indeks değerleri üzerine gerileyen basit bir doğrusal modeldir. İlk durumda, doğrusal modeliniz size tekil bir regresyon katsayısı 1 (tahmini ) verecektir . Sonraki durumda, bu 1.51 katsayısı ve 0.78 olacaktır.R, 2R2=1R2


Ne demek istediğini yeterince anlayabildiğimi bilmiyorum, ama bir şeyin bir dağıtımda 'eşit olarak' dağıtıldığını anlamam gerekiyor. Çok farklı dağıtılmış iki dağılım için aynı varyansı ve ortalamayı alabildiği için varyans o kadar kullanışlı değildir.
Ketan

@Ketan, sorunuzu önemli ölçüde değiştirdiniz. Her iki durumda da, bunun ne olabileceğinden emin değilim. Herhangi bir açıdan, cevabımın sorunuzun en son sürümüne dayanarak ilgilendiğiniz şeyi ele almadığı açıktır.
AdamO

Belirli bir olası değerler kümesi için, temel olarak, bu değer kümesinden belirli bir değere ne kadar 'nadir' veya 'tuhaf' olacağını modellemek istiyorum. Başka seçeneklerin olmaması durumunda, değerlerin ne kadar eşit veya eşit olarak dağıtıldığını ölçmeye çalışıyorum. Dağılım ne kadar eşit olursa, setten herhangi bir tuhaf değere sahip olma şansı o kadar az olur. Örneğin, tüm veriler bir dağılımın uç noktalarında yer alıyorsa, herhangi bir değer 'tuhaf' olarak kabul edilmeye değer bir şey olabilir. Umarım alırsın?
Ketan

Hayır, üzgünüm hala takip etmiyorum. Sadece doğrulamak için, "tekdüze" dağıtılmış verilerin resmi tanımını biliyor musunuz? Örneğin, "normal" bir dağılım tekdüze değildir. Her ikisi de simetrik. Simetrinin ilgi çekip çekmeyeceğini belirtiyorsunuz, ancak sonra "nadir" değerlerden örnek alma olasılığının ilgi çekici olduğunu söylüyorsunuz. Örneğin, bir Cauchy dağılımı simetriktir, ancak bir olasılık modeli olarak aykırı değerler üretecek bir dağılımın bir örneği olduğu bilinmektedir.
AdamO

Bu şekilde söyleyeyim: Her küme, bir veri kümesindeki belirli bir özniteliğin tüm değerlerinin kümesidir. Temel olarak her bir özelliği, değerlerini ne kadar 'kararlı' olarak ölçmek istiyorum ki, şimdiye kadar basit bir varyans kullanıyorum. Ama dün gece, biri 'eşit' olabilse de diğeri 2 uçta değerlerin çoğuna sahip olsa da, 2 özellik için tamamen aynı varyans ve ortalamaların mümkün olduğunu fark ettim. Bu nedenle, değerlerin eşit olarak bulunup bulunmadığını ölçmek için ek bir önlem istiyorum ya da uçlarda daha fazla ikamet ediyorlar mı?
Ketan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.