Stima di una distribuzione basata su tre percentili


23

Quali metodi posso usare per inferire una distribuzione se conosco solo tre percentili?

Ad esempio, so che in un determinato set di dati, il quinto percentile è 8.135, il 50 ° percentile è 11.259 e il 95 ° percentile è 23.611. Voglio essere in grado di passare da qualsiasi altro numero al suo percentile.

Non sono i miei dati e quelle sono tutte le statistiche che ho. È chiaro che la distribuzione non è normale. L'unica altra informazione che ho è che questi dati rappresentano finanziamenti statali pro capite per diversi distretti scolastici.

Conosco abbastanza le statistiche per sapere che questo problema non ha una soluzione definitiva, ma non abbastanza per sapere come fare per trovare buone ipotesi.

Una distribuzione lognormale sarebbe appropriata? Quali strumenti posso usare per eseguire la regressione (o devo farlo da solo)?


ho aggiunto il tag r in modo che il codice R sia evidenziato nel mio commento
mpiktas

Per un esempio dettagliato della stessa domanda (e della sua soluzione), consultare il thread duplicato su stats.stackexchange.com/questions/133129 .
whuber

Risposte:


17

L'uso di un metodo puramente statistico per fare questo lavoro non fornirà assolutamente alcuna informazione aggiuntiva sulla distribuzione della spesa scolastica: il risultato rifletterà semplicemente una scelta arbitraria di algoritmo.

Hai bisogno di più dati .

Questo è facile da ottenere: utilizzare i dati degli anni precedenti, di distretti comparabili, qualunque cosa. Ad esempio, la spesa federale per 14866 distretti scolastici nel 2008 è disponibile sul sito del censimento . Mostra che in tutto il paese, le entrate federali pro capite totali (iscritte) sono state distribuite in modo approssimativamente lognormale, ma la loro suddivisione per stato mostra una variazione sostanziale ( ad esempio , la spesa per tronchi in Alaska ha un'inclinazione negativa mentre la spesa per tronchi in Colorado ha una forte inclinazione positiva) . Usa quei dati per caratterizzare la probabile forma di distribuzione e poi adatta i tuoi quantili a quella forma.

Se sei anche vicino alla giusta forma distributiva, allora dovresti essere in grado di riprodurre accuratamente i quantili adattando uno o al massimo due parametri. La migliore tecnica per trovare l'adattamento dipenderà dalla forma distributiva che usi, ma - cosa molto più importante - dipenderà da ciò per cui intendi utilizzare i risultati. Devi stimare un importo di spesa medio? Limiti massimo e minimo di spesa? Qualunque cosa sia, vuoi adottare qualche misura di bontà di adattamento che ti darà le migliori possibilità di prendere buone decisioni con i tuoi risultati. Ad esempio, se il tuo interesse è concentrato nel 10% superiore di tutte le spese, ti consigliamo di adattare il 95 ° percentile in modo accurato e potresti non preoccuparti di adattarlo al 5 ° percentile. Nessuna sofisticata tecnica di adattamento farà queste considerazioni per te.

Naturalmente nessuno può legittimamente garantire che questo metodo orientato ai dati e orientato alle decisioni avrà prestazioni migliori (o peggiori) di alcune ricette statistiche, ma - a differenza di un approccio puramente statistico - questo metodo ha una base fondata sulla realtà, con un focus sui tuoi bisogni, dandogli un po 'di credibilità e difesa contro le critiche.


2
+1 Hai bisogno di più dati e di cosa intendi utilizzare i risultati per meritare ulteriore enfasi.
vqv,

2
Sembra che ci sia molta saggezza nella tua risposta. Dovrò consultare di più con le persone che mi hanno posto il problema su ciò che vogliono. Grazie per i collegamenti e i consigli.
Mark Eichenlaub,

1
@Mark Buona fortuna!
whuber

23

Come sottolineato da @whuber, i metodi statistici non funzionano esattamente qui. È necessario dedurre la distribuzione da altre fonti. Quando conosci la distribuzione hai un esercizio di risoluzione delle equazioni non lineare. Indica con la funzione quantile della distribuzione di probabilità prescelta con il vettore dei parametri θfθ . Quello che hai è il seguente sistema di equazioni non lineari:

q0.05=f(0.05,θ)q0.5=f(0.5,θ)q0.95=f(0.95,θ)

dove sono i tuoi quantili. Devi trovare questo sistema per trovare θqθ . Ora praticamente per qualsiasi distribuzione a 3 parametri troverai valori di parametri che soddisfano questa equazione. Per le distribuzioni a 2 parametri e 1 parametro questo sistema è sovradeterminato, quindi non esistono soluzioni esatte. In questo caso puoi cercare un set di parametri che minimizzi la discrepanza:

(q0.05f(0.05,θ))2+(q0.5f(0.5,θ))2+(q0.95f(0.95,θ))2

Qui ho scelto la funzione quadratica, ma puoi scegliere quello che vuoi. Secondo i commenti di @whuber è possibile assegnare pesi, in modo che i quantili più importanti possano essere adattati in modo più accurato.

Per quattro e più parametri il sistema è sottodeterminato, quindi esiste un numero infinito di soluzioni.

Ecco un esempio di codice R che illustra questo approccio. Ai fini della dimostrazione genero i quantili della distribuzione di Singh-Maddala da VGAM pacchetto. Questa distribuzione ha 3 parametri e viene utilizzata nella modellazione della distribuzione del reddito.

 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))

