Você precisa ajustar esses dados em bin com algum modelo de distribuição, pois essa é a única maneira de extrapolar para o quartil superior.
Uma modelo
Por definição, esse modelo é dado por uma função cadlag subindo de 0 a 1 . A probabilidade que ele atribui a qualquer intervalo ( a , b ] é F ( b ) - F ( a ) .Para fazer o ajuste, é necessário postar uma família de funções possíveis indexadas por um parâmetro (vetor) θ , { F θ } Supondo que a amostra resuma uma coleção de pessoas escolhidas aleatoriamente e independentemente de uma população descrita por algum F θ específico (mas desconhecido)F01(a,b]F(b)−F(a)θ{Fθ}Fθ, a probabilidade da amostra (ou probabilidade , ) é o produto das probabilidades individuais. No exemplo, seria igualL
L(θ)=(Fθ(8)−Fθ(6))51(Fθ(10)−Fθ(8))65⋯(Fθ(∞)−Fθ(16))182
porque das pessoas têm probabilidades associadas F θ ( 8 ) - F θ ( 6 ) , 65 têm probabilidades F θ ( 10 ) - F θ ( 8 ) e assim por diante.51Fθ(8)−Fθ(6)65Fθ(10)−Fθ(8)
Ajustando o Modelo aos Dados
A estimativa de máxima verossimilhança de é um valor que maximiza L (ou, equivalentemente, o logaritmo de L ).θLL
As distribuições de renda geralmente são modeladas por distribuições normais (veja, por exemplo, http://gdrs.sourceforge.net/docs/PoleStar_TechNote_4.pdf ). Escrevendo , a família de distribuições lognormal éθ=(μ,σ)
F(μ,σ)(x)=12π−−√∫(log(x)−μ)/σ−∞exp(−t2/2)dt.
Para esta família (e muitas outras), é fácil otimizar numericamente. Por exemplo, escreveríamos uma função para calcular log ( L ( θ ) ) e, em seguida, otimizá-la, porque o máximo de log ( L ) coincide com o máximo de L em si e (geralmente) log ( L ) é mais simples de calcular e numericamente mais estável para trabalhar:LR
log(L(θ))log(L)Llog(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]))
A solução neste exemplo é , encontrada no valorθ=(μ,σ)=(2.620945,0.379682)fit$par
.
Verificando suposições do modelo
Precisamos pelo menos verificar se isso está de acordo com a normalidade de log assumida; portanto, escrevemos uma função para calcular :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) )
É aplicado aos dados para obter as populações de posições ajustadas ou "previstas":
pred <- mapply(function(a,b) predict(a,b,fit$par[1], fit$par[2], sum(pop)),
thresh, c(thresh[-1], NA))
Podemos desenhar histogramas dos dados e a previsão para compará-los visualmente, mostrados na primeira linha desses gráficos:
Para compará-los, podemos calcular uma estatística qui-quadrado. Isso geralmente é referido a uma distribuição qui-quadrado para avaliar a significância :
chisq <- sum((pred-pop)^2 / pred)
df <- length(pop) - 2
pchisq(chisq, df, lower.tail=FALSE)
0.00876−8630.40
Usando o ajuste para estimar quantis
63(μ,σ)(2.620334,0.405454)F75th
exp(qnorm(.75, mean=fit$par[1], sd=fit$par[2]))
18.066317.76
Esses procedimentos e esse código podem ser aplicados em geral. A teoria da probabilidade máxima pode ser explorada ainda mais para calcular um intervalo de confiança em torno do terceiro quartil, se isso for interessante.