Estimation d'une distribution basée sur trois centiles

23

Quelles méthodes puis-je utiliser pour déduire une distribution si je ne connais que trois centiles?

Par exemple, je sais que dans un certain ensemble de données, le cinquième centile est 8 135, le 50e centile est 11 259 et le 95e centile est 23 611. Je veux pouvoir passer d'un autre nombre à son centile.

Ce ne sont pas mes données, et ce sont toutes les statistiques que j'ai. Il est clair que la distribution n'est pas normale. La seule autre information dont je dispose est que ces données représentent le financement public par habitant pour les différents districts scolaires.

J'en sais assez sur les statistiques pour savoir que ce problème n'a pas de solution définitive, mais pas assez pour savoir comment trouver de bonnes hypothèses.

Une distribution log-normale serait-elle appropriée? Quels outils puis-je utiliser pour effectuer la régression (ou dois-je le faire moi-même)?

Mark Eichenlaub
la source
j'ai ajouté la balise r pour que le code R soit mis en évidence dans mon commentaire
mpiktas
Pour un exemple détaillé de la même question (et de sa solution), consultez le fil en double sur stats.stackexchange.com/questions/133129 .
whuber

Réponses:

17

L'utilisation d'une méthode purement statistique pour effectuer ce travail ne fournira absolument aucune information supplémentaire sur la répartition des dépenses scolaires: le résultat reflétera simplement un choix arbitraire d'algorithme.

Vous avez besoin de plus de données .

C'est facile à trouver: utilisez les données des années précédentes, des districts comparables, peu importe. Par exemple, les dépenses fédérales pour 14866 districts scolaires en 2008 sont disponibles sur le site du recensement . Cela montre que dans tout le pays, les revenus fédéraux totaux par habitant (inscrits) ont été distribués approximativement lognormalement, mais leur ventilation par État montre une variation substantielle ( par exemple , les dépenses en billes en Alaska ont un biais négatif tandis que les dépenses en billes au Colorado ont une forte asymétrie positive) . Utilisez ces données pour caractériser la forme de distribution probable, puis ajustez vos quantiles à cette forme.

Si vous êtes même proche de la bonne forme de distribution, vous devriez pouvoir reproduire les quantiles avec précision en ajustant un ou au plus deux paramètres. La meilleure technique pour trouver l'ajustement dépendra de la forme de distribution que vous utilisez, mais - plus important encore - elle dépendra de ce que vous avez l'intention d'utiliser pour les résultats.. Avez-vous besoin d'estimer un montant moyen de dépenses? Limites supérieures et inférieures des dépenses? Quoi qu'il en soit, vous voulez adopter une certaine mesure de l'ajustement qui vous donnera les meilleures chances de prendre de bonnes décisions avec vos résultats. Par exemple, si votre intérêt se concentre sur les 10% supérieurs de toutes les dépenses, vous souhaiterez ajuster le 95e centile avec précision et vous vous soucierez peu de l'ajustement du 5e centile. Aucune technique d'ajustement sophistiquée ne fera ces considérations pour vous.

Bien sûr, personne ne peut légitimement garantir que cette méthode basée sur les données et orientée vers la décision fonctionnera mieux (ou pire) qu'une recette statistique, mais - contrairement à une approche purement statistique - cette méthode a une base fondée sur la réalité, en mettant l'accent sur vos besoins, en lui donnant une certaine crédibilité et une défense contre la critique.

whuber
la source
2
+1 Vous avez besoin de plus de données et de ce que vous comptez utiliser pour obtenir des résultats supplémentaires.
vqv
2
Il semble qu'il y ait beaucoup de sagesse dans votre réponse. Je vais devoir consulter davantage les gens qui m'ont posé le problème de ce qu'ils veulent. Merci pour les liens et les conseils.
Mark Eichenlaub
1
@Mark Bonne chance!
whuber
23

Comme l'a souligné @whuber, les méthodes statistiques ne fonctionnent pas exactement ici. Vous devez déduire la distribution à partir d'autres sources. Lorsque vous connaissez la distribution, vous avez un exercice de résolution d'équations non linéaire. Notons la fonction quantile de la distribution de probabilité choisie avec le vecteur de paramètre θFθ . Ce que vous avez est le système d'équations non linéaire suivant:

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