testo alternativo

Ora forma la funzione che valuta il sistema non lineare di equazioni:

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

Verifica se i valori veri soddisfano l'equazione:

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

Per risolvere il sistema di equazioni non lineari uso la funzione nleqslvdal pacchetto nlqeslv .

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

Come vediamo, otteniamo la soluzione esatta. Ora proviamo ad adattare la distribuzione log-normale a questi quantili. Per questo useremo la optimfunzione.

 > 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

Ora traccia il risultato

  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))

testo alternativo

Da ciò vediamo immediatamente che la funzione quadratica non è così buona.

Spero che sia di aiuto.


1
Grande! Grazie per tutto l'impegno profuso in questo, mpiktas. Non ho familiarità con R, ma il tuo codice è spiegato abbastanza bene che posso ancora facilmente dire cosa stai facendo.
Mark Eichenlaub,

Grazie mille per questo esempio. Penso che ci siano 2 errori in ofn <- function(x,q) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2). Propongo ofn <- function(x) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2],x[3]))^2)perché qnon è un input per ofn, e X[3]manca. Saluti

9

Prova il pacchetto rriskDistributions e, se sei sicuro della famiglia di distribuzione lognormale, usa il comando

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

che dovrebbe risolvere il tuo problema. Utilizzare fit.percinvece se non si desidera limitare a un pdf noto.


Soluzione super semplice!
luchonacho,

6

Per un lognormale il rapporto tra il 95o percentile e la mediana è lo stesso del rapporto tra la mediana e il 5o percentile. Questo non è nemmeno quasi vero qui, quindi lognormal non sarebbe una buona scelta.

