Teste se as distribuições multidimensionais são iguais

15

Digamos que eu tenha duas ou mais populações de amostras de vetores de valor contínuo n-dimensionais. Existe uma maneira não paramétrica de testar se essas amostras são da mesma distribuição? Se sim, existe uma função em R ou python para isso?

mbc
fonte
2
O teste de Kolmogorov-Smirnov é uma ferramenta não-paramétrica típica para testar se duas distribuições são iguais. Não estou familiarizado com isso, mas a wikipedia refere-se a Justel, A., Peña, D. e Zamar, R. (1997). 251-259 . para uma extensão multivariada deste teste.
Macro
1
Há uma pergunta do CV abordando isso em duas dimensões: stats.stackexchange.com/questions/25946/… . Mesmo em duas dimensões, não existe uma maneira padrão de fazê-lo.
precisa saber é o seguinte

Respostas:

8

Acabei de fazer muita pesquisa em dois testes multivariados quando percebi que o teste de Kolmogorov-Smirnov não era multivariado. Então, olhei para o teste do Chi, o teste T ^ 2 de Hotelling, o critério de Anderson-Darling, de Cramer-von Mises, de Shapiro-Wilk, etc. comprimento. Outros são usados ​​apenas para rejeitar a suposição de normalidade, não para comparar duas distribuições de amostra.

A solução principal parece comparar as funções de distribuição cumulativa das duas amostras com todos os pedidos possíveis, os quais, como você pode suspeitar, são muito intensivos em computação, na ordem dos minutos para uma única execução de uma amostra contendo alguns milhares de registros:

https://cran.r-project.org/web/packages/Peacock.test/Peacock.test.pdf

Como declara a documentação de Xiao, o teste de Fasano e Franceschini é uma variante do teste de pavão:

http://adsabs.harvard.edu/abs/1987MNRAS.225..155F

O teste de Fasano e Franceschini foi especificamente planejado para ser menos intensivo em termos de computação, mas não encontrei uma implementação de seu trabalho em R.

Para aqueles que desejam explorar os aspectos computacionais do teste Peacock versus Fasano e Franceschini, consulte Algoritmos computacionalmente eficientes para o teste bidimensional de Kolmogorov – Smirnov

L Fischman
fonte
O que é distribuição cumulativa para multivariadas?
Aksakal quase certamente binário
2
F(x,y)=P(X<x,Y<y)pF(x,y)=i=1nI(Xi<x,Yi<y)/n
2
Agradável e conciso, AdamO. O teste do pavão parece francamente tolo em não fazer poda, como Fasano e Franceschini. Vamos torcer para que alguém decida codificá-lo um dia para R. É particularmente útil para a velocidade quando você tem registros ainda mais decompostos, talvez por uma variável categórica, e deseja ver se suas decomposições são de fato extraídas de diferentes distribuições.
L Fischman
1

O pacote R np (não paramétrico) tem um teste de igualdade de densidades de dados contínuos e categóricos usando densidade quadrada integrada. Li, Maasoumi e Racine (2009)

Assim como o pdf condicional np na seção 6 .

ran8
fonte
1

Sim, existem maneiras não paramétricas de testar se duas amostras multivariadas são da mesma distribuição conjunta. Mencionarei detalhes excluindo os mencionados por L Fischman . O problema básico que você está perguntando pode ser chamado de 'Problema de Duas Amostras' e uma boa quantidade de pesquisa está sendo realizada atualmente em periódicos como o Journal of Machine Learning Research e o Annals of Statistics e outros. Com meu pouco conhecimento sobre esse problema, posso orientar da seguinte maneira

  • Uma maneira recente de testar os conjuntos de amostras multivariadas é através da Discrepância Média Máxima (MMD); literatura relacionada: Arthur Gretton 2012 , Bharath 2010 e outros. Outros métodos relacionados podem ser encontrados nesses artigos de pesquisa. Se estiver interessado, consulte os artigos que os citam, para obter uma visão geral do estado da arte desse problema. E SIM, para isso existem implementações de R.

Se seu interesse é comparar vários conjuntos de pontos (conjuntos de amostras) com o conjunto de pontos de referência, para ver quão próximos eles se aproximam do conjunto de pontos de referência, você pode usar a divergência f .

  • Um caso especial popular disso é divergência de Kullback-Leibler . Isso é usado em muitos regimes de aprendizado de máquina. Isso pode ser feito novamente de duas formas np; através da abordagem parzen window (kernel) e estimadores de PDF de vizinhos mais próximos.

Também pode haver outras maneiras de abordar, essa resposta não é de forma alguma um tratamento abrangente de sua pergunta;)

Krishna
fonte