sont vos quantiles. Vous devez résoudre ce système pour trouver θqθ . Maintenant, pour pratiquement n'importe quelle distribution à 3 paramètres, vous trouverez des valeurs de paramètres satisfaisant cette équation. Pour les distributions à 2 paramètres et à 1 paramètre, ce système est surdéterminé, il n'y a donc pas de solutions exactes. Dans ce cas, vous pouvez rechercher un ensemble de paramètres qui minimise l'écart:

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

Ici, j'ai choisi la fonction quadratique, mais vous pouvez choisir ce que vous voulez. Selon les commentaires @whuber, vous pouvez attribuer des poids, de sorte que des quantiles plus importants puissent être ajustés avec plus de précision.

Pour quatre paramètres et plus, le système est sous-déterminé, il existe donc un nombre infini de solutions.

Voici un exemple de code R illustrant cette approche. À des fins de démonstration, je génère les quantiles à partir de la distribution Singh-Maddala à partir du package VGAM . Cette distribution a 3 paramètres et est utilisée dans la modélisation de la distribution des revenus.

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

texte alternatif

Formez maintenant la fonction qui évalue le système non linéaire d'équations:

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

Vérifiez si les vraies valeurs satisfont à l'équation:

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

Pour résoudre le système d'équation non linéaire, j'utilise la fonction nleqslvdu package nlqeslv .

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

Comme nous le voyons, nous obtenons la solution exacte. Essayons maintenant d'adapter la distribution log-normale à ces quantiles. Pour cela, nous utiliserons la optimfonction.

 > 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

Tracer maintenant le résultat

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

texte alternatif

De cela, nous voyons immédiatement que la fonction quadratique n'est pas si bonne.

J'espère que cela t'aides.

mpiktas
la source
1
Génial! Merci pour tous les efforts qui ont été consacrés à cela, mpiktas. Je ne connais pas R, mais votre code est suffisamment bien expliqué pour que je puisse toujours dire facilement ce que vous faites.
Mark Eichenlaub
Merci beaucoup pour cet exemple. Je pense qu'il y a 2 erreurs ofn <- function(x,q) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2). Je propose ofn <- function(x) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2],x[3]))^2)car qn'est pas une entrée pour ofn, et X[3]est manquant. Cordialement
9

Essayez le package rriskDistributions et - si vous êtes sûr de la famille de distribution lognormal - utilisez la commande

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

ce qui devrait résoudre votre problème. Utilisez-le à la fit.percplace si vous ne souhaitez pas vous limiter à un seul fichier PDF connu.

Matthias Greiner
la source
Solution super simple!
luchonacho
6

Pour une lognormale, le rapport du 95e centile à la médiane est le même que le rapport de la médiane au 5e centile. Ce n'est même pas presque vrai ici, donc lognormal ne serait pas un bon choix.

Vous avez suffisamment d'informations pour adapter une distribution à trois paramètres et vous avez clairement besoin d'une distribution asymétrique. Pour plus de simplicité analytique, je suggérerais la distribution log-logistique décalée comme sa fonction quantile (c'est-à-dire l'inverse de sa fonction de distribution cumulative) puisse être écrite sous une forme fermée raisonnablement simple, vous devriez donc être en mesure d'obtenir des expressions de forme fermée pour ses trois paramètres en termes de vos trois quantiles avec un peu d'algèbre (je vais laisser cela comme un exercice!). Cette distribution est utilisée dans l'analyse de la fréquence des crues.

Cela ne vous donnera cependant aucune indication sur l'incertitude dans les estimations des autres quantiles. Je ne sais pas si vous en avez besoin, mais en tant que statisticien, je pense que je devrais être en mesure de le fournir, donc je ne suis pas vraiment satisfait de cette réponse. Je n'utiliserais certainement pas cette méthode, ou probablement n'importe quelle méthode, pour extrapoler (beaucoup) en dehors de la plage des 5e au 95e centiles.

un arrêt
la source
1
Merci pour le conseil. Re: lognormal - Je pourrais faire le rapport entre les centiles et la médiane en soustrayant 7077 de tout, puis en l'ajoutant à la fin. Quelle mauvaise idée serait-ce?
Mark Eichenlaub
1
Bon point, cela donnerait une «distribution log-normale décalée». La log-normale et la log-logistique ont une forme assez similaire, à l'exception des queues plus lourdes de cette dernière, vous pouvez donc essayer les deux et comparer les résultats.
2011
Comparez comment? Le lognormal décalé est garanti pour s'adapter parfaitement aux quantiles. Presque toutes les familles à trois paramètres s'adapteront parfaitement. Comment comparez-vous deux ajustements parfaits?
whuber
@whuber Je voulais comparer les prédictions qui en résultent pour les centiles correspondant à d' autres valeurs
onestop
Il me manque quelque chose: quelles autres valeurs? L'OP indique que seuls trois centiles sont disponibles, rien d'autre.
whuber
2

