Olhe e você encontrará (uma correlação)

66

Eu tenho várias centenas de medições. Agora, estou pensando em utilizar algum tipo de software para correlacionar todas as medidas com todas as medidas. Isso significa que existem milhares de correlações. Entre eles, deve haver (estatisticamente) uma alta correlação, mesmo que os dados sejam completamente aleatórios (cada medida possui apenas cerca de 100 pontos de dados).

Quando encontro uma correlação, como faço para incluir nela as informações sobre o quanto eu procurava por uma correlação?

Eu não estou em um nível alto de estatística, então por favor, tenha paciência comigo.

David
fonte
5
Este é um ótimo exemplo de por que precisamos de vários testes de hipóteses.
Presumivelmente, pode-se usar o procedimento de permutação para gerar uma distribuição nula para limites de significância para a maior correlação, um limite diferente para a segunda maior correlação e assim por diante. Espero que isso leve apenas algumas horas em Python ou R. (Ha! Últimas palavras famosas.) Mas certamente alguém já deve ter feito isso e salvado o código em algum lugar?
4
O @tmo Rnesta máquina leva 18 segundos para obter 1000 realizações da distribuição de permutação nula do coeficiente de correlação máximo para uma matriz de 300 por 100 x:correl <- function(x, k=1) { n <- dim(x)[2] * (dim(x)[2]-1) / 2; v <- cor(x); sort(v[lower.tri(v)])[(n-k+1):n] }; sim <- replicate(1000, correl(apply(x,2,sample)))
whuber

Respostas:

74

Essa é uma excelente pergunta, digna de alguém que seja um pensador estatístico claro, porque reconhece um aspecto sutil, mas importante, de múltiplos testes.

Existem métodos padrão para ajustar os valores p de múltiplos coeficientes de correlação (ou, equivalentemente, para ampliar seus intervalos de confiança), como os métodos de Bonferroni e Sidak ( qv ). No entanto, eles são conservadores demais com grandes matrizes de correlação devido às relações matemáticas inerentes que devem se manter entre os coeficientes de correlação em geral. (Para alguns exemplos de tais relacionamentos, consulte a pergunta recente e o tópico que se segue .) Uma das melhores abordagens para lidar com essa situação é realizar um teste de permutação (ou reamostragem). É fácil fazer isso com correlações: em cada iteração do teste, embaralhe aleatoriamente a ordem dos valores de cada um dos campos (destruindo assim qualquer correlação inerente) e recompute a matriz de correlação completa. Faça isso por vários milhares de iterações (ou mais) e, em seguida, resuma as distribuições das entradas da matriz de correlação, fornecendo, por exemplo, seus percentis 97,5 e 2,5: eles serviriam como intervalos de confiança mútuos e simétricos de 95% nos dois lados. hipótese de não correlação. (Na primeira vez em que você fizer isso com um grande número de variáveis, ficará surpreso com o quão altos podem ser alguns dos coeficientes de correlação, mesmo quando não houver correlação inerente.)

Ao relatar os resultados, não importa quais cálculos você faça, inclua o seguinte:

  • O tamanho da matriz de correlação ( ou seja , quantas variáveis ​​você consultou).

  • Como você determinou os valores de p ou "significância" de qualquer um dos coeficientes de correlação ( por exemplo , os deixou como estão, aplicou uma correção de Bonferroni, fez um teste de permutação ou qualquer outra coisa).

  • Se você analisou medidas alternativas de correlação, como a correlação de Spearman . Se você fez isso, indique também por que você escolheu o método no qual está realmente relatando e usando.

whuber
fonte
11
Essa é uma descrição bastante completa dos métodos de ajuste do valor p, mas o que não é dito é o critério de ajuste. Tradicionalmente, tem sido a taxa de erro familiar. Mas esse é um critério estrito e não é útil quando você está olhando para milhares de comparações. Nesse caso, a taxa de descoberta falsa sugerida pela primeira vez por Benjamini agora é comumente usada.
Michael Chernick 5/05
corr(x1 1,y1 1)corr(xn,yn)xEuyEucorr(xEu,yj) Euj)? Ainda precisamos de uma correção?
Jase
@Ase Sim, você faz. A quantidade de correção depende das inter-relações entre as variáveis. Os métodos baseados em simulação são a única maneira viável de determinar essas correções.
whuber
Uau, legal. Esse método que você discutiu também corrige os erros padrão para problemas de correlação serial e heterocedasticidade?
Jase
@Jase Seria difícil interpretar os coeficientes de correlação em um modelo heterocedástico. Seu comentário parece se referir a um modelo linear em uma configuração de série temporal, em vez de estimar coeficientes de correlação multivariados.
whuber
10

Da sua resposta de acompanhamento à pergunta de Peter Flom, parece que você pode ser mais bem atendido por técnicas que analisam a estrutura de nível mais alto na sua matriz de correlação.

Técnicas como análise fatorial, PCA, escala multidimensional e análise de cluster de variáveis ​​podem ser usadas para agrupar suas variáveis ​​em conjuntos de variáveis ​​relativamente mais relacionadas.

Além disso, você pode pensar teoricamente sobre que tipo de estrutura deve estar presente. Quando seu número de variáveis ​​é grande e o número de observações é pequeno, geralmente é melhor confiar mais nas expectativas anteriores.

Jeromy Anglim
fonte
11
(+1) Bons conselhos, à luz dos comentários do OP à resposta de @Peter Flom.
whuber
7

Este é um exemplo de múltiplas comparações. Há uma grande literatura sobre isso.

Se você tiver, digamos, 100 variáveis, terá 100 * 99/2 = 4950 correlações.

Se os dados forem apenas ruído, seria de esperar que 1 em 20 deles fosse significativo em p = 0,05. Isso é 247,5

Antes de ir mais longe, porém, seria bom se você pudesse dizer por que está fazendo isso. Quais são essas variáveis, por que você as correlaciona, qual é a sua ideia substantiva?

Ou você está apenas buscando correlações elevadas?

Peter Flom - Restabelece Monica
fonte
3
A razão pela qual eu quis fazer isso dessa maneira foi ter uma mente aberta para entender meus dados, de modo que talvez de alguma maneira eu esteja procurando por correlações, nas quais eu não pensava antes, com o objetivo de me esclarecer. Certamente não estou fazendo isso para satisfazer meu chefe ou algo abitrário. Prefiro não entrar nas especificidades dos dados, pois quero uma resposta geral para essa pergunta, para poder usá-lo em todas as situações no futuro.
David
7

Talvez você possa fazer uma análise preliminar de um subconjunto aleatório dos dados para formar hipóteses e, em seguida, testar essas poucas hipóteses de interesse usando o restante dos dados. Dessa forma, você não precisaria corrigir quase tantos testes múltiplos. (Eu acho que...)

Obviamente, se você usar esse procedimento, reduzirá o tamanho do conjunto de dados usado para a análise final e, assim, reduzirá seu poder de encontrar efeitos reais. No entanto, as correções para várias comparações também reduzem a energia e, portanto, não tenho certeza de que você necessariamente perderia alguma coisa.

Michael Lew
fonte
5
(+1) Geralmente, é uma ótima ideia. Para grandes matrizes de correlação, no entanto, existem tantas estatísticas e muitas delas podem ser simultaneamente espuriosamente grandes que geralmente vale a pena ajustar. Caso contrário, você acabará perseguindo um grande número de correlações enganosas "significativas" que simplesmente desaparecem nos dados de espera. (Faça uma simulação com, digamos, algumas centenas de 50 variáveis ​​normais padrão não correlacionadas. É uma grande
surpresa