Qualidade de ajuste para amostras de tamanhos muito grandes


12

Coleto amostras muito grandes (> 1.000.000) de dados categóricos todos os dias e desejo que os dados pareçam "significativamente" diferentes entre os dias para detectar erros na coleta de dados.

Eu pensei que usar um teste de ajuste adequado (em particular, um teste G) seria um bom ajuste (trocadilhos) para isso. A distribuição esperada é dada pela distribuição do dia anterior.

Mas, como o tamanho da minha amostra é muito grande, o teste tem uma potência muito alta e gera muitos falsos positivos. Ou seja, mesmo uma flutuação diária muito menor fornecerá um valor p próximo de zero.

Acabei multiplicando minha estatística de teste por alguma constante (0,001), que tem a boa interpretação de amostrar os dados nessa taxa. Este artigo parece concordar com essa abordagem. Eles disseram aquilo:

O quadrado de Chi é mais confiável, com amostras entre aproximadamente 100 a 2500 pessoas

Estou procurando mais comentários oficiais sobre isso. Ou talvez algumas soluções alternativas para falsos positivos ao executar testes estatísticos em grandes conjuntos de dados.


3
É uma boa pergunta. No entanto, não há uma base objetivamente suportável para sua abordagem ad hoc . Isso não significa que terá um desempenho ruim - mas sugere fortemente que existem procedimentos melhores. Para encontrá-los, ajudaria se você pudesse editar esta pergunta para explicar quais tipos de erros você está tentando identificar, incluindo o tamanho deles, quantos deles podem ocorrer e quais são as consequências de (a) não identifique alguns dos erros e (b) sinalize os dados corretos como erros.
whuber

2
Do ponto de vista matemático, um teste de qualidade de ajuste com muito grande é perfeitamente adequado - é apenas que a hipótese nula correspondente não é muito interessante: por que você gostaria de fazer uma pergunta "sim / não" quando pode obter uma resposta "quanto"? No seu caso, em uma base diária, você pode estimar a mudança na proporção para cada categoria, adicionar um intervalo de confiança de cada um e ver se eles não acertar uma região tolerância predefinida torno 0.n
Michael M

Seu uso de termos como 'significativo' e 'falso positivo' parece estar em desacordo com o significado estatístico desses termos, especialmente se você estiver fazendo o teste corretamente *. Sugiro que você evite esses termos, a menos que os use estritamente no sentido técnico. Seu problema básico é o uso de testes de hipóteses em situações em que pode fazer pouco sentido; em inglês claro e não técnico, qual é sua verdadeira questão de interesse?* (em particular, usando o dia anterior como a 'população' não está certo, se você não permitir a sua variabilidade - geralmente é tão variável como hoje)
Glen_b -Reinstate Monica

Respostas:


4

O teste está retornando o resultado correto. As distribuições não são as mesmas no dia a dia. Naturalmente, isso não serve para você. O problema que você está enfrentando é conhecido há muito tempo. Veja: Karl Pearson e RA Fisher em testes estatísticos: uma troca de 1935 da natureza

Em vez disso, você pode olhar para os dados anteriores (o seu ou de outro lugar) e obter a distribuição das alterações diárias para cada categoria. Em seguida, verifique se é provável que a alteração atual tenha ocorrido, dada essa distribuição. É difícil responder mais especificamente sem conhecer os dados e os tipos de erros, mas essa abordagem parece mais adequada ao seu problema.


4

Vamos em frente e mate a vaca sagrada de 5%.

Você (corretamente) apontou que o problema é o poder exuberante do teste. Você pode recalibrá-lo para uma potência mais relevante, como, por exemplo, um valor mais tradicional de 80%:

  1. Decida o tamanho do efeito que você deseja detectar (por exemplo, deslocamento de 0,2%)
  2. Decida a potência que é boa o suficiente para você, para que não seja sobrecarregada (por exemplo, 1β=80%)
  3. Volte à teoria existente do teste de Pearson para determinar o nível que tornaria seu teste prático.

p1=p2=p3=p4=p5=0.2p+δ/n=(0.198,0.202,0.2,0.2,0.2)n=106δ=(2,+2,0,0,0)k=

λ=jδj2/pj=4/0.2+4/0.2=40
With this large value of λ, this is close enough to N(μ=λ+k=44,σ2=2(k+2λ)=168). The 80%-tile is 44+13Φ1(0.8)=44+130.84=54.91. Hence your desirable level of the test is the inverse tail cdf of χ42 from 54.91:
Prob[χ42>54.91]=3.31011
So that would be the level you should consider testing your data at so that it would have the power of 80% to detect the 0.2% differences.

(Please check my math, this is a ridiculous level of a test, but that's what you wanted with your Big Data, didn't you? On the other hand, if you routinely see Pearson χ2 in the range of a couple hundred, this may be an entirely meaningful critical value to entertain.)

Keep in mind though that the approximations, both for the null and the alternative, may work poorly in the tails, see this discussion.


2

In these cases, my professor has suggested to compute Cramér's V which is a measure of association based on the chi-squared statistic. This should give you the strength and help you decide if the test is hypersensitive. But, I am not sure whether you can use the V with the kind of statistic which the G2 tests return.

This should be the formula for V:

ϕc=χ2n(k1)

where n is the grand total of observations and k is the number of rows or number of columns whichever is less. Or for goodness of fit tests, the k is apparently the no. of rows.


0

Uma abordagem seria tornar os testes de qualidade do ajuste mais significativos, realizando-os em blocos de dados menores.

Você pode dividir seus dados de um dia em, por exemplo, 1000 blocos de 1000 amostras cada e executar um teste individual de ajuste para cada bloco, com a distribuição esperada fornecida pelo conjunto de dados completo do dia anterior. Mantenha o nível de significância para cada teste individual no nível que você estava usando (por exemplo,α=0,05) Em seguida, procure desvios significativos do número total de testes positivos e do número esperado de falsos positivos (sob a hipótese nula de que não há diferença nas distribuições, o número total de testes positivos é distribuído binomialmente, com o parâmetroα)

Você pode encontrar um bom tamanho de bloco para usar usando conjuntos de dados de dois dias em que você poderia assumir que a distribuição era a mesma e ver qual tamanho de bloco fornece uma frequência de testes positivos que é aproximadamente igual a α (ou seja, qual o tamanho do bloco para seu teste de relatar diferenças espúrias).


Could you please elaborate on the sense in which this approach would be "more meaningful?"
whuber

It's statistical significance vs. real-world significance. By using 10^3 instead of 10^6 samples, the power of a single test is deliberately reduced, so rejections of the null hypothesis will tend to correspond to large lack-of-fit. This makes the result of a single test more meaningful because the OP doesn't care about "minor daily fluctuation". For 10^6 samples, the test might always reject H0 because of minor differences, so it's not clear whether a test result represents meaningful information.
CJ Stoneking

1
Thank you: your comment raises interesting and important issues that begin to bear on what I think is the real underlying question; namely, how should one measure differences among data in order to detect errors and how large a difference would be of concern? Although your answer might be appropriate in some circumstances, it seems unlikely that it will effectively detect many of the kinds of errors that could occur in data and it also leaves open the (natural) question of what size blocks of data one should use.
whuber

@whuber, can the problem be redefined in such a way so that the null and its deviation is data size invariant but seeks some qualitative representation?
Vass
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.