未经审查的皮尔森相关性

时间:2014-05-27 13:53:57

标签: r statistics correlation

我想用R.计算未中心的Pearson相关性 作为cor函数中的方法之一的“Pearson”相关性是指居中的Pearson相关性。我错了吗? 有没有能够计算未经中断的Pearson相关性的包?

最佳

电子。

3 个答案:

答案 0 :(得分:3)

根据http://www.stanford.edu/~maureenh/quals/html/ml/node53.html

自己计算它并不困难...
set.seed(101)
x <- runif(100)
y <- runif(100)

n <- length(x)
stopifnot(length(y)==n)
sx0 <- sqrt(sum(x^2)/(n-1))
sy0 <- sqrt(sum(y^2)/(n-1))
(c1 <- sum(x*y)/((n-1)*sx0*sy0))  ## 0.7859549

实际上,我过于密切关注那里列出的公式 - n-1的因素取消了,而且更容易:

all.equal(c1,sum(x*y)/(sqrt(sum(x^2)*sum(y^2))))   ## TRUE

你也可以尝试library("sos"); findFn("uncentered Pearson correlation")(但我没有得到任何点击......)

答案 1 :(得分:0)

def uncentered_corr_coeff(x,y):

import numpy as np

# find the lengths of the x and y vectors
x_length = len(x)
y_length = len(y)

# check to see if the vectors have the same length
if x_length is not y_length:
    print 'The vectors that you entered are not the same length'
    return False

# calculate the numerator and denominator
xy = 0
xx = 0
yy = 0
for i in range(x_length):
    xy = xy + x[i]*y[i]
    xx = xx + x[i]**2.0
    yy = yy + y[i]**2.0

# calculate the uncentered pearsons correlation coefficient
uxy = xy/np.sqrt(xx*yy)

return uxy

答案 2 :(得分:0)

由于我目前面临同样的问题,我最近正在寻找类似的软件包并找到了以下一个。它被称为 philentropy 。在那个包中有一个名为 lin.cor 的函数。当设置 method = "pearson2" 时,应该得到 Pearson 无心相关系数。请参阅以下链接以获取进一步说明:https://www.rdocumentation.org/packages/philentropy/versions/0.5.0/topics/lin.cor