Czy istnieje miara „równości” rozprzestrzeniania się?

14

Spojrzałem w górę w Internecie, ale nie mogłem znaleźć nic pomocnego.

Zasadniczo szukam sposobu na zmierzenie, jak „równomiernie” rozkładana jest wartość. Jak w „równomiernie” rozproszonej dystrybucji, takiej jak X : wprowadź opis zdjęcia tutaj

oraz „nierównomiernie” rozkład Y o mniej więcej tej samej średniej i odchyleniu standardowym: wprowadź opis zdjęcia tutaj

Ale czy istnieje jakakolwiek miara równości m, taka, że ​​m (X)> m (Y)? Jeśli nie, to jaki byłby najlepszy sposób na stworzenie takiego środka?

(Zrzut ekranu z Khan Academy)

Ketan
źródło
1
Co z przekrzywieniem?
wolfsatthedoor
Entropia jest przydatna w przypadku dyskretnych dystrybucji o takim samym wsparciu. Ale nie wiem, czy to jest dobre dla ciągłych dystrybucji.
Stéphane Laurent,
Czy jesteś pewien, że wykres kropkowy jest tym, czego chcesz? Nie sądzę, żebyś naprawdę chciał zapytać o jednolitość. To brzmi jak pytanie o „zlepek”, „stopień skupienia”, a nawet o multimodalność.
shadowtalker,
@ StéphaneLaurent - polecono mi również entropię przez kilku innych. Czy mógłbyś poświęcić trochę czasu i rozwinąć nieco temat?
Ketan
1
Musisz dokładniej zdefiniować, co rozumiesz przez „równomiernie rozłożone”. Mój dosłownie myślący mózg mówi, że dane 1, 4, 7, 10, 10, 13, ... są idealnie równomiernie rozłożone. Ale możesz mieć na myśli coś zupełnie innego.
Emil Friedman,

Odpowiedzi:

16

Standardową, mocną, dobrze zrozumiałą, teoretycznie ugruntowaną i często wdrażaną miarą „równości” jest funkcja Ripley K i jej bliski krewny, funkcja L. Chociaż są one zwykle używane do oceny konfiguracji dwuwymiarowych punktów przestrzennych, analiza potrzebna do dostosowania ich do jednego wymiaru (czego zwykle nie podano w odnośnikach) jest prosta.


Teoria

Funkcja K szacuje średni odsetek punktów w odległości od typowego punktu. Dla równomiernego rozkładu w przedziale [ 0 , 1 ] można obliczyć rzeczywistą proporcję i (asymptotycznie w wielkości próby) wynosi 1 - ( 1 - d ) 2 . Odpowiednia jednowymiarowa wersja funkcji L odejmuje tę wartość od K, aby pokazać odchylenia od jednorodności. Dlatego możemy rozważyć normalizację dowolnej partii danych w celu uzyskania zakresu jednostek i zbadanie jej funkcji L pod kątem odchyleń wokół zera.d[0,1]1(1d)2


Pracowane przykłady

W celu zilustrowania , że symulowane niezależnych próbek o rozmiarze 64 z jednolitej dystrybucji i wykreślono ich (znormalizowane) działa L na krótsze odległości (od 0 do 1 / 3 ), tworząc w ten sposób powłokę szacowania rozkładu próbkowania funkcja l. (Wykreślonych punktów w obrębie tej obwiedni nie można znacząco odróżnić od jednorodności.) Na tej podstawie narysowałem funkcje L dla próbek tego samego rozmiaru z rozkładu w kształcie litery U, rozkładu mieszanki z czterema oczywistymi składnikami i standardowego rozkładu normalnego. Histogramy tych próbek (i ich rozkładów macierzystych) pokazano w celach informacyjnych, używając symboli linii w celu dopasowania do funkcji L.9996401/3

Postać

Ostre oddzielone skoki rozkładu w kształcie litery U (przerywana czerwona linia, skrajny lewy histogram) tworzą skupiska o ściśle rozmieszczonych wartościach. Odzwierciedla to bardzo duże nachylenie funkcji L przy . Funkcja L następnie maleje, ostatecznie staje się ujemna, aby odzwierciedlić luki w odległościach pośrednich.0

Próbka z rozkładu normalnego (ciągła niebieska linia, histogram po prawej stronie) jest dość zbliżona do równomiernie rozmieszczonego. W związku z tym jego funkcja L nie odbiega szybko od . Jednak przy odległościach około 0,10 wzrósł on wystarczająco powyżej obwiedni, aby zasygnalizować niewielką tendencję do skupiania się. Dalszy wzrost na pośrednich odległościach wskazuje, że skupienie jest rozproszone i powszechne (nie ogranicza się do niektórych izolowanych pików).00.10

