Estou tentando calcular o coeficiente de correlação de Pearson de acordo com esta fórmula em um grande conjunto de dados:
Principalmente, meus valores estão entre -1 e 1, mas às vezes recebo números estranhos como:
1.0000000002
-3
E assim por diante. É possível ter dados estranhos que resultem nisso ou isso significa que eu tenho um erro no cálculo?
Por exemplo, percebo que às vezes meu somatório de X é 1 e, portanto, o somatório de X ^ 2 seria 1. Isso resulta em um valor como 1.00000002. Outras vezes, terei o somatório de XY como 0 e o cálculo resultante será -3. Isso é estatisticamente possível ou há um erro nos meus cálculos?
correlation
pearson-r
numerics
ocean800
fonte
fonte
NOT((R>=-1)&(R<=1))
True
0/0
NaN
Respostas:
As fórmulas que você está usando tem longa foi conhecido por ser numericamente instável. Se as médias quadradas são grandes em comparação com as variações e / ou os produtos médios são grandes em comparação com as covariâncias, a diferença no numerador e nos termos entre parênteses no denominador pode ter problemas com o cancelamento catastrófico .
Às vezes, isso pode levar a variações ou covariâncias calculadas que nem retêm um único dígito de precisão (ou seja, são piores que inúteis).
Não use essas fórmulas. Eles faziam algum sentido quando as pessoas calculavam à mão , onde você podia ver, e lidavam com essa perda de precisão quando isso acontecia - por exemplo, o uso dessas fórmulas era normalmente precedido pela eliminação dos dígitos comuns, portanto, números como este:
primeiro, você teria que subtrair 8901234 (pelo menos) - o que economizaria muito tempo no trabalho, além de evitar o problema de cancelamento. Os meios (e quantidades semelhantes) seriam então ajustados no final, enquanto as variações e covariâncias poderiam ser usadas como estão.
Idéias semelhantes (e outras) podem ser usadas com computadores, mas você realmente precisa usá-las o tempo todo, em vez de tentar adivinhar quando pode precisar delas.
As maneiras eficientes de lidar com esse problema são conhecidas há mais de meio século - por exemplo, ver o artigo de Welford de 1962 [1] (onde ele fornece algoritmos de variância e covariância de uma passagem - os algoritmos estáveis de duas passagens já eram bem conhecidos). Chan et al [2] (1983) comparam vários algoritmos de variância e oferecem uma maneira de decidir quando usar quais (embora na maioria das implementações geralmente as pessoas usem apenas um algoritmo).
Veja a discussão da Wikipedia sobre esse assunto em relação à variação e sua discussão sobre algoritmos de variação .
Comentários semelhantes se aplicam à covariância.
[1] BP Welford (1962),
"Nota sobre um método para calcular somas corrigidas de quadrados e produtos",
Technometrics vol. 4, Iss. 3, 419-420
( link do cidadão )
[2] TF Chan, GH Golub e RJ LeVeque (1983)
"Algoritmos para calcular a variância da amostra: análise e recomendações",
The American Statistician , vol. 37, No. 3 (ago.1983), pp. 242-247
Versão do relatório técnico
fonte
R
implementação do algoritmo de Welford em stats.stackexchange.com/a/235151/919 .O coeficiente de correlação de Pearson é de fato entre e (inclusive). Isto decorre da desigualdade de Cauchy-Schwarz.−1 +1
Obter um coeficiente de correlação de é possivelmente (mas improvável) devido a erro numérico, enquanto -3 quase certamente indica um erro na implementação (ou uma plataforma inadequada para valores numéricos! :).1.0000000002
fonte