Apakah ada ukuran 'kerataan' penyebaran?

14

Saya mencari di web, tetapi tidak menemukan sesuatu yang bermanfaat.

Saya pada dasarnya mencari cara untuk mengukur seberapa 'nilai' didistribusikan secara merata. Seperti pada, distribusi terdistribusi 'merata' seperti X : masukkan deskripsi gambar di sini

dan distribusi Y yang 'tidak merata' dengan mean dan standar deviasi yang kira-kira sama: masukkan deskripsi gambar di sini

Tetapi apakah ada ukuran m, seperti m (X)> m (Y)? Jika tidak ada, apa cara terbaik untuk membuat ukuran seperti ini?

(Gambar tangkapan layar dari Khan Academy)

Ketan
sumber
1
Bagaimana dengan condong?
wolfsatthedoor atau
Entropy bagus untuk distribusi diskrit yang memiliki dukungan yang sama. Tetapi saya tidak tahu apakah itu bagus untuk distribusi yang berkelanjutan.
Stéphane Laurent
Apakah Anda yakin bahwa dot plot adalah yang Anda inginkan? Saya tidak berpikir Anda bermaksud bertanya tentang keseragaman. Ini terdengar seperti pertanyaan tentang "clumpiness" atau "degree of clustering" atau bahkan multimodality.
shadowtalker
@ StéphaneLaurent - Saya direkomendasikan entropi oleh beberapa orang lain juga. Bisakah Anda meluangkan waktu dan menguraikannya sedikit?
Ketan
1
Anda perlu lebih jelas mendefinisikan apa yang Anda maksud dengan "didistribusikan secara merata". Otak saya yang berpikiran harfiah mengatakan bahwa data seperti 1,4,7,10,13, ... terdistribusi secara merata. Tetapi Anda mungkin berarti sesuatu yang sama sekali berbeda.
Emil Friedman

Jawaban:

16

Ukuran "kemerataan" standar, kuat, dipahami dengan baik, secara teoritis mapan, dan sering diterapkan Ripley K dan kerabat dekatnya, fungsi L. Meskipun ini biasanya digunakan untuk mengevaluasi konfigurasi titik spasial dua dimensi, analisis yang diperlukan untuk menyesuaikannya dengan satu dimensi (yang biasanya tidak diberikan dalam referensi) sederhana.


Teori

Fungsi K memperkirakan proporsi rata-rata titik dalam jarak dari titik tipikal. Untuk distribusi yang seragam pada interval [ 0 , 1 ] , proporsi sebenarnya dapat dihitung dan (asimtotik dalam ukuran sampel) sama dengan 1 - ( 1 - d ) 2 . Versi satu dimensi yang sesuai dari fungsi L mengurangi nilai ini dari K untuk menunjukkan penyimpangan dari keseragaman. Karena itu kami dapat mempertimbangkan untuk menormalkan setiap batch data untuk memiliki rentang unit dan memeriksa fungsi L untuk penyimpangan di sekitar nol.d[0,1]1(1d)2


Contoh yang berhasil

Untuk menggambarkan , saya telah disimulasikan sampel independen dari ukuran 64 dari distribusi seragam dan diplot (dinormalisasi) fungsi L mereka untuk jarak pendek (dari 0 ke 1 / 39996401/3 ), sehingga menciptakan sebuah amplop untuk memperkirakan distribusi sampling dari fungsi L. (Poin yang diplot dengan baik di dalam amplop ini tidak dapat dibedakan secara signifikan dari keseragaman.) Lebih dari ini saya telah merencanakan fungsi L untuk sampel dengan ukuran yang sama dari distribusi berbentuk-U, distribusi campuran dengan empat komponen yang jelas, dan distribusi Normal standar. Histogram sampel ini (dan distribusi induknya) ditunjukkan untuk referensi, menggunakan simbol garis untuk mencocokkan dengan fungsi L.

Angka

