Vous devez adapter ces données regroupées à un modèle de distribution, car c'est la seule façon d'extrapoler dans le quartile supérieur.
Un modèle
Par définition, un tel modèle est donné par une fonction cadlag passant de 0 à 1 . La probabilité qu'il attribue à n'importe quel intervalle ( a , b ] est F ( b ) - F ( a ) . Pour faire l'ajustement, vous devez poser une famille de fonctions possibles indexées par un paramètre (vectoriel) θ , { F θ } En supposant que l'échantillon résume un ensemble de personnes choisies au hasard et indépendamment d'une population décrite par un F θ spécifique (mais inconnu)F01( a , b ]F( b ) - F( A )θ{ Fθ}Fθ, la probabilité de l'échantillon (ou vraisemblance , ) est le produit des probabilités individuelles. Dans l'exemple, cela équivaudrait àL
L ( θ ) = ( Fθ( 8 ) - Fθ( 6 ) )51( Fθ( 10 ) - Fθ( 8 ) )65⋯ ( Fθ( ∞ ) - Fθ( 16 ) )182
parce que personnes ont des probabilités associées F θ ( 8 ) - F θ ( 6 ) , 65 ont des probabilités F θ ( 10 ) - F θ ( 8 ) , etc.51Fθ( 8 ) - Fθ( 6 )65Fθ( 10 ) - Fθ( 8 )
Adaptation du modèle aux données
L' estimation du maximum de vraisemblance de est une valeur qui maximise L (ou, de manière équivalente, le logarithme de L ).θLL
Les distributions de revenus sont souvent modélisées par des distributions lognormales (voir, par exemple, http://gdrs.sourceforge.net/docs/PoleStar_TechNote_4.pdf ). En écrivant , la famille des distributions lognormales estθ = ( μ , σ)
F( μ , σ)( x ) = 12 π--√∫( journal( x ) - μ ) / σ- ∞exp( - t2/ 2) dt .
Pour cette famille (et bien d'autres), il est simple d'optimiser numériquement. Par exemple, dans nous écririons une fonction pour calculer log ( L ( θ ) ) puis l'optimiser, car le maximum de log ( L ) coïncide avec le maximum de L lui-même et (généralement) log ( L ) est plus simple à calculer et numériquement plus stable pour travailler avec:LR
Journal( L ( θ ) )Journal( L )LJournal( L )
logL <- function(thresh, pop, mu, sigma) {
l <- function(x1, x2) ifelse(is.na(x2), 1, pnorm(log(x2), mean=mu, sd=sigma))
- pnorm(log(x1), mean=mu, sd=sigma)
logl <- function(n, x1, x2) n * log(l(x1, x2))
sum(mapply(logl, pop, thresh, c(thresh[-1], NA)))
}
thresh <- c(6,8,10,12,14,16)
pop <- c(51,65,68,82,78,182)
fit <- optim(c(0,1), function(theta) -logL(thresh, pop, theta[1], theta[2]))
La solution dans cet exemple est , trouvée dans la valeur .θ = ( μ , σ) = ( 2,620945 , 0,379682 )fit$par
Vérification des hypothèses du modèle
Nous devons au moins vérifier dans quelle mesure cela se conforme à la lognormalité supposée, nous écrivons donc une fonction pour calculer :F
predict <- function(a, b, mu, sigma, n) {
n * ( ifelse(is.na(b), 1, pnorm(log(b), mean=mu, sd=sigma))
- pnorm(log(a), mean=mu, sd=sigma) )
Elle est appliquée aux données pour obtenir les populations de casiers ajustés ou "prédits":
pred <- mapply(function(a,b) predict(a,b,fit$par[1], fit$par[2], sum(pop)),
thresh, c(thresh[-1], NA))
Nous pouvons dessiner des histogrammes des données et de la prédiction pour les comparer visuellement, montrés dans la première ligne de ces graphiques:
Pour les comparer, nous pouvons calculer une statistique chi carré. Ceci est généralement référé à une distribution chi carré pour évaluer la signification :
chisq <- sum((pred-pop)^2 / pred)
df <- length(pop) - 2
pchisq(chisq, df, lower.tail=FALSE)
0,00876 - 8630,40
Utilisation de l'ajustement pour estimer les quantiles
63(μ,σ)(2.620334,0.405454)F75th
exp(qnorm(.75, mean=fit$par[1], sd=fit$par[2]))
18.066317.76
Ces procédures et ce code peuvent être appliqués en général. La théorie du maximum de vraisemblance peut être davantage exploitée pour calculer un intervalle de confiance autour du troisième quartile, si cela est intéressant.