Como estimar o terceiro quartil de dados em bin?

12

Existe algum truque técnico para determinar o terceiro quartil se ele pertence a um intervalo aberto que contém mais de um quarto da população (então não posso fechar o intervalo e usar a fórmula padrão)?

Editar

Caso eu entenda mal algo, fornecerei um contexto mais ou menos completo. Eu tenho dados organizados em uma tabela com duas colunas e, digamos, 6 linhas. Com cada coluna corresponde um intervalo (na primeira coluna) e uma quantidade de população que "pertence" a esse intervalo. O último intervalo está aberto e inclui mais de 25% da população. Todos os intervalos (com exceção do último) têm o mesmo intervalo.

Dados de amostra (transpostos para apresentação):

Column 1: (6;8),(8;10),(10;12),(12;14),(14;16),(16;∞)
Column 2:    51,    65,     68,     82,     78,   182 

A primeira coluna deve ser interpretada como uma faixa de nível de renda. O segundo deve ser interpretado como o número de funcionários cuja renda pertence ao intervalo.

A fórmula padrão em que estou pensando é .Q3=xQ3+3N4i=1k1ninQ3rQ3

um pouco
fonte
Uma suposição comum ao tentar estimar quantis com dados em bin é assumir uniformidade dentro de compartimentos. Mas quando você sabe algo sobre a maneira como os dados provavelmente serão distribuídos (como nas rendas, que são a inclinação correta), pressupostos que refletem que o conhecimento tenderão a ser melhores. Outra alternativa seria assumir que os dados são suaves e suavizar os dados (seja pelo KDE ou por alguma distribuição ajustada), redistribuir pontos nos compartimentos de acordo com o modelo [e possivelmente re-estimar (de maneira semelhante ao EM) o ajuste, e redistribuir novamente nos compartimentos] e depois estimar quantis a partir disso.
Glen_b -Reinstala Monica

Respostas:

16

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:LRlog(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:

Histogramas

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.008768630.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.

whuber
fonte
Uau, obrigada! Devo admitir que não esperava que uma maquinaria tão avançada (pelo menos para mim) fosse usada para encontrar solução.
Atad
O mecanismo não precisa ser avançado ou sofisticado, mas o que você deve seguir as mesmas linhas gerais deste exemplo: assuma algo sobre a distribuição de renda, use-o para se ajustar a um modelo matemático, verifique o modelo quanto à razoabilidade e, se for um ajuste razoável, use-o para calcular o quartil. Ao longo do caminho, use métodos gráficos, pois eles podem revelar padrões interessantes. (Aqui, o interesse é que exista um aparente afastamento da normalidade do log na faixa de baixa renda: eu me perguntaria por que isso ocorre e o que isso pode dizer sobre essa população.)
whuber
+1, ótima resposta. Parece que vou ter que aprender R ainda.
DAV
8

Tempo demais para um comentário:

a resposta de whubers é tão boa quanto qualquer outra, mas ele assume a inclinação correta em seu modelo log-normal. Isso pode ser realista para a renda da população em geral, mas pode não ser para a renda de um único empregador em um determinado nível.

68645017.5 .

8017.3 .

17

Henry
fonte
1
(+1) Obrigado por enfatizar (e analisar) a dependência da resposta nas suposições do modelo. Se (no exemplo) você não pode assumir nada, tudo o que você pode dizer é que o terceiro quartil excede16. Se você assume um modelo, pelo menos pode dizer ao consumidor de seu conselho: "se sua imagem da distribuição de renda é pelo menos aproximadamente o que eu assumi, então você pode usar meu resultado como uma estimativa razoável da terceira quantil ". (A maioria das conclusões estatísticas são implicitamente condicionais deste tipo.)
whuber