Hai informazioni sufficienti per adattare una distribuzione con tre parametri e hai chiaramente bisogno di una distribuzione distorta. Per semplicità analitica, suggerirei la distribuzione log-logistica spostata come sua funzione quantile (cioè l'inverso della sua funzione di distribuzione cumulativa) può essere scritta in una forma chiusa ragionevolmente semplice, quindi dovresti essere in grado di ottenere espressioni in forma chiusa per i suoi tre parametri in termini di tre quantili con un po 'di algebra (lo lascerò come esercizio!). Questa distribuzione viene utilizzata nell'analisi della frequenza di alluvione.

Questo non ti darà alcuna indicazione dell'incertezza nelle stime degli altri quantili. Non so se ne hai bisogno, ma come statistico sento che dovrei essere in grado di fornirlo, quindi non sono davvero soddisfatto di questa risposta. Certamente non userei questo metodo, o probabilmente nessun metodo, per estrapolare (molto) al di fuori dell'intervallo dal 5 ° al 95 ° percentile.


1
Grazie per il consiglio. Ri: lognormale - Potrei fare in modo che i rapporti tra percentili e mediana si sottraggano sottraendo 7077 da tutto, quindi aggiungendolo alla fine. Quanto sarebbe brutta un'idea?
Mark Eichenlaub,

1
Un buon punto, ciò darebbe una "distribuzione log-normale spostata". Il log-normale e il log-logistico sono piuttosto simili nella forma a parte le code più pesanti di quest'ultimo, quindi puoi provare entrambi e confrontare i risultati.
onestop,

Confronta come? Il lognormale spostato è garantito per adattarsi perfettamente ai quantili. Quasi ogni famiglia di tre parametri si adatterà perfettamente. Come si confrontano due accoppiamenti perfetti?
whuber

@whuber Intendevo confrontare le previsioni risultanti per i percentili corrispondenti ad altri valori
onestop

Mi manca qualcosa: quali altri valori? L'OP afferma che sono disponibili solo tre percentili, nient'altro.
whuber

2

Le uniche cose che puoi dedurre dai dati è che la distribuzione non è simmetrica. Non puoi nemmeno dire se quei quantili provenivano da una distribuzione adattata o solo dall'ecdf.

Se provenivano da una distribuzione adattata, puoi provare tutte le distribuzioni a cui riesci a pensare e vedere se ci sono corrispondenze. In caso contrario, non ci sono abbastanza informazioni. Potresti interpolare un polinomio di 2 ° grado o una spline di 3 ° grado per la funzione quantile e usarlo, o elaborare una teoria sulla famiglia di distribuzione e abbinare i quantili, ma qualsiasi inferenza che faresti con questi metodi sarebbe profondamente sospetta.


1
È improbabile che i polinomi e le spline siano CDF validi.
whuber

Buona osservazione. In questo caso, il solito polinomio quadratico non funziona, ma ci sono infinite spline quadratiche tra cui scegliere (pensa Bézier) che non dovrebbero avere lo stesso problema (anche se alcuni potrebbero ancora richiedere il ritaglio del dominio). Allo stesso modo, dovrebbe essere possibile trovare una spline cubica monotonica adatta. Sono a conoscenza di algoritmi di spline che garantiscono la monotonicità, ma non riesco a trovarne uno proprio ora, quindi devo lasciare la questione a "scegli qualcosa che ti piace che funzioni come cdf".
sabato

Potresti arrivare al punto di adattare una spline monotonica (o qualsiasi altra cosa) ai logaritmi dei quantili, ottenendo in tal modo qualcosa di ragionevole all'interno della gamma dei quantili. Ma questo non fornisce alcun aiuto per adattare le code oltre i due quantili estremi. Bisognerebbe essere riluttanti a lasciare un aspetto così importante dell'adattamento alle caratteristiche accidentali della procedura di adattamento numerico.
whuber

2

L'uso dei quantili per stimare i parametri delle distribuzioni a priori è discusso in letteratura sulla misurazione del tempo di risposta umana come "stima della probabilità massima quantile" (QMPE, sebbene originariamente erroneamente soprannominata "stima della probabilità massima quantile", QMLE), discussa a lungo da Heathcote e colleghi . È possibile adattare un numero di diverse distribuzioni a priori (ex gaussiano, Lognormal spostato, Wald e Weibull), quindi confrontare le probabilità logaritmiche delle migliori corrispondenze risultanti per ciascuna distribuzione per trovare il sapore di distribuzione che sembra produrre la migliore corrispondenza.


2
Qualsiasi distribuzione a tre parametri è garantita per adattarsi perfettamente a tre quantili . Quindi ha senso usare questo approccio per adattarsi solo a uno o due parametri. Inoltre, non ha senso confrontare un adattamento a un parametro con un adattamento a due parametri (con una famiglia diversa) basato sulla sola probabilità.
whuber

@whuber, re: "Qualsiasi distribuzione a tre parametri è garantita per adattarsi perfettamente a tre quantili". Non me ne ero reso conto, così bello saperlo! re: "Inoltre non ha senso confrontare un adattamento a un parametro con un adattamento a due parametri (con una famiglia diversa) basato sulla sola probabilità." Ah sì, davvero; Non ho menzionato il fatto che si dovrebbe applicare una correzione della complessità (AIC, BIC, ...) se si confrontano adattamenti con aromi di distribuzione con un numero diverso di parametri. Grazie per la segnalazione.
Mike Lawrence,

Ho esagerato un po ', perché pensavo che due dei parametri fossero scala e posizione e il terzo comprendesse una vasta gamma di forme. Anche così, la maggior parte delle famiglie a tre parametri ha una flessibilità sufficiente per adattarsi a tre percentili purché siano tutte distinte.
whuber

1

È possibile utilizzare le informazioni sui percentili per simulare i dati in qualche modo e utilizzare il pacchetto R "logspline" per stimare la distribuzione in modo non parametrico. Di seguito è la mia funzione che utilizza un metodo come questo.

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 
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.