Paku tajam yang terpisah dari distribusi berbentuk-U (garis merah putus-putus, histogram paling kiri) membuat kluster nilai-nilai yang berjarak dekat. Ini tercermin oleh kemiringan yang sangat besar pada fungsi L pada . Fungsi L kemudian berkurang, akhirnya menjadi negatif untuk mencerminkan kesenjangan pada jarak menengah.0

Sampel dari distribusi normal (garis biru solid, histogram paling kanan) cukup dekat dengan terdistribusi secara merata. Dengan demikian, fungsi L-nya tidak berangkat dari dengan cepat. Namun, dengan jarak 0,1000.10 atau lebih, itu telah naik cukup di atas amplop untuk memberi sinyal kecenderungan kecil untuk mengelompok. Terus naik melintasi jarak menengah menunjukkan pengelompokan tersebar dan tersebar luas (tidak terbatas pada beberapa puncak terisolasi).

Kemiringan besar awal untuk sampel dari distribusi campuran (histogram tengah) menunjukkan pengelompokan pada jarak kecil (kurang dari ). Dengan jatuh ke level negatif, itu menandakan pemisahan pada jarak menengah. Membandingkan ini dengan fungsi L distribusi berbentuk U mengungkapkan: kemiringan pada 0 , jumlah di mana kurva ini naik di atas 0 , dan tingkat di mana mereka akhirnya turun kembali ke 0 semua memberikan informasi tentang sifat dari gugus yang ada di data. Setiap karakteristik ini dapat dipilih sebagai ukuran tunggal "kerataan" yang sesuai dengan aplikasi tertentu.0.15000

Contoh-contoh ini menunjukkan bagaimana fungsi-L dapat diperiksa untuk mengevaluasi keberangkatan data dari keseragaman ("evenness") dan bagaimana informasi kuantitatif tentang skala dan sifat keberangkatan dapat diekstraksi darinya.

(Seseorang memang dapat memplot seluruh fungsi L, meluas ke jarak penuh normalisasi , untuk menilai keberangkatan skala besar dari keseragaman. Namun, biasanya, menilai perilaku data pada jarak yang lebih kecil lebih penting.)1


Perangkat lunak

Rkode untuk menghasilkan gambar ini mengikuti. Dimulai dengan mendefinisikan fungsi untuk menghitung K dan L. Ini menciptakan kemampuan untuk mensimulasikan dari distribusi campuran. Kemudian menghasilkan data yang disimulasikan dan membuat plot.

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")
whuber
sumber
1
Saya bekerja sebagian besar di Numpy, dan kadang-kadang di SciPy. Apakah Anda tahu jika ukuran ini tersedia di pustaka statistik python? Pencarian untuk itu tidak menghasilkan sesuatu yang relevan.
Ketan
Fungsi L mungkin tidak tersedia, karena biasanya dikodekan untuk dua dimensi atau lebih. Algoritma ini sederhana, seperti yang dapat Anda lihat dari implementasinya di sini: hitung fungsi distribusi kumulatif empiris dari jarak antara semua pasangan data yang berbeda dan kemudian sesuaikan seperti yang ditunjukkan pada Ripley.L.
whuber
Apakah varians ukuran agnostik atau varians tergantung?
Ketan
1
[0,1]1(1d)2
whuber
Anda berkata "Masalah ini bisa menjadi masalah parah di dimensi yang lebih tinggi". Itu telah diadaptasi untuk array univariat, kan? Saya tidak sepenuhnya yakin apakah saya memahami semuanya dengan baik. Bisakah Anda menulis Ripley.L dalam bahasa lain atau pseudocode? Atau Anda bisa mengomentari kode yang ada sedikit atau setidaknya memformat Ripley.L ke beberapa baris untuk meningkatkan keterbacaannya. Kurangnya dokumentasi yang tepat di statsmodels.sourceforge.net/stable/generated/… , tidak banyak membantu saya.
Ketan
5

Saya berasumsi bahwa Anda ingin mengukur seberapa dekat distribusi ke seragam.

