É possível acumular um conjunto de estatísticas que descreva um grande número de amostras para que eu possa produzir um boxplot?


22

Devo esclarecer imediatamente que sou um desenvolvedor de software que pratica, não um estatístico e que minha aula de estatística da faculdade foi há muito tempo ...

Dito isso, eu gostaria de saber se existe um método para acumular um conjunto de estatísticas descritivas que possam ser usadas para produzir um boxplot, que não implica armazenar um monte de amostras individuais?

O que estou tentando fazer é produzir um resumo gráfico dos tempos de serviço da fila em um processo complexo de múltiplas filas. No passado, usei um pacote chamado tnftools que permitia que grandes amostras fossem acumuladas e depois processadas em um bom gráfico de tempos de resposta e outliers ... Mas o tnftools não está disponível para minha plataforma atual.

Idealmente, eu gostaria de poder acumular um conjunto de estatísticas descritivas "on the fly" enquanto o processo é executado e depois extrair os dados para análise sob demanda. Mas não posso simplesmente fazer com que o processo acumule amostras, pois a memória / IO envolvida nesse processo teria um impacto inaceitável no desempenho do sistema.


Kaelin:> você quer dizer se existe o método "on the fly" para calcular estatísticas resumidas, como mediana e quartis? Se é isso que você deseja, posso fornecer links para documentos detalhando-os. Você também pode fornecer mais detalhes sobre as plataformas nas quais você está trabalhando, pois a implementação eficiente do GNU desses métodos provavelmente existe em R.
user603

@kwak: Sim, parece o que estou procurando. Eu apreciaria muito esses links. :-) Estou trabalhando no Mac OS X… posso usar o R ​​para pós-processamento de dados, mas não consigo vincular o código GPL ao produto da minha empresa pelos motivos usuais.
Kaelin Colclasure

Respostas:


27

Para boxplot 'on the fly', você precisará de min / max 'on the fly' (trivial) e quartis 'on the fly' (0,25,0,5 = mediana e 0,75).

Muito trabalho foi realizado recentemente no problema do algoritmo on-line (ou "on the fly") para computação mediana.

Um desenvolvimento recente é binmediano . Como chute lateral, ele também desfruta de uma complexidade de pior caso melhor do que a seleção rápida (que não é on-line nem passe único).

Você pode encontrar o documento associado, bem como os códigos C e FORTRAN on-line aqui . Pode ser necessário verificar os detalhes da licença com os autores.

Você também precisará de um algoritmo de passagem única para os quartis, para o qual você pode usar a abordagem acima e a seguinte caracterização recursiva dos quartis em termos de medianas:

Q0,75(x)Q0,5(xEu:xEu>Q0,5(x))

e

Q0,25(x)Q0,5(xEu:xEu<Q0,5(x))

isto é, o quartil de 25 (75) por cento está muito próximo da mediana das observações que são menores (maiores) que a mediana.

Termo aditivo:

Existem vários métodos antigos de múltiplas passagens para calcular quantis. Uma abordagem popular é manter / atualizar um reservatório de tamanho determinístico de observações selecionadas aleatoriamente a partir do fluxo e calcular quantis recursivamente (veja esta revisão) neste reservatório. Essa abordagem (e relacionada) é substituída pela proposta acima.


1
+1 à direita; Eu ainda estava na idade das trevas fazendo aproximações a partir do histograma.

Entendo corretamente que essa definição recursiva de quartis a partir de medianas requer duas passagens se implementada ingenuamente? Você conhece os algoritmos de passagem única?
Quartzo

@Quartz: não, uma única passagem serve: você tem duas, uma única passagem, executando cálculos medianos.
user603

2

Em vez de apenas encontrar a mediana, existe um algoritmo que mantém diretamente um histograma estimado: " o algoritmo do quadrado P para cálculo dinâmico de modais e histogramas sem armazenar observações". Provavelmente será muito mais eficiente que a repetição de bin para cada quantil desejado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.