Estou trabalhando em estatísticas para compilações de software. Eu tenho dados para cada build em aprovação / reprovação e tempo decorrido e geramos ~ 200 deles / semana.
A taxa de sucesso é fácil de agregar, posso dizer que 45% passaram em uma determinada semana. Mas também gostaria de agregar tempo decorrido e quero garantir que não deturpemos muito os dados. Achei melhor perguntar aos profissionais :-)
Digamos que eu tenho 10 durações. Eles representam casos de aprovação e reprovação. Algumas construções falham imediatamente, o que torna a duração extraordinariamente curta. Alguns ficam paralisados durante o teste e eventualmente atingem o tempo limite, causando durações muito longas. Construímos produtos diferentes, portanto, mesmo compilações bem-sucedidas variam entre 90 segundos e 4 horas.
Eu posso obter um conjunto como este:
[50, 7812, 3014, 13400, 21011, 155, 60, 8993, 8378, 9100]
Minha primeira abordagem foi obter o tempo médio, classificando o conjunto e escolhendo o valor médio, neste caso 7812 (eu não me incomodei com a média aritmética dos conjuntos pares).
Infelizmente, isso parece gerar muita variação, pois apenas escolho um determinado valor. Portanto, se eu tivesse tendência para esse valor, ele retornaria entre 5000-10000 segundos, dependendo de qual build estava na mediana.
Então, para suavizar isso, tentei outra abordagem - remova valores discrepantes e calcule uma média sobre os valores restantes. Decidi dividi-lo em tercis e trabalhar apenas no meio:
[50, 60, 155, 3014, 7812, 8378, 8993, 9100, 13400, 21011] ->
[50, 60, 155], [3014, 7812, 8378, 8993], [9100, 13400, 21011] ->
[3014, 7812, 8378, 8993]
A razão pela qual isso me parece melhor é duplo:
- Não queremos nenhuma ação nas versões mais rápidas, elas já estão boas
- As compilações mais longas provavelmente são induzidas pelo tempo limite e sempre estarão lá. Temos outros mecanismos para detectar aqueles
Parece-me que esses são os dados que estou procurando, mas estou preocupado que tenha conseguido suavidade removendo, bem, a verdade.
Isso é controverso? O método é sadio?
Obrigado!
Respostas:
Sua abordagem faz sentido para mim, levando em consideração seu objetivo. É simples, é direto, faz o trabalho e você provavelmente não quer escrever um artigo científico sobre isso.
Uma coisa que sempre devemos fazer ao lidar com discrepantes é entendê- los, e você já faz um ótimo trabalho sobre isso. As formas possíveis de melhorar sua abordagem seriam: você pode usar informações sobre quais builds estão suspensas? Você menciona que possui "outros mecanismos para detectá-los" - você pode detectá-los e depois remover apenas os da amostra?
Caso contrário, se você tiver mais dados, poderá pensar em remover não tercis, mas quintis ... mas em algum momento, isso provavelmente não fará muita diferença.
fonte
O que você está fazendo é conhecido como uma média aparada .
Como você fez, é comum aparar a mesma proporção de cada lado (a proporção de aparar).
Você pode cortar algo entre 0% (uma média comum) e até (quase) 50% (o que indica a mediana). Seu exemplo possui 30% de corte em cada extremidade.
Veja esta resposta e o artigo relevante da Wikipedia .
[Editar: Veja a excelente discussão de Nick Cox sobre este tópico.]
É um estimador de localização bastante razoável e robusto. Geralmente é considerado mais adequado para distribuições quase simétricas do que as altamente distorcidas, mas se for adequado ao seu objetivo *, não há razão para não usá-lo. Quanto é melhor cortar depende dos tipos de distribuição que você possui e das propriedades que procura.
* Não está completamente claro o que você deseja estimar aqui.
Há um grande número de outras abordagens robustas para resumir o 'centro' de distribuições, algumas das quais você também pode achar útil. (por exemplo, estimadores M podem ter alguma utilidade para você, talvez)
[Se você precisar de uma medida correspondente de variabilidade para ir com sua média aparada, um desvio padrão Winsorized pode ser útil (essencialmente, ao calcular o sd, substitua os valores que você cortaria ao aparar com os valores mais extremos que você não cortou).]
fonte
Ainda outro método é calcular a mediana de todas as médias aos pares ou executar bootstrap.
Atualizar:
A mediana de todas as médias de pares é chamada estimador de Hodges-Lehmann . Esse estimador geralmente possui uma alta eficiência. Esta entrada da enciclopédia por Scott L. Hershberger diz:
O bootstrapping pode ser menos relevante e mais intensivo em computação, mas você pode coletar uma pequena amostra aleatória dos dados com substituição e calcular a média dessa subamostra, fazê-lo várias vezes e calcular a mediana de todos os meios.
Nos dois casos, você não precisa mais escolher um valor entre os valores dos seus dados (ao calcular a mediana comum), mas, em vez disso, escolhe entre muitas médias dos subconjuntos dos dados.
fonte
Parece razoável o que você está fazendo: apenas para obter informações, uso o processo a seguir com bastante frequência para uma finalidade semelhante: mas só estou realmente interessado nos Outliers Superiores.
Calcule o resumo de cinco números: Mín, Q1, Mediana, Q3, Máx. Calcular intervalo interquartil: Q3-Q1. Defina suas 'cercas' externas em Q1-IQR * X e Q3 + IQR * X: onde um valor razoável de 'X' é 1,5.
Usando o Excel e suas figuras, o valor acima (usando 1.5 para 'X' **) gera um valor externo superior: 21011
Portanto, a cerca inferior aqui não é útil ou realista para o seu exemplo: de fato, o que sustenta o argumento do outro post sobre a importância de entender o significado de seus dados específicos.
(** Encontrei uma citação para a regra '1.5': não estou dizendo que é autoritativa, mas parece um ponto de partida razoável para mim: http://statistics.about.com/od/Descriptive-Statistics/a/ O que é a regra do intervalo interquartil.htm )
Você também pode decidir (talvez) apenas usar os pontos de dados que se enquadram no próprio IQR: isso parece produzir resultados razoáveis (na medida em que a associação ao seu método é muito semelhante).
usando os mesmos dados, isso colocaria os seguintes pontos de dados na 'área de interesse':
Em um Boxplot: todos esses pontos se encaixariam na parte da caixa (e não na parte dos bigodes) do diagrama.
Pode-se ver que esta lista inclui alguns itens que não estão na sua lista original (compilações mais antigas); Não sei dizer se uma lista é mais precisa de alguma forma. (novamente, tudo se resume a entender seu conjunto de dados).
fonte