Schätzung einer Verteilung basierend auf drei Perzentilen


23

Mit welchen Methoden kann ich auf eine Verteilung schließen, wenn ich nur drei Perzentile kenne?

Ich weiß zum Beispiel, dass in einem bestimmten Datensatz das fünfte Perzentil 8.135, das 50. Perzentil 11.259 und das 95. Perzentil 23.611 ist. Ich möchte in der Lage sein, von jeder anderen Zahl zu ihrem Perzentil zu gelangen.

Es sind nicht meine Daten, und das sind alle Statistiken, die ich habe. Es ist klar, dass die Verteilung nicht normal ist. Die einzige andere Information, die ich habe, ist, dass diese Daten die Pro-Kopf-Finanzierung der Regierung für verschiedene Schulbezirke darstellen.

Ich weiß genug über Statistiken, um zu wissen, dass dieses Problem keine eindeutige Lösung hat, aber nicht genug, um zu wissen, wie man gute Vermutungen anstellt.

Wäre eine logarithmische Verteilung angemessen? Mit welchen Tools kann ich die Regression durchführen (oder muss ich sie selbst durchführen)?


Ich habe das R-Tag hinzugefügt, damit der R-Code in meinem Kommentar hervorgehoben wird
mpiktas

Ein detailliertes Beispiel derselben Frage (und ihrer Lösung) finden Sie im doppelten Thread unter stats.stackexchange.com/questions/133129 .
whuber

Antworten:


17

Die Verwendung einer rein statistischen Methode für diese Arbeit liefert absolut keine zusätzlichen Informationen über die Verteilung der Schulausgaben: Das Ergebnis wird lediglich eine willkürliche Wahl des Algorithmus widerspiegeln.

Sie benötigen mehr Daten .

Dies ist leicht zu bekommen: Verwenden Sie Daten aus früheren Jahren, aus vergleichbaren Bezirken, was auch immer. Beispielsweise sind die Bundesausgaben für 14866 Schulbezirke im Jahr 2008 auf der Website der Volkszählung verfügbar . Es zeigt, dass im ganzen Land die gesamten Pro-Kopf-Bundeseinnahmen (eingeschrieben) in etwa normal verteilt waren, die Aufschlüsselung nach Bundesstaaten zeigt jedoch erhebliche Unterschiede ( z. B. sind die Rundholzausgaben in Alaska negativ, während die Rundholzausgaben in Colorado stark positiv sind). . Verwenden Sie diese Daten, um die wahrscheinliche Form der Verteilung zu charakterisieren und passen Sie dann Ihre Quantile an diese Form an.

Wenn Sie sich sogar der richtigen Verteilungsform nähern, sollten Sie in der Lage sein, die Quantile genau zu reproduzieren, indem Sie einen oder höchstens zwei Parameter anpassen. Die beste Methode zur Ermittlung der Übereinstimmung hängt von der von Ihnen verwendeten Verteilungsform ab, aber - was noch wichtiger ist - davon, wofür Sie die Ergebnisse verwenden möchten. Müssen Sie einen durchschnittlichen Ausgabenbetrag schätzen? Ober- und Untergrenze der Ausgaben? Was auch immer es ist, Sie möchten ein Maß für die Anpassungsgüte festlegen, mit dem Sie die besten Chancen haben, mit Ihren Ergebnissen gute Entscheidungen zu treffen. Wenn sich Ihr Interesse beispielsweise auf die oberen 10% aller Ausgaben konzentriert, möchten Sie das 95. Perzentil genau anpassen, und es interessiert Sie möglicherweise wenig, ob Sie das 5. Perzentil anpassen. Keine ausgefeilte Anpassungstechnik wird diese Überlegungen für Sie treffen.

Natürlich kann niemand rechtmäßig garantieren, dass diese dateninformierte, entscheidungsorientierte Methode eine bessere (oder schlechtere) Leistung erbringt als ein statistisches Rezept, aber im Gegensatz zu einem rein statistischen Ansatz hat diese Methode eine in der Realität begründete Grundlage. mit einem Fokus auf Ihre Bedürfnisse, geben Sie ihm etwas Glaubwürdigkeit und Verteidigung gegen Kritik.


2
+1 Sie benötigen mehr Daten und was Sie mit den Ergebnissen anfangen möchten, verdient besondere Beachtung.
6.

