Gibt es ein Maß für die Gleichmäßigkeit der Ausbreitung?


14

Ich habe im Internet nachgeschlagen, aber nichts Hilfreiches gefunden.

Ich suche im Grunde nach einer Methode, um zu messen, wie „gleichmäßig“ ein Wert verteilt ist. Wie in einer "gleichmäßig" verteilten Distribution wie X : Bildbeschreibung hier eingeben

und eine 'ungleich' verteilte Verteilung Y von ungefähr dem gleichen Mittelwert und der gleichen Standardabweichung: Bildbeschreibung hier eingeben

Aber gibt es ein Ebenheitsmaß m, so dass m (X)> m (Y) ist? Wenn dies nicht der Fall ist, wie lässt sich eine solche Kennzahl am besten erstellen?

(Bilder Screenshot von Khan Academy)


1
Was ist mit Schräglauf?
Wolfsatthedoor

Entropie eignet sich für diskrete Verteilungen mit derselben Unterstützung. Aber ich weiß nicht, ob es für kontinuierliche Distributionen gut ist.
Stéphane Laurent

Sind Sie sicher, dass das Punktdiagramm das ist, was Sie wollen? Ich glaube nicht, dass Sie wirklich nach Uniformität fragen wollen. Dies klingt nach einer Frage nach "Klumpen" oder "Grad der Clusterbildung" oder sogar nach Multimodalität.
Shadowtalker

@ StéphaneLaurent - mir wurde Entropie auch von einigen anderen empfohlen. Könnten Sie sich bitte die Zeit nehmen und ein wenig darauf eingehen?
Ketan

1
Sie müssen klarer definieren, was Sie unter "gleichmäßig verteilt" verstehen. Mein buchstäblich denkendes Gehirn sagt, dass Daten wie 1,4,7,10,13, ... perfekt gleichmäßig verteilt sind. Aber Sie meinen vielleicht etwas ganz anderes.
Emil Friedman

Antworten:


16

Ein standardmäßiges, leistungsfähiges, gut verstandenes, theoretisch gut etabliertes und häufig implementiertes Maß für "Ebenheit" ist die Ripley-K-Funktion und deren enger Verwandter, die L-Funktion. Obwohl diese normalerweise zur Bewertung zweidimensionaler räumlicher Punktkonfigurationen verwendet werden, ist die Analyse, die erforderlich ist, um sie an eine Dimension anzupassen (was normalerweise nicht in Referenzen angegeben ist), einfach.


Theorie

Die K-Funktion schätzt den mittleren Anteil von Punkten innerhalb eines Abstands von einem typischen Punkt. Für eine gleichmäßige Verteilung auf das Intervall [ 0 , 1 ] kann der wahre Anteil berechnet werden und (asymptotisch in der Stichprobengröße) gleich 1 - ( 1 - d ) 2 sein . Die entsprechende eindimensionale Version der L-Funktion subtrahiert diesen Wert von K, um Abweichungen von der Homogenität zu zeigen . Wir könnten daher in Betracht ziehen, einen Datenstapel auf einen Einheitenbereich zu normieren und seine L-Funktion auf Abweichungen um Null zu untersuchen.d[0,1]1(1d)2


Arbeitsbeispiele

Zur Veranschaulichung , ich habe simuliert unabhängige Proben der Größe 64 von einer gleichförmigen Verteilung und aufgetragen ihre (normalisierte) L - Funktionen für kürzere Entfernungen (von 0 bis 1 / 3 ), um dadurch eine Hülle zu schaffen , die Stichprobenverteilung der L Funktion zu schätzen. (In diesem Umschlag gut eingezeichnete Punkte können nicht signifikant von der Gleichmäßigkeit unterschieden werden.) Darüber habe ich die L-Funktionen für Proben gleicher Größe aus einer U-förmigen Verteilung, einer Mischungsverteilung mit vier offensichtlichen Komponenten und einer Standardnormalverteilung eingezeichnet. Die Histogramme dieser Stichproben (und ihrer übergeordneten Verteilungen) werden als Referenz gezeigt, wobei Liniensymbole verwendet werden, um mit denen der L-Funktionen übereinzustimmen.9996401/3

Zahl

Die scharf getrennten Spitzen der U-förmigen Verteilung (gestrichelte rote Linie, Histogramm ganz links) erzeugen Cluster mit eng beieinander liegenden Werten. Dies zeigt sich an einer sehr großen Steigung in der L-Funktion bei . Die L-Funktion nimmt dann ab und wird schließlich negativ, um die Lücken bei Zwischenabständen wiederzugeben.0

Die Probe aus der Normalverteilung (durchgezogene blaue Linie, Histogramm ganz rechts) ist ziemlich gleichmäßig verteilt. Dementsprechend weicht seine L-Funktion nicht schnell von . Bei Abständen von etwa 0,10 ist sie jedoch ausreichend über die Hüllkurve gestiegen, um eine leichte Tendenz zur Clusterbildung zu signalisieren. Der fortgesetzte Anstieg über mittlere Entfernungen zeigt, dass die Clusterbildung diffus und weit verbreitet ist (nicht auf einige isolierte Peaks beschränkt).00.10