Początkowe duże nachylenie próbki z rozkładu mieszaniny (środkowy histogram) ujawnia grupowanie w małych odległościach (mniej niż ). Zejście do poziomów ujemnych sygnalizuje separację na pośrednich odległościach. Porównanie tego z funkcją L rozkładu w kształcie litery U ujawnia: nachylenia przy 0 , kwoty, o które te krzywe rosną powyżej 0 , oraz szybkości, z którymi ostatecznie opadają z powrotem do 0, wszystkie dostarczają informacji o naturze skupienia występującego w dane. Każda z tych cech może być wybrana jako pojedyncza miara „równości” w celu dopasowania do konkretnego zastosowania.0,15000

Przykłady te pokazują, w jaki sposób można zbadać funkcję L w celu oceny odejść danych od jednorodności („równości”) oraz w jaki sposób można z nich uzyskać informacje ilościowe na temat skali i charakteru odlotów.

(Rzeczywiście można wykreślić całą funkcję L, rozciągającą się do pełnej znormalizowanej odległości , aby ocenić duże odstępstwa od jednolitości. Zwykle jednak ważniejsze jest ocenianie zachowania danych na mniejszych odległościach).1


Oprogramowanie

Rponiżej kod do wygenerowania tej liczby. Zaczyna się od zdefiniowania funkcji do obliczenia K i L. Stwarza możliwość symulacji z rozkładu mieszanki. Następnie generuje symulowane dane i tworzy wykresy.

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
źródło
1
Pracuję głównie w Numpy, a czasem w SciPy. Czy masz pomysł, czy ta miara jest dostępna w dowolnej bibliotece python statystyki? Wyszukiwanie nie zwraca nic istotnego.
Ketan
Funkcja L prawdopodobnie nie jest dostępna, ponieważ zwykle jest zakodowana dla dwóch lub więcej wymiarów. Algorytm jest prosty, jak widać z implementacji tutaj: oblicz empiryczną funkcję kumulatywnego rozkładu odległości między wszystkimi różnymi parami danych, a następnie dostosuj, jak pokazano w Ripley.L.
whuber
Czy miara wariancji jest agnostyczna czy wariancyjna zależy?
Ketan
1
[0,1]1(1d)2
Powiedziałeś „Ten problem może być poważnym problemem w wyższych wymiarach”. Został dostosowany do tablic jednowymiarowych, prawda? Nie jestem do końca pewien, czy wszystko dobrze zrozumiałem. Czy możesz napisać Ripley.L w innym języku lub w pseudokodzie? Możesz też po prostu skomentować istniejący kod lub przynajmniej sformatować Ripley.L do wielu wierszy, aby zwiększyć jego czytelność. Brak odpowiedniej dokumentacji na stronie statsmodels.sourceforge.net/stable/generated/… , i tak nie pomaga mi zbytnio.
Ketan,
5

Zakładam, że chcesz zmierzyć, jak bliski jest rozkład munduru.

Można spojrzeć na odległość między funkcją rozkładu skumulowanego rozkładu równomiernego a empiryczną funkcją rozkładu skumulowanego próbki.