2
Es hört sich so an, als ob Ihre Antwort viel Weisheit enthält. Ich muss mich mehr mit den Leuten beraten, die mir das Problem gestellt haben, was sie wollen. Vielen Dank für die Links und den Rat.
Mark Eichenlaub

1
@ Mark Viel Glück!
whuber

23

Wie @whuber betonte, funktionieren statistische Methoden hier nicht genau. Sie müssen die Verteilung aus anderen Quellen ableiten. Wenn Sie die Verteilung kennen, haben Sie eine nichtlineare Gleichungslösungsübung. Mit f die Quantilfunktion Ihrer gewählten Wahrscheinlichkeitsverteilung mit dem Parametervektor . Was Sie haben, ist das folgende nichtlineare Gleichungssystem:θ

q0,05=f(0,05,θ)q0,5=f(0,5,θ)q0,95=f(0,95,θ)

wo sind deine Quantile. Sie müssen dieses System lösen, um zu findenqθ

(q0,05-f(0,05,θ))2+(q0,5-f(0,5,θ))2+(q0,95-f(0,95,θ))2

Hier habe ich die quadratische Funktion gewählt, aber Sie können wählen, was Sie wollen. Laut @whuber-Kommentaren können Sie Gewichte zuweisen, damit wichtigere Quantile genauer angepasst werden können.

Für vier und mehr Parameter ist das System unterbestimmt, so dass unendlich viele Lösungen existieren.

Hier ist ein Beispiel für einen R-Code, der diesen Ansatz veranschaulicht. Zu Demonstrationszwecken generiere ich die Quantile aus der Singh-Maddala-Verteilung von VGAM Paket. Diese Verteilung hat 3 Parameter und wird in der Einkommensverteilungsmodellierung verwendet.

 q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
 plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
 points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))

Alt-Text

Bilden Sie nun die Funktion, die das nichtlineare Gleichungssystem auswertet:

 fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])

Überprüfen Sie, ob die wahren Werte der Gleichung entsprechen:

 > fn(c(2,1,4),q)
   [1] 0 0 0

Zur Lösung des nichtlinearen Gleichungssystems verwende ich die Funktion nleqslvaus dem Paket nlqeslv .

 > sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
 > sol$x       
  [1] 2.000000 1.000000 4.000001

Wie wir sehen, erhalten wir die genaue Lösung. Versuchen wir nun, diese Quantile auf die logarithmische Normalverteilung abzustimmen. Dafür verwenden wir die optimFunktion.

 > ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
 > osol <- optim(c(1,1),ofn)
 > osol$par
   [1] -0.905049  0.586334

Zeichnen Sie nun das Ergebnis

  plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
  lines(x,dsinmad(x,2,1,4))
  points(p,dsinmad(p,2,1,4))

Alt-Text

Daran sehen wir sofort, dass die quadratische Funktion nicht so gut ist.

Hoffe das hilft.


1
Groß! Vielen Dank für all die Mühen, die wir unternommen haben, mpiktas. Ich bin nicht mit R vertraut, aber Ihr Code ist gut genug erklärt, dass ich immer noch leicht sagen kann, was Sie tun.
Mark Eichenlaub

Vielen Dank für dieses Beispiel. Ich denke da sind 2 Fehler drin ofn <- function(x,q) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2). Ich schlage vor, ofn <- function(x) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2],x[3]))^2)weil qkeine Eingabe für ofnund X[3]fehlt. Grüße

9

Probieren Sie das Paket rriskDistributions aus und verwenden Sie den Befehl , wenn Sie sich über die lognormal-Verteilungsfamilie sicher sind

get.lnorm.par(p=c(0.05,0.5,0.95),q=c(8.135,11.259,23.611))

das sollte dein problem lösen. Verwenden Sie fit.percstattdessen, wenn Sie sich nicht auf ein bekanntes PDF beschränken möchten.


Super einfache Lösung!
Luchonacho

6

Für eine logarithmische Norm ist das Verhältnis des 95. Perzentils zum Median das gleiche wie das Verhältnis des Medians zum 5. Perzentil. Das ist hier nicht einmal annähernd der Fall, daher wäre lognormal keine gute Lösung.

