Quero determinar qual dos dois conjuntos de dados (B1, B2) melhor se correlaciona (pearsons r) a outro conjunto (A). Faltam dados em todos os conjuntos de dados. Como posso determinar se a correlação resultante é significativamente diferente ou não?
Por exemplo, os valores 8426 estão presentes em A e B1, r = 0,74. 8798 estão presentes em A e B2, r = 0,72.
Achei que essa pergunta pudesse ajudar, mas não foi respondida: como saber que um sistema é significativamente melhor que outro?
Respostas:
Às vezes um pode ser capaz de fazer isso em regressão múltipla, onde A é o DV, B é a pontuação pessoas têm em uma escala, e C é um código fictício que diz que é B1 ou B2:
lm(A~B+C+B*C)
. O termo de interação,B*C
dirá se as correlações são diferentes, enquanto simples inclinações entre A e B nos dois níveis de C indicarão as correlações.No entanto, não é possível ajustar todos os tipos de comparações entre condições nesta estrutura. O
cocor
pacote R é muito útil e possui uma interface simples de apontar e clicar na web. Observe que, com diferentes dados ausentes, você não tem amostras independentes nem dependentes. Eu usaria a exclusão listwise aqui, para mantê-lo simples (e o poder não é um problema para você).fonte
Oh, o poder do bootstrap. Vamos analisar três vetores para ilustração: , e onde:A B1 B2 Cor(A,B1)=0.92
Cor(A,B2)=0.86
O objetivo é determinar se a correlação desses dois conjuntos de dados é significativamente diferente. Ao coletar amostras de bootstrap da seguinte forma:
Podemos plotar as distribuições de bootstrap das duas correlações:
Também podemos obter intervalos de confiança de 95% para .Cor(A,Bi)
IC95% para :Corr(A,B1) (0.897,0.947)
IC95% para :Corr(A,B2) (0.810,0.892)
O fato de que os intervalos não se sobrepõem (apenas) nos dá alguma evidência de que a diferença nas correlações da amostra que observamos é realmente estatisticamente significativa.
Como a ameba aponta nos comentários, um resultado mais "poderoso" vem da obtenção da diferença para cada uma das amostras de inicialização.
Um IC de 95% para a diferença entre os dois é:(0.019,0.108)
Observando que o intervalo (apenas) exclui 0, temos evidências semelhantes às de antes.
Para lidar com o problema de dados ausentes, basta selecionar suas amostras de autoinicialização dos pares contidos nos dois conjuntos de dados.
fonte
Suponha a transformação Fisher: e . Ou, de maneira equivalente e talvez mais clara (graças a @dbwilson !), e .r′1=tanh−1(r1) r′2=tanh−1(r2) r′1=12ln(1+r11−r1) r′2=12ln(1+r21−r2)
Então, devido ao fato de as variáveis transformadas de Fisher agora estarem normalmente distribuídas e a soma de variáveis aleatórias normalmente distribuídas ainda estar normalmente distribuída:
Portanto, você testa as hipóteses nulas obtendo .H0:z=0 P(z≠0)=2⋅P(Z>|z|)
Em comparação com a habitual -teste, aviso que não poderia usar as -Estatísticas tão facilmente, consulte Qual é a distribuição da diferença de dois t-distribuições , por isso há uma consideração a ser feita sobre os graus de liberdade disponíveis o cálculo, ou seja , assumimos grande o suficiente para que a aproximação normal possa ser razoavelmente razoável para as respectivas estatísticas .t t n t
-
Após o comentário de @Josh , podemos incorporar um pouco a possibilidade de interdependência entre amostras (lembre-se de que ambas as correlações dependem da distribuição de A). Sem assumir amostras independentes e usar a desigualdade de Cauchy-Schwarz, podemos obter o seguinte limite superior (consulte: Como encontro o desvio padrão da diferença entre duas médias? ):
fonte
Editado após feedback útil de Mark White (obrigado!)
Uma opção é calcular os dois relacionamentos (B1 com A e B2 com A) em um único modelo que também calcula a diferença entre eles. Isso é fácil de realizar com regressão múltipla . Você executaria um modelo com A como variável dependente e, em seguida, uma variável contínua com todas as pontuações para B1 e B2, uma variável categórica indicando qual variável era (B1 ou B2) e a interação entre elas. Em R:
Aqui estão as correlações dos dados que eu gerei:
Alterando o formato dos dados para atender às necessidades do modelo (reformatando para "longo"):
Aqui está o modelo:
Os resultados aqui (dos meus dados elaborados) sugerem que existe uma relação significativa entre B1 e A (o teste do coeficiente "valor", pois B1 é o grupo de referência para o coeficiente "var"), mas que a diferença entre o relacionamento B1 com A e o relacionamento B2 com A não é significativo (o teste do coeficiente "valor: varB2").
Se você gosta de pensar em termos de correlação, em vez de coeficientes de regressão, apenas padronize todas as suas variáveis (A, B1 e B2) antes de executar o modelo, e os coeficientes de regressão obtidos serão padronizados (não exatamente a mesma coisa que um correlação de ordem zero, mas muito mais próxima em termos de interpretação).
Note também que esta vai restringir sua análise apenas aos casos que têm tanto B1 e B2 ( listwise eliminação ). Desde que isso deixe você com dados suficientes para não ficar com pouca potência e contanto que os dados ausentes estejam faltando aleatoriamente (ou uma proporção pequena o suficiente do total de dados para não importar muito, mesmo que estejam ausentes de maneira não aleatória), tudo bem.
O fato de você restringir sua análise ao mesmo conjunto de dados para estimar efeitos para B1 e B2 (em vez de usar conjuntos de dados ligeiramente diferentes, com base nos diferentes padrões de falta) tem a vantagem de interpretar um pouco a diferença entre correlações mais direto. Se você calcular as correlações separadamente para cada uma delas e depois testar a diferença entre elas , terá o problema de que os dados subjacentes são ligeiramente diferentes em cada caso - qualquer diferença que você vê pode ser devido a diferenças nas amostras e a diferenças nas relações reais entre variáveis.
fonte
lm(A~B1*B2)
testará se a correlação entreB1
eA
depende daB2
pontuação de alguém ? Esse termo de interação não está testando se as correlações são diferentes; está testando se os dois preditores interagem entre si. Você pode criar um código fictício,C
que codifique se a escalaB
éB1
ou não ouB2
. Isso indicaria que a correlação entreB
eA
depende de se éB1
ouB2
, se é, se as correlações são diferentes.