{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

Teraz, jako miarę odległości między rozkładami, weźmy sumę odległości w każdym punkcie, tj

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

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

W bardziej skomplikowanych przypadkach trzeba zmienić normę zastosowaną powyżej, ale główna idea pozostaje taka sama. Jeśli potrzebujesz procedury testowania, dobrym pomysłem może być zastosowanie norm, dla których opracowywane są testy (te, na które zwróciła uwagę Tomka).

Łukasz Kidziński
źródło
Inne popularne miary odległości do rozkładu to test Kołmogorowa – Smirnowa i test Andersona – Darlinga .
Tom Minka
Cześć. Dziękuję za odpowiedź. Prosimy o ponowne zapoznanie się ze zaktualizowanym pytaniem w celu ujednoznacznienia i poinformowanie mnie, czy Twoja odpowiedź dotyczy tego pytania. Jeśli to robi. Będę musiał to zweryfikować.
Ketan
Tak, moja odpowiedź ma zastosowanie, o ile „parzysty” oznacza „mundur”.
Łukasz Kidziński
W porządku. Czy mógłbyś trochę rozwinąć odpowiedź.
Ketan
@TomMinka dzięki, zdecydowanie normy te normy są jeszcze lepsze, ponieważ opracowano procedurę testowania.
Łukasz Kidziński
1

Jeśli dobrze rozumiem twoje pytanie, najbardziej „równomierny” rozkład byłby dla ciebie taki, w którym zmienna losowa przyjmuje raz każdą zaobserwowaną wartość - w pewnym sensie jednolita. Jeżeli istnieją „skupiska” obserwacji o tej samej wartości, byłoby to nierówne. Zakładając, że mówimy o dyskretnych obserwacjach, być może mógłbyś spojrzeć zarówno na średnią różnicę między punktami masy prawdopodobieństwa, maksymalną różnicę, a może na ile obserwacji różni się od „średniej” powyżej pewnego progu.

Gdyby były naprawdę jednolite w obserwacjach, wszystkie punkty PM powinny mieć jednakową wartość, a różnica między wartością maksymalną i minimalną wynosi 0. Im bliższa jest średnia różnica 0, tym bardziej „równa” jest większość obserwacji, tym niższa maksymalna różnica i mniej „szczytów” również pokazuje, jak „równe” są obserwacje empiryczne.

Aktualizacja Oczywiście możesz użyć testu chi-kwadrat dla jednorodności lub porównać empiryczną funkcję rozkładu z mundurem, ale w takich przypadkach będziesz karany za wszelkie duże „luki” w obserwacjach, nawet jeśli rozkłady obserwacji są nadal "parzysty".

Avraham
źródło
Dla danego zestawu możliwych wartości chcę w zasadzie modelować, jak „rzadki” lub „osobliwy” miałby określoną wartość z tego zestawu wartości. Wobec braku innych opcji próbuję zmierzyć, jak równomiernie lub równomiernie rozłożone są wartości. Im bardziej równomierny rozkład, tym mniejsza szansa na jakąkolwiek osobliwą wartość z zestawu. Podczas gdy na przykład wszystkie dane znajdują się w skrajnych rozkładach, każda wartość może być czymś godnym uznania za „osobliwy”. Mam nadzieję, że to rozumiesz?
Ketan
1

Środek, którego szukasz, jest formalnie nazywany rozbieżnością .

Wersja jednowymiarowa wygląda następująco:

I=[a,b)x1,,xNI

JIA(J,N)J

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

x1,,xN

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

x1,,xNI

Sekwencje o niskiej rozbieżności są często nazywane sekwencjami quasirandomowymi .

Podstawowy przegląd sekwencji o niskiej rozbieżności można znaleźć tutaj , a mój post na blogu „ Nieuzasadniona skuteczność sekwencji quasirandomowych ” porównuje różne metody w odniesieniu do integracji numerycznej, mapowania punktów na powierzchnię kuli i quasiperiodycznego układania płytek.

Martin Roberts
źródło
0

R2=1R2

AdamO
źródło
Nie wiem, czy zrozumiałem wystarczająco dobrze, co miałeś na myśli, ale po prostu muszę zrozumieć, w jaki sposób „równomiernie” jest dystrybuowane w dystrybucji. Rozbieżność nie jest tak przydatna, biorąc pod uwagę, że można uzyskać tę samą wariancję i średnią dla dwóch bardzo zróżnicowanych rozkładów.
Ketan
@Ketan, znacząco zmieniłeś swoje pytanie. Tak czy inaczej, nie jestem pewien, co to może być. W każdym razie jasne jest, że moja odpowiedź nie dotyczy tego, co Cię interesuje, w oparciu o najnowszą wersję twojego pytania.
AdamO,
Dla danego zestawu możliwych wartości chcę w zasadzie modelować, jak „rzadki” lub „osobliwy” miałby określoną wartość z tego zestawu wartości. Wobec braku innych opcji próbuję zmierzyć, jak równomiernie lub równomiernie rozłożone są wartości. Im bardziej równomierny rozkład, tym mniejsza szansa na jakąkolwiek osobliwą wartość z zestawu. Podczas gdy na przykład wszystkie dane znajdują się w skrajnych rozkładach, każda wartość może być czymś godnym uznania za „osobliwy”. Mam nadzieję, że to rozumiesz?
Ketan
Nie, przepraszam, nadal nie śledzę. Aby zweryfikować, czy znasz formalną definicję „równomiernie” rozproszonych danych? Na przykład „normalny” rozkład nie jest jednolity. Oba są symetryczne. Wydaje się, że sugerujesz, czy symetria może być interesująca, ale wydaje się, że mówisz, że prawdopodobieństwo próbkowania „rzadkich” wartości jest interesujące. Na przykład rozkład Cauchy'ego jest symetryczny, ale wiadomo, że jest przykładem rozkładu, który wygeneruje wartości odstające jako model prawdopodobieństwa.
AdamO
Powiem tak: każdy zestaw jest po prostu zbiorem wszystkich wartości określonego atrybutu w zbiorze danych. Zasadniczo chcę określić ilościowo każdy atrybut na podstawie tego, jak „stabilne” są jego wartości, dla których do tej pory stosowałem prostą wariancję. Ale ostatniej nocy zdałem sobie sprawę, że dokładnie taka sama wariancja i średnia jest możliwa dla 2 atrybutów, chociaż jeden może być „parzysty”, a drugi ma większość wartości w 2 skrajnościach. Dlatego teraz chcę dodatkowej miary, aby zmierzyć, czy wartości można znaleźć równomiernie, czy też mieszczą się one bardziej w skrajności.
Ketan