Sie haben genügend Informationen, um eine Verteilung mit drei Parametern anzupassen, und Sie benötigen eindeutig eine Versatzverteilung. Zur Vereinfachung der Analyse würde ich die verschobene log-logistische Verteilung als Quantilfunktion vorschlagen (dh die Umkehrung ihrer kumulativen Verteilungsfunktion) in einer relativ einfachen geschlossenen Form zu schreiben, sodass Sie in der Lage sein sollten, geschlossene Ausdrücke für zu erhalten Die drei Parameter in Bezug auf Ihre drei Quantile mit ein wenig Algebra (ich lasse das als Übung!). Diese Verteilung wird in der Hochwasserhäufigkeitsanalyse verwendet.

Dies gibt jedoch keinen Hinweis auf die Unsicherheit in den Schätzungen der anderen Quantile. Ich weiß nicht, ob Sie das brauchen, aber als Statistiker bin ich der Meinung, dass ich es bereitstellen sollte, daher bin ich mit dieser Antwort nicht wirklich zufrieden. Ich würde diese Methode oder wahrscheinlich auch keine andere verwenden, um (viel) außerhalb des Bereichs des 5. bis 95. Perzentils zu extrapolieren.


1
Danke für den Hinweis. Re: lognormal - Ich könnte das Verhältnis von Perzentilen zum Median berechnen, indem ich 7077 von allem subtrahiere und am Ende wieder hinzufüge. Wie schlimm wäre eine Idee?
Mark Eichenlaub

1
Guter Punkt, das würde eine 'verschobene Log-Normalverteilung' ergeben. Die log-normale und die log-logistische Form sind ziemlich ähnlich, abgesehen von den schwereren Schwänzen der letzteren, so dass Sie beide ausprobieren und die Ergebnisse vergleichen können.
am

Vergleichen Sie wie? Das verschobene Lognormal passt garantiert perfekt zu den Quantilen. Fast jede Drei-Parameter-Familie passt perfekt. Wie vergleicht man zwei perfekte Passformen?
whuber

@whuber Ich meinte, vergleichen Sie die resultierenden Vorhersagen für die Perzentile entsprechend anderen Werten
am

Mir fehlt etwas: Welche anderen Werte? Dem OP zufolge stehen nur drei Perzentile zur Verfügung, sonst nichts.
whuber

2

Aus den Daten können Sie nur schließen, dass die Verteilung unsymmetrisch ist. Sie können nicht einmal sagen, ob diese Quantile aus einer angepassten Distribution oder nur aus dem ecdf stammen.

Wenn sie von einer angepassten Verteilung stammen, können Sie alle erdenklichen Verteilungen ausprobieren und feststellen, ob sie übereinstimmen. Wenn nicht, gibt es bei weitem nicht genug Informationen. Sie könnten ein Polynom 2. Grades oder ein Spline 3. Grades für die Quantilfunktion interpolieren und diese verwenden oder eine Theorie zur Verteilungsfamilie und zur Übereinstimmung von Quantilen aufstellen, aber alle Schlussfolgerungen, die Sie mit diesen Methoden ziehen würden, wären zutiefst verdächtig.


1
Es ist unwahrscheinlich, dass Polynome und Splines gültige CDFs sind.
whuber

Gute Beobachtung. In diesem Fall funktioniert das übliche quadratische Polynom nicht, aber es stehen unendlich viele quadratische Splines zur Auswahl (denken Sie an Bézier), die nicht dasselbe Problem haben sollten (obwohl einige möglicherweise immer noch das Zuschneiden von Domänen erfordern). Ebenso sollte es möglich sein, einen geeigneten monotonen kubischen Spline zu finden. Ich kenne Spline-Algorithmen, die Monotonie garantieren, kann sie aber derzeit nicht finden. Daher muss ich die Sache unter "Wählen Sie etwas aus, das wie folgt funktioniert: cdf" belassen.
sesqu

Sie könnten sogar einen monotonen Spline (oder was auch immer) an die Logarithmen der Quantile anpassen und so etwas Sinnvolles im Bereich der Quantile erzielen. Dies ist jedoch keine Hilfe bei der Anpassung der Schwänze über die beiden extremen Quantile hinaus. Man sollte zögern, einen so wichtigen Aspekt der Anpassung den zufälligen Merkmalen des numerischen Anpassungsverfahrens überlassen zu lassen.
whuber

2

