Eu tenho dois conjuntos de dados representando parâmetros de estrelas: um observado e um modelado. Com esses conjuntos, crio o que é chamado de diagrama de duas cores (TCD). Uma amostra pode ser vista aqui:
A são os dados observados e B os dados extraídos do modelo (não importa as linhas pretas, os pontos representam os dados). Eu tenho apenas um diagrama A , mas posso produzir quantos diagramas B diferentes quiser e o que eu preciso é para manter aquele que melhor se encaixa a .
Então, o que eu preciso é de uma maneira confiável de verificar a qualidade do ajuste do diagrama B (modelo) ao diagrama A (observado).
No momento, o que faço é criar um histograma ou grade 2D (é assim que eu o chamo, talvez tenha um nome mais apropriado) para cada diagrama, dividindo os dois eixos (100 posições para cada). Depois, percorro cada célula da grade e encontro a diferença absoluta nas contagens entre A e B para essa célula em particular. Depois de ter passado por todas as células, que soma os valores para cada uma das células e portanto, acabar com um único parâmetro positivo representando a qualidade de ajuste ( ) entre A e B . Quanto mais próximo de zero, melhor o ajuste. Basicamente, é assim que esse parâmetro se parece:
; onde um i j é o número de estrelas em diagrama deumpara que cula particular (determinado por i j ) e b i j é o número deB.
É assim que essas diferenças nas contagens de cada célula se parecem na grade que eu criei (observe que não estou usando valores absolutos de ( a i j - b i j ) nesta imagem, mas Eu os uso ao calcular o parâmetro g f ):
O problema é que fui avisado de que esse pode não ser um bom estimador, principalmente porque, além de dizer que esse ajuste é melhor que o outro, porque o parâmetro é mais baixo , não posso dizer mais nada.
Importante :
(obrigado @ PeterEllis por trazer isso à tona)
1- Pontos de B não estão relacionados um-para-um com pontos em um . É importante ter isso em mente ao procurar o melhor ajuste: o número de pontos em A e B não é necessariamente o mesmo e o teste de qualidade do ajuste também deve explicar essa discrepância e tentar minimizá-la.
2- O número de pontos em cada conjunto de dados B (saída do modelo) que tento ajustar em A não é fixo.
Eu já vi o teste do qui-quadrado usado em alguns casos:
Além disso, li algumas pessoas que recomendam que um teste de Poisson com probabilidade de log seja aplicado em casos como este em que histogramas estão envolvidos. Se isso estiver correto, eu realmente apreciaria se alguém pudesse me instruir sobre como usar esse teste para este caso em particular (lembre-se, meu conhecimento de estatística é muito ruim, portanto, mantenha-o o mais simples possível :)
fonte
Respostas:
OK, revi amplamente esta resposta. Acho que, em vez de agrupar seus dados e comparar contagens em cada compartimento, a sugestão que eu enterrei na minha resposta original de ajustar uma estimativa de densidade de kernel em 2D e compará-los é uma idéia muito melhor. Melhor ainda, há uma função kde.test () no pacote ks de Tarn Duong para R que faz isso fácil como pie.
Consulte a documentação do kde.test para mais detalhes e os argumentos que você pode ajustar. Mas basicamente faz exatamente o que você deseja. O valor p que ele retorna é a probabilidade de gerar os dois conjuntos de dados que você está comparando sob a hipótese nula de que eles estavam sendo gerados a partir da mesma distribuição. Portanto, quanto maior o valor-p, melhor o ajuste entre A e B. Veja meu exemplo abaixo, onde é fácil perceber que B1 e A são diferentes, mas que B2 e A são plausivelmente iguais (é assim que eles foram gerados) .
MINHA RESPOSTA ORIGINAL ABAIXO, É MANTENDO SOMENTE PORQUE AGORA HÁ LINKS DE ELE EM QUALQUER LUGAR QUE NÃO FAZEM SENTIDO
Primeiro, pode haver outras maneiras de fazer isso.
Justel e cols. Propuseram uma extensão multivariada do teste de adequação de Kolmogorov-Smirnov, que eu acho que poderia ser usado no seu caso, para testar a adequação de cada conjunto de dados modelados ao original. Não consegui encontrar uma implementação disso (por exemplo, no R), mas talvez não parecesse o suficiente.
Como alternativa, pode haver uma maneira de fazer isso ajustando uma cópula aos dados originais e a cada conjunto de dados modelados e comparando esses modelos. Existem implementações dessa abordagem no R e em outros lugares, mas eu não estou especialmente familiarizado com elas, portanto não tentei.
Mas, para abordar sua pergunta diretamente, a abordagem adotada é razoável. Vários pontos se sugerem:
A menos que seu conjunto de dados seja maior do que parece, acho que uma grade de 100 x 100 possui muitos compartimentos. Intuitivamente, posso imaginar que você conclua que os vários conjuntos de dados são mais diferentes do que apenas porque a precisão de seus compartimentos significa que você tem muitos compartimentos com baixo número de pontos, mesmo quando a densidade de dados é alta. No entanto, isso no final é uma questão de julgamento. Certamente, eu verificaria seus resultados com diferentes abordagens ao binning.
Depois de fazer o binning e converter os dados em (com efeito) uma tabela de contingência com duas colunas e número de linhas igual ao número de posições (10.000 no seu caso), você tem um problema padrão de comparação de duas colunas de contagens. Um teste do qui-quadrado ou o ajuste de algum tipo de modelo de Poisson funcionaria, mas como você diz, há constrangimento por causa do grande número de contagens zero. Um desses modelos é normalmente adequado, minimizando a soma dos quadrados da diferença, ponderada pelo inverso do número esperado de contagens; quando isso se aproxima de zero, pode causar problemas.
Editar - o restante desta resposta agora não acredito mais ser uma abordagem apropriada.
Simulei alguns dados para parecer um pouco com o seu e descobri que essa abordagem era bastante eficaz para identificar quais dos meus conjuntos de dados "B" foram gerados a partir do mesmo processo que "A" e quais eram ligeiramente diferentes. Certamente mais eficaz que o olho nu.
Espero que ajude.
fonte