La seule chose que vous pouvez déduire des données est que la distribution n'est pas symétrique. Vous ne pouvez même pas dire si ces quantiles provenaient d'une distribution ajustée ou simplement de l'ecdf.

S'ils provenaient d'une distribution ajustée, vous pouvez essayer toutes les distributions auxquelles vous pouvez penser et voir s'il y a une correspondance. Sinon, il n'y a pas assez d'informations. Vous pouvez interpoler un polynôme du 2e degré ou une spline du 3e degré pour la fonction quantile et l'utiliser, ou proposer une théorie sur la famille de distribution et faire correspondre les quantiles, mais toute inférence que vous feriez avec ces méthodes serait profondément suspecte.

sesqu
la source
1
Les polynômes et les splines ne sont probablement pas des CDF valides.
whuber
Bonne observation. Dans ce cas, le polynôme quadratique habituel ne fonctionne pas, mais il existe une infinité de splines quadratiques parmi lesquelles choisir (pensez Bézier) qui ne devraient pas avoir le même problème (bien que certains puissent nécessiter un recadrage de domaine). De même, il devrait être possible de trouver une spline cubique monotone appropriée. Je connais les algorithmes splines qui garantissent la monotonie, mais je ne suis pas en mesure d'en trouver un pour le moment, je dois donc laisser la question à "choisir quelque chose que vous aimez qui fonctionne comme cdf".
sesqu
Vous pourriez aller jusqu'à adapter une spline monotone (ou autre) aux logarithmes des quantiles, obtenant ainsi quelque chose de raisonnable dans la plage des quantiles. Mais cela ne nous aide pas à ajuster la queue au-delà des deux quantiles extrêmes. Il faut être réticent à laisser un aspect aussi important de l'ajustement être laissé aux caractéristiques accidentelles de la procédure d'ajustement numérique.
whuber
2

L'utilisation de quantiles pour estimer les paramètres de distributions a priori est discutée dans la littérature sur la mesure du temps de réponse humain comme «estimation de probabilité maximale quantile» (QMPE, bien qu'originellement appelée à tort «estimation de vraisemblance maximale quantile», QMLE), longuement discutée par Heathcote et collègues . Vous pouvez ajuster un certain nombre de distributions a priori différentes (ex-gaussiennes, lognormales décalées, Wald et Weibull), puis comparer les probabilités de somme des log des meilleurs ajustements résultants pour chaque distribution pour trouver la saveur de distribution qui semble donner le meilleur ajustement.

Mike Lawrence
la source
2
Toute distribution à trois paramètres est garantie pour s'adapter parfaitement à trois quantiles . Il est donc judicieux d'utiliser cette approche pour n'adapter qu'un ou deux paramètres. Il est également insensé de comparer un ajustement à un paramètre à un ajustement à deux paramètres (avec une famille différente) sur la seule base de la probabilité.
whuber
@whuber, re: "Toute distribution à trois paramètres est garantie pour s'adapter parfaitement à trois quantiles". Je n'avais pas réalisé ça, tellement bon à savoir! re: "Il n'a pas non plus de sens de comparer un ajustement à un paramètre à un ajustement à deux paramètres (avec une famille différente) basé sur la seule probabilité." Ah oui, en effet; J'ai omis de mentionner qu'il faudrait appliquer une correction de complexité (AIC, BIC, ...) si l'on compare les ajustements aux saveurs de distribution avec différents nombres de paramètres. Merci d'avoir fait remarquer cela.
Mike Lawrence
J'ai exagéré un peu, car je pensais à deux des paramètres étant l'échelle et l'emplacement et le troisième comprenant un large éventail de formes. Même ainsi, la plupart des familles à trois paramètres ont une flexibilité suffisante pour s'adapter à trois centiles à condition qu'elles soient toutes distinctes.
whuber
1

Vous pouvez utiliser vos informations de centile pour simuler les données d'une certaine manière et utiliser le package R "logspline" pour estimer la distribution de manière non paramétrique. Ci-dessous est ma fonction qui utilise une méthode comme celle-ci.

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 
}
Feiming Chen
la source