Die Verwendung von Quantilen zur Schätzung von Parametern von A-priori-Verteilungen wird in der Literatur zur Messung der menschlichen Reaktionszeit als "Quantil-Maximum-Wahrscheinlichkeits-Schätzung" (QMPE, obwohl ursprünglich fälschlicherweise "Quantil-Maximum-Wahrscheinlichkeits-Schätzung", QMLE) diskutiert, die ausführlich von Heathcote diskutiert wurde und Kollegen . Sie könnten eine Reihe verschiedener a priori-Verteilungen (ex-Gauß-Verteilungen, verschobene Lognormal-, Wald- und Weibull-Verteilungen) anpassen und dann die Summenlog-Wahrscheinlichkeiten der resultierenden besten Anpassungen für jede Verteilung vergleichen, um das Verteilungsaroma zu finden, das die beste Anpassung zu ergeben scheint.


2
Jede Drei-Parameter-Verteilung passt garantiert perfekt zu drei Quantilen . Daher ist es sinnvoll, diesen Ansatz zu verwenden, um nur einen oder zwei Parameter anzupassen. Es macht auch keinen Sinn, eine Ein-Parameter-Anpassung mit einer Zwei-Parameter-Anpassung (mit einer anderen Familie) allein aufgrund der Wahrscheinlichkeit zu vergleichen.
whuber

@whuber, re: "Jede Drei-Parameter-Verteilung passt garantiert perfekt zu drei Quantilen." Ich hatte das nicht bemerkt, so gut zu wissen! re: "Es macht auch keinen Sinn, eine Ein-Parameter-Anpassung mit einer Zwei-Parameter-Anpassung (mit einer anderen Familie) allein aufgrund der Wahrscheinlichkeit zu vergleichen." Ach ja, in der Tat; Ich habe nicht erwähnt, dass man eine Komplexitätskorrektur (AIC, BIC, ...) anwenden müsste, wenn man Anpassungen mit Verteilungsvarianten mit einer unterschiedlichen Anzahl von Parametern vergleicht. Vielen Dank für den Hinweis.
Mike Lawrence

Ich habe ein bisschen übertrieben, weil ich dachte, dass zwei der Parameter Maßstab und Ort sind und der dritte eine breite Palette von Formen umfasst. Die meisten Familien mit drei Parametern verfügen jedoch über eine ausreichende Flexibilität, um drei Perzentile zu berücksichtigen, sofern sie alle unterschiedlich sind.
whuber

1

Sie können Ihre Perzentilinformationen verwenden, um die Daten auf irgendeine Weise zu simulieren, und das R-Paket "logspline" verwenden, um die Verteilung nichtparametrisch zu schätzen. Unten ist meine Funktion, die eine Methode wie diese einsetzt.

calc.dist.from.median.and.range <- function(m, r) 
{
    ## PURPOSE: Return a Log-Logspline Distribution given (m, r).
    ##          It may be necessary to call this function multiple times in order to get a satisfying distribution (from the plot). 
    ## ----------------------------------------------------------------------
    ## ARGUMENT:
    ##   m: Median
    ##   r: Range (a vector of two numbers)
    ## ----------------------------------------------------------------------
    ## RETURN: A log-logspline distribution object.
    ## ----------------------------------------------------------------------
    ## AUTHOR: Feiming Chen,  Date: 10 Feb 2016, 10:35

    if (m < r[1] || m > r[2] || r[1] > r[2]) stop("Misspecified Median and Range")

    mu <- log10(m)
    log.r <- log10(r)

    ## Simulate data that will have median of "mu" and range of "log.r"
    ## Distribution on the Left/Right: Simulate a Normal Distribution centered at "mu" and truncate the part above/below the "mu".
    ## May keep sample size intentionaly small so as to introduce uncertainty about the distribution. 
    d1 <- rnorm(n=200, mean=mu, sd=(mu - log.r[1])/3) # Assums 3*SD informs the bound
    d2 <- d1[d1 < mu]                   # Simulated Data to the Left of "mu"
    d3 <- rnorm(n=200, mean=mu, sd=(log.r[2] - mu)/3)
    d4 <- d3[d3 > mu]                   # Simulated Data to the Right of "mu"
    d5 <- c(d2, d4)                     # Combined Simulated Data for the unknown distribution

    require(logspline)
    ans <- logspline(x=d5)
    plot(ans)
    return(ans)
}
if (F) {                                # Unit Test 
    calc.dist.from.median.and.range(m=1e10, r=c(3.6e5, 3.1e12))
    my.dist <- calc.dist.from.median.and.range(m=1e7, r=c(7e2, 3e11))
    dlogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Density
    plogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Probability
    10^qlogspline(c(0.05, 0.5, 0.95), my.dist) # Quantiles 
    10^rlogspline(10, my.dist) # Random Sample 
}
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.