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.05q0.5q0.95=f(0.05,θ)=f(0.5,θ)=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.05−f(0.05,θ))2+(q0.5−f(0.5,θ))2+(q0.95−f(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))
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 nleqslv
dal 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 optim
funzione.
> 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))
Da ciò vediamo immediatamente che la funzione quadratica non è così buona.
Spero che sia di aiuto.