Die anfänglich große Steigung der Probe aus der Gemischverteilung (mittleres Histogramm) zeigt eine Häufung bei kleinen Entfernungen (weniger als ). Durch Absinken auf negative Werte wird eine Trennung in Zwischenabständen signalisiert. Der Vergleich mit der L-Funktion der U-förmigen Verteilung zeigt: Die Steigungen bei 0 , die Beträge, um die diese Kurven über 0 ansteigen , und die Raten, mit denen sie schließlich wieder auf 0 abfallen, geben Auskunft über die Art der Clusterbildung in die Daten. Jedes dieser Merkmale könnte als einzelnes Maß für die "Gleichmäßigkeit" ausgewählt werden, um einer bestimmten Anwendung zu entsprechen.0.15000

Diese Beispiele zeigen, wie eine L-Funktion untersucht werden kann, um Abweichungen der Daten von der Gleichmäßigkeit ("Gleichmäßigkeit") zu bewerten, und wie quantitative Informationen über den Maßstab und die Art der Abweichungen daraus extrahiert werden können.

(Man kann tatsächlich die gesamte L-Funktion aufzeichnen, die sich auf den gesamten normalisierten Abstand von , um Abweichungen von der Homogenität in großem Maßstab zu beurteilen. Normalerweise ist es jedoch von größerer Bedeutung, das Verhalten der Daten in kleineren Abständen zu beurteilen.)1


Software

RCode zum Generieren dieser Figur folgt. Zunächst werden Funktionen zur Berechnung von K und L definiert. Es wird eine Simulationsfunktion für eine Gemischverteilung erstellt. Dann werden die simulierten Daten generiert und die Diagramme erstellt.

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
Ich arbeite hauptsächlich in Numpy und manchmal in SciPy. Haben Sie eine Idee, ob diese Kennzahl in einer Statistik-Python-Bibliothek verfügbar ist? Wenn Sie danach suchen, wird nichts Relevantes zurückgegeben.
Ketan

Die L-Funktion ist wahrscheinlich nicht verfügbar, da sie normalerweise für zwei oder mehr Dimensionen codiert ist. Der Algorithmus ist einfach, wie Sie anhand der Implementierung hier sehen können: Berechnen Sie die empirische kumulative Verteilungsfunktion der Abstände zwischen allen unterschiedlichen Datenpaaren und passen Sie sie dann wie in gezeigt an Ripley.L.
whuber

Ist das Maß varianzunabhängig oder varianzabhängig?
Ketan

1
Die hier beschriebene grundlegende Prozedur normalisiert die Daten, damit der Bereich dem Intervall . Als solches ist es "Varianz-Agnostiker". Dies macht es jedoch empfindlich gegenüber Ausreißern. (Dieses Problem kann in höheren Dimensionen ein schwerwiegendes Problem sein.) Diese Einschränkung kann überwunden werden, indem beispielsweise ein Quantilbereich (wie der IQR) normalisiert und eine geeignete Anpassung in der 1 - ( 1 - d ) 2 - Korrektur für vorgenommen wird die L-Funktion. Dies würde die resultierende L-Funktion nichtparametrisch und robust machen , was meines Erachtens die Bedenken hinter Ihrem Kommentar anspricht. [0,1]1(1d)2
Whuber

Sie sagten: "Dieses Problem kann in höheren Dimensionen ein ernstes Problem sein." Es wurde für univariate Arrays angepasst, oder? Ich bin mir nicht ganz sicher, ob ich alles gut verstanden habe. Könnten Sie bitte Ripley.L in einer anderen Sprache oder in Pseudocode schreiben? Oder Sie können den vorhandenen Code nur ein wenig kommentieren oder Ripley.L mindestens in mehrere Zeilen formatieren, um die Lesbarkeit zu verbessern. Das Fehlen einer geeigneten Dokumentation unter statsmodels.sourceforge.net/stable/generated/… hilft mir sowieso nicht viel.
Ketan

5

Ich gehe davon aus, dass Sie messen möchten, wie nah die Verteilung an der Uniform ist.

Sie können den Abstand zwischen der kumulativen Verteilungsfunktion der Gleichverteilung und der empirischen kumulativen Verteilungsfunktion der Stichprobe untersuchen.

