2013-10-05 8 views
0

В R, по-видимому, существует расхождение для вычисления коэффициента корреляции pearson, между (a) использованием формулы исходного балла за один шаг и (b) сначала оценки числителя и знаменателя отдельно. В частности, когда я сделал расчет за один шаг, результат был ошибочным, но он был правильным, когда я сначала оценил числитель и знаменатель. Как так? Я мог бы что-то делать неправильно, но я не могу понять, что это такое.Несоответствие при расчете коэффициента корреляции pearson

##data 
x <- 1:5 
y <- 5:1 
##x squared, y squared, x times y; for raw score formula 
xx <- x*x 
yy <- y*y 
xy <- x*y 
##correlation coefficient; the value that should come out 
cor(x,y) #-1 
##raw score formula, in one line 
wrong <- length(xy)*sum(xy)-sum(x)*sum(y)/ 
sqrt((length(xx)*sum(xx)-sum(x)^2)*(length(yy)*sum(yy)-sum(y)^2)) 
wrong #170.5 
##raw score formula, separating numerator and denominator 
numerator <- length(xy)*sum(xy)-sum(x)*sum(y) 
denominator <- sqrt((length(x)*sum(xx)-sum(x)^2)*(length(y)*sum(yy)-sum(y)^2)) 
correct <- numerator/denominator 
correct #-1 

Я использую R 2.14.1 в Xubuntu 12.04.

ответ

4

Это ошибка порядка операций.

Вам нужно еще один набор скобок в числителе:

notwrong <- (length(xy)*sum(xy)-sum(x)*sum(y))/ 
    sqrt((length(xx)*sum(xx)-sum(x)^2)*(length(yy)*sum(yy)-sum(y)^2)) 
notwrong #-1 
+1

я посмотрел на мою формулу снова и снова, так что я удивляюсь я пропустил это. Спасибо большое. –

Смежные вопросы