Anda dapat melihat jarak antara fungsi distribusi kumulatif dari distribusi seragam dan fungsi distribusi kumulatif empiris sampel.

{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

Sekarang, sebagai ukuran jarak antara distribusi mari kita ambil jumlah jarak di setiap titik, yaitu

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

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

Dalam kasus yang lebih rumit, Anda perlu merevisi norma yang digunakan di atas, tetapi gagasan utamanya tetap sama. Jika Anda memerlukan prosedur pengujian, mungkin lebih baik menggunakan norma-norma untuk pengujian yang dikembangkan (yang ditunjukkan oleh @TomMinka).

Łukasz Kidziński
sumber
Beberapa langkah populer lain jarak ke distribusi adalah tes Kolmogorov-Smirnov dan tes Anderson-Darling .
Tom Minka
Hai. Terima kasih atas jawabannya. Harap kunjungi kembali pertanyaan yang diperbarui untuk disambiguasi, dan beri tahu saya jika jawaban Anda berlaku untuk itu. Jika ya. Saya harus memverifikasinya.
Ketan
Ya, jawaban saya berlaku untuk itu, selama 'genap' berarti 'seragam'.
Łukasz Kidziński
Baik. Bisakah Anda menjelaskan sedikit tentang jawabannya.
Ketan
@ TomMinka terima kasih, sudah pasti norma norma-norma ini bahkan lebih baik, karena ada prosedur pengujian yang dikembangkan.
Łukasz Kidziński
1

Jika saya memahami pertanyaan Anda dengan benar, distribusi "paling genap" untuk Anda adalah di mana variabel acak mengambil setiap nilai yang diamati sekali - seragam dalam arti tertentu. Jika ada "kelompok" pengamatan dengan nilai yang sama, itu tidak merata. Dengan asumsi kita berbicara pengamatan terpisah, mungkin Anda bisa melihat baik perbedaan rata-rata antara titik massa probabilitas, perbedaan maksimum atau mungkin berapa banyak pengamatan memiliki perbedaan dari "rata-rata" pada ambang batas tertentu.

Jika itu benar-benar seragam dalam pengamatan, semua poin PM harus memiliki nilai yang sama, dan perbedaan antara maks dan min adalah 0. Semakin dekat perbedaan rata-rata adalah 0, semakin "bahkan" sebagian besar pengamatan adalah, semakin rendah perbedaan maksimum dan lebih sedikit "puncak" di sana juga menunjukkan bagaimana "bahkan" pengamatan empiris.

Pembaruan Tentu saja, Anda dapat menggunakan uji chi-square untuk keseragaman atau membandingkan fungsi distribusi empiris dengan seragam, tetapi dalam kasus-kasus itu, Anda akan dikenakan sanksi oleh "celah" besar dalam pengamatan, meskipun distribusi pengamatan masih "bahkan".

Avraham
sumber
Untuk satu set nilai yang mungkin, pada dasarnya saya ingin memodelkan seberapa 'langka' atau 'aneh' itu akan memiliki nilai tertentu dari set nilai tersebut. Karena tidak ada pilihan lain, saya mencoba mengukur seberapa terdistribusi nilai-nilai secara merata atau seragam. Semakin merata distribusi, semakin kecil peluang untuk memiliki nilai khusus dari set. Padahal, jika misalnya semua data terletak pada ekstrem distribusi, nilai apa pun dapat dianggap sesuatu yang 'aneh'. Saya harap Anda mengerti?
Ketan
1

Ukuran yang Anda cari secara resmi disebut ketidakcocokan .

Versi satu dimensi adalah sebagai berikut:

I=[a,b)x1,,xNI

JIA(J,N)J .

Itu adalah,

SEBUAH(J,N)=|{x1,...,xN}J|,
dan biarkan V(J) menunjukkan volume J.

The perbedaan dari urutanx1,...,xN didefinisikan sebagai

>DN=supJ|SEBUAH(J,N)-V(J)N|,
di mana supremum diambil alih semua subinterval setengah terbuka J=j=1[0,tj), dengan 0tj1.

Perbedaan itu kemudian membandingkan jumlah aktual poin dalam volume yang diberikan dengan jumlah yang diharapkan poin dalam volume itu, dengan asumsi urutan x1,...,xN didistribusikan secara seragam di saya.

Urutan perbedaan rendah sering disebut urutan quasirandom .

Tinjauan dasar urutan perbedaan rendah dapat ditemukan di sini , dan posting blog saya " Efektivitas urutan quasirandom yang tidak masuk akal " membandingkan berbagai metode ketika diterapkan pada Integrasi Numerik, memetakan titik-titik ke permukaan bola, dan ubin kuasi berkala.

Martin Roberts
sumber
0

Sepertinya Anda tertarik pada perbedaan berpasangan dari nilai yang diamati secara acak dalam urutan tertentu, seperti dalam kasus pemodelan pertumbuhan atau tren. Ada sejumlah cara untuk melakukannya dalam analisis deret waktu. Pendekatan yang sangat mendasar hanyalah model linier sederhana yang melakukan regresi nilai urutan pada nilai indeksnya. Dalam kasus pertama, model linier Anda akan memberi Anda koefisien regresi tunggal 1 (prediktifR2=1). Dalam kasus selanjutnya, ini akan menjadi koefisien 1,51 dan aR2 dari 0,78.

AdamO
sumber
Saya tidak tahu apakah saya cukup mengerti apa yang Anda maksudkan, tetapi saya hanya perlu memahami bagaimana sesuatu 'merata' didistribusikan dalam suatu distribusi. Varians tidak begitu berguna mengingat bahwa seseorang bisa mendapatkan varians dan mean yang sama untuk dua distribusi yang terdistribusi sangat berbeda.
Ketan
@Ketan, Anda mengubah pertanyaan Anda secara substansial. Either way, saya tidak jelas apa itu mungkin. Dalam hal apa pun, jelas bahwa jawaban saya tidak membahas apa yang Anda minati berdasarkan versi pertanyaan Anda yang terbaru.
AdamO
Untuk sekumpulan nilai yang mungkin, pada dasarnya saya ingin memodelkan seberapa 'langka' atau 'aneh' itu akan memiliki nilai tertentu dari sekumpulan nilai tersebut. Karena tidak ada pilihan lain, saya mencoba mengukur seberapa terdistribusi nilai-nilai secara merata atau seragam. Semakin merata distribusi, semakin kecil peluang untuk memiliki nilai khusus dari set. Padahal, jika misalnya semua data terletak pada ekstrem distribusi, nilai apa pun dapat dianggap sesuatu yang 'aneh'. Saya harap Anda mengerti?
Ketan
Tidak, maaf masih belum mengikuti. Hanya untuk memverifikasi, apakah Anda terbiasa dengan definisi formal dari data yang "seragam" didistribusikan? Distribusi "normal", misalnya, tidak seragam. Keduanya simetris. Anda tampaknya menyinggung apakah simetri mungkin menarik, tetapi kemudian Anda tampaknya mengatakan bahwa probabilitas pengambilan sampel nilai-nilai "langka" menarik. Misalnya, distribusi Cauchy simetris, tetapi dikenal sebagai contoh distribusi yang akan menghasilkan outlier sebagai model probabilitas.
AdamO
Biarkan saya begini: Setiap set hanyalah set semua nilai atribut tertentu dalam dataset. Saya pada dasarnya ingin mengukur setiap atribut dengan seberapa 'stabil' nilainya, yang mana saya telah menggunakan varian sederhana sampai sekarang. Tapi tadi malam, saya menyadari bahwa varians dan mean yang persis sama mungkin untuk 2 atribut, walaupun satu bisa 'genap', dan yang lainnya memiliki sebagian besar nilai dalam 2 ekstrem. Oleh karena itu sekarang saya ingin ukuran tambahan untuk mengukur apakah nilainya dapat ditemukan secara merata, atau apakah mereka lebih banyak berada di ekstrem.
Ketan