{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

Als Maß für den Abstand zwischen den Verteilungen nehmen wir nun die Summe der Abstände an jedem Punkt, d. H

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

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

In komplizierteren Fällen müssen Sie die oben verwendete Norm überarbeiten, aber die Grundidee bleibt gleich. Wenn Sie ein Testverfahren benötigen, kann es sinnvoll sein, Normen zu verwenden, für die Tests entwickelt wurden (die von @TomMinka angegeben wurden).


Einige andere beliebte Abstandsmaße zu einer Verteilung sind der Kolmogorov-Smirnov-Test und der Anderson-Darling-Test .
Tom Minka

Hallo. Danke für die Antwort. Bitte überprüfen Sie die aktualisierte Frage zur Disambiguierung und teilen Sie mir mit, ob Ihre Antwort darauf zutrifft. Wenn doch. Ich muss es überprüfen.
Ketan

Ja, meine Antwort gilt, solange "gerade" "einheitlich" bedeutet.
Łukasz Kidziński

Okay. Könnten Sie die Antwort etwas näher erläutern?
Ketan

@TomMinka danke, definitiv normen diese normen sind noch besser, da es ein entwickeltes prüfverfahren gibt.
Łukasz Kidziński

1

Wenn ich Ihre Frage richtig verstehe, ist die "gleichmäßigste" Verteilung für Sie eine, bei der die Zufallsvariable jeden beobachteten Wert einmal annimmt - in gewissem Sinne einheitlich. Wenn es "Cluster" von Beobachtungen mit demselben Wert gibt, wäre das ungleichmäßig. Angenommen, es handelt sich um diskrete Beobachtungen, könnten Sie sich sowohl die durchschnittliche Differenz zwischen den Wahrscheinlichkeitsmassenpunkten als auch die maximale Differenz ansehen, oder vielleicht, wie viele Beobachtungen über einem bestimmten Schwellenwert eine Differenz zum "Durchschnitt" aufweisen.

Wenn es in den Beobachtungen wirklich gleichmäßig wäre, sollten alle PM-Punkte den gleichen Wert haben, und die Differenz zwischen max und min ist 0. Je näher die durchschnittliche Differenz an 0 ist, desto "gerader" ist der Großteil der Beobachtungen, desto geringer Die maximale Differenz und die geringeren "Peaks" zeigen auch, wie "gerade" die empirischen Beobachtungen sind.

Update Natürlich können Sie einen Chi-Quadrat-Test für die Homogenität verwenden oder die empirische Verteilungsfunktion mit einer Uniform vergleichen, aber in diesen Fällen werden Sie durch große "Lücken" in den Beobachtungen bestraft, obwohl die Verteilungen der Beobachtungen immer noch bestehen "sogar".


Für einen gegebenen Satz möglicher Werte möchte ich im Grunde modellieren, wie "selten" oder "eigenartig" es wäre, einen bestimmten Wert aus diesem Satz von Werten zu haben. Mangels anderer Optionen versuche ich zu messen, wie gleichmäßig oder gleichmäßig die Werte verteilt sind. Je gleichmäßiger die Verteilung ist, desto geringer ist die Wahrscheinlichkeit, dass ein bestimmter Wert aus der Menge stammt. Befinden sich beispielsweise alle Daten in den Extremen einer Verteilung, kann jeder Wert als "eigenartig" eingestuft werden. Ich hoffe du verstehst es?
Ketan

1

Die Maßnahme, nach der Sie suchen, wird formal als Diskrepanz bezeichnet .

Die eindimensionale Version ist wie folgt:

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), with 0tj1.

The discrepancy thus compares the actual number of points in a given volume with the expected number of points in that volume, assuming the sequence x1,,xN is uniformly distributed in I.

Low discrepancy sequences are often called quasirandom sequences.

A basic overview of low discrepancy sequences can be found here, and my blog post "The unreasonable effectiveness of quasirandom sequences" compares various methods when applied to Numerical Integration, mapping points to the surface of a sphere, and quasiperiodic tiling.


0

It sounds like you are interested in the pairwise differences of randomly observed values in a particular sequence, as in the case of modeling growth or trend. There are a number of ways to do so in time series analyses. A very basic approach is just a simple linear model regressing the sequence values upon their index values. In the first case, your linear model would give you a singular regression coefficient of 1 (predictive R2=1). In the later case, this would be a coefficient of 1.51 and an R2 of 0.78.


I don't know if I understood clearly enough what you meant, but I simply need to understand how 'evenly' something is distributed in a distribution. Variance is not that useful given that one can get the same variance and mean for two very differently distributed distributions.
Ketan

@Ketan, you changed your question substantially. Either way, I am not clear what that might be. In any regard, it's clear that my answer is not addressing what you are interested in based on the most recent version of your question.
AdamO

For a given set of possible values, I want to basically model how 'rare' or 'peculiar' it would be have a particular value from that set of values. In lack of any other options, I'm trying to measure how evenly or uniformly distributed the values are. The more even the distribution, the less chance there is to have any peculiar value from the set. Whereas, if for example all the data lies in the extremes of a distribution, any value can be something worthy to be considered as 'peculiar'. I hope you get it?
Ketan

No, sorry still not following. Just to verify, are you familiar with the formal definition of "uniformly" distributed data? A "normal" distribution, for example, is not uniform. Both are symmetric. You seem to allude to whether symmetry might be of interest, but then you seem to say that the probability of sampling "rare" values is of interest. For instance, a Cauchy distribution is symmetric, but is known to be an example of a distribution that will generate outliers as a probability model.
AdamO

Let me put it this way: Each set is simply the set of all values of a particular attribute in a dataset. I basically want to quantify each attribute by how 'stable' its values are, for which I've been using simple variance till now. But last night, I realized that exactly same variance and mean is possible for 2 attributes, even though one could be 'even', and other having most of the values in 2 extremes. Hence now I want an additional measure to measure if the values can be found evenly, or do they reside more in the extremes.
Ketan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.