Eu escrevi um programa que gera dados aleatórios. Se o programa estiver funcionando corretamente, esses dados deverão seguir uma distribuição de probabilidade conhecida e específica. Eu gostaria de executar o programa, fazer alguns cálculos sobre o resultado e obter um valor-p.
Antes que alguém o diga: entendo que o teste de hipóteses não pode detectar quando o programa está funcionando corretamente. Ele só pode detectar quando está operando incorretamente de uma maneira específica. (E mesmo assim, o teste "deve" falhar X% do tempo, dependendo do nível de significância que você escolher ...)
Então, estou tentando entender quais ferramentas podem ser apropriadas. Em particular:
Eu posso gerar tantos dados aleatórios quanto eu quiser. Tudo o que tenho a fazer é deixar o programa em execução por tempo suficiente. Portanto, não estou limitado a nenhum tamanho de amostra específico.
Estou interessado em técnicas que produzem um valor-p. Então, encarar um gráfico e dizer "sim, isso parece meio linear" não é uma opção interessante. A menos que haja alguma maneira de colocar um número rígido na "excentricidade" de um gráfico. ;-)
O que eu sei até agora:
Eu já vi três tipos principais de testes mencionados que parecem aplicáveis: teste qui-quadrado de [Pearson], teste de Kolmogorov-Smirnov e teste de Anderson-Darling.
Parece que um teste do qui-quadrado é apropriado para distribuições discretas , enquanto os outros dois são mais apropriados para distribuições contínuas . (?)
Várias fontes sugerem que o teste do AD é "melhor" que o teste KS, mas falha em entrar em mais detalhes.
Por fim, todos esses testes detectam presumivelmente "maneiras diferentes" de se desviar da distribuição nula especificada. Mas ainda não sei quais são as diferenças ... Em resumo, estou procurando algum tipo de descrição geral de onde cada tipo de teste é mais aplicável e que tipo de problemas ele detecta melhor.
fonte
Respostas:
Aqui está uma descrição geral de como os três métodos mencionados funcionam.
O método Qui-quadrado funciona comparando o número de observações em uma posição com o número esperado para estar na posição com base na distribuição. Para distribuições discretas, as caixas são geralmente as possibilidades ou combinações discretas delas. Para distribuições contínuas, você pode escolher pontos de corte para criar os compartimentos. Muitas funções que implementam isso criarão automaticamente os compartimentos, mas você poderá criar seus próprios compartimentos se quiser comparar em áreas específicas. A desvantagem desse método é que as diferenças entre a distribuição teórica e os dados empíricos que ainda colocam os valores no mesmo compartimento não serão detectadas, um exemplo seria o arredondamento, se teoricamente os números entre 2 e 3 fossem espalhados pelo intervalo (esperamos ver valores como 2,34296),
A estatística do teste KS é a distância máxima entre as 2 Funções de Distribuição Cumulativa que estão sendo comparadas (geralmente uma teórica e uma empírica). Se as 2 distribuições de probabilidade tiverem apenas 1 ponto de interseção, então 1 menos a distância máxima é a área de sobreposição entre as 2 distribuições de probabilidade (isso ajuda algumas pessoas a visualizar o que está sendo medido). Pense em plotar no mesmo gráfico a função de distribuição teórica e o FED, em seguida, meça a distância entre as 2 "curvas", a maior diferença é a estatística do teste e é comparada com a distribuição de valores para isso quando o valor nulo for verdadeiro. Isso captura as diferenças de forma da distribuição ou uma distribuição deslocada ou esticada em comparação com a outra.1n . Esse teste depende de você conhecer os parâmetros da distribuição de referência em vez de estimar a partir dos dados (sua situação parece boa aqui). Se você estimar os parâmetros a partir dos mesmos dados, ainda poderá obter um teste válido comparando com suas próprias simulações, em vez da distribuição de referência padrão.
O teste de Anderson-Darling também usa a diferença entre as curvas CDF, como o teste KS, mas, em vez de usar a diferença máxima, ele usa uma função da área total entre as 2 curvas (na verdade, compara as diferenças, pesa-as para que as caudas tenham mais influência, depois se integra no domínio das distribuições). Isso dá mais peso aos valores discrepantes que o KS e também dá mais peso se houver várias pequenas diferenças (em comparação com uma grande diferença que o KS enfatizaria). Isso pode acabar dominando o teste para encontrar diferenças que você consideraria sem importância (arredondamento suave etc.). Como o teste KS, isso pressupõe que você não estimou parâmetros a partir dos dados.
Aqui está um gráfico para mostrar as idéias gerais dos últimos 2:
com base neste código R:
O gráfico superior mostra um EDF de uma amostra a partir de uma normal padrão em comparação com o CDF da normal padrão com uma linha mostrando a estatística KS. O gráfico do meio mostra a diferença nas 2 curvas (você pode ver onde a estatística KS ocorre). A parte inferior é então a diferença quadrada e ponderada; o teste AD é baseado na área sob essa curva (supondo que eu tenha acertado tudo).
Outros testes observam a correlação em um qqplot, olham a inclinação no qqplot, comparam a média, var e outras estatísticas com base nos momentos.
fonte
+1 para escrever uma pergunta clara e detalhada. Espero que minha resposta não seja muito frustrante. Acredito que o teste de hipóteses não é uma abordagem apropriada no seu caso. O teste de significância de hipótese nula é uma ação razoável quando a resposta pode ser sim ou não, mas você não sabe qual . (Infelizmente, na verdade, não diz qual, mas esse é um problema diferente.) No meu caso, eu entendo, você quer saber se o seu algoritmo é bom. No entanto, sabe-se (com certeza) que nenhum programa de computador pode gerar dados verdadeiramente aleatórios a partir de qualquer distribuição de probabilidade. Isso é verdade primeiro, porque todos os computadores são máquinas de estados finitos e, portanto, só podem produzir números pseudo-aleatórios. Além disso (deixando de lado a falta de verdadeira aleatoriedade), não é possível que os valores gerados sigam perfeitamente qualquer distribuição contínua. Existem várias maneiras de entender isso, mas talvez o mais fácil seja que haja 'lacunas' na linha numérica, o que não é verdade para nenhuma variável aleatória contínua. Além disso, essas lacunas não são todas perfeitamente igualmente amplas ou perfeitamente espaçadas. Entre os cientistas da computação que trabalham na geração de números pseudo-aleatórios, o nome do jogo é melhorar os algoritmos, de modo que as lacunas sejam menores, mais uniformes, com períodos mais longos (e também que podem gerar mais valores mais rapidamente). De qualquer forma, esses fatos estabelecem que o teste de hipóteses é a abordagem errada para determinar se o seu algoritmo está seguindo corretamente "uma distribuição de probabilidade conhecida e específica", porque não é. (Desculpe.)
Em vez disso, uma estrutura mais apropriada é determinar a proximidade dos seus dados com a distribuição teórica. Para isso, eu recomendaria reconsiderar gráficos, especificamente qq-plots e pp-plots1 - β r = 1
Por outro lado, com relação à avaliação da qualidade do seu algoritmo, você pode cronometrá-lo em relação a outros pRNGs padrão.
Espero que isto ajude.
fonte
SnowsPenultimateNormalityTest
noTeachingDemos
pacote para R. Eu concordo com a idéia de @ gung de observar uma certa proximidade, em vez de focar em um valor-p. Um problema ao usar a correlação no gráfico qq para isso é que, se seus dados tiverem a forma correta, mas média, variação diferentes etc., você ainda poderá obter uma correlação realmente alta. Uma alternativa é usar a estatística KS ou estatística AD como medidas de diferença da teórica.Não li completamente todas as respostas, mas vejo que elas são bastante completas e precisas. Correndo o risco de repetir algo oculto nas respostas longas, só quero dizer que v = o teste do qui quadrado pode ser usado para dados contínuos. Pode não ser o melhor teste e, como muitos testes, conta com a teoria assintótica e, portanto, pode não ser preciso em amostras pequenas com células esparsas (isso depende também de como você faz o binning). O Anderson-Darling é mais poderoso para testar a normalidade do que o teste KS, mas o KS pode ser melhor para outras distribuições contínuas. O Lillefors possui um teste projetado para distribuições exponenciais.
fonte