我在R中实现了自己的关联函数.令人惊讶的是,当使用内置的cor
函数时,我得到的结果略有不同.当观测数量足够大时,差异似乎就消失了.
我的职能:
corr = function(X) {
Q = X - colMeans(X)
S_ = colSums(Q**2)
S = sqrt(S_ %*% t(S_))
covarr = t(Q) %*% Q
corrr_ = covarr / S
return(corrr_)
}
library(mvtnorm)
set.seed(247)
X = rmvnorm(10, sigma = matrix(c(1,0.8,0.8,1), ncol=2)) # change 10 to 100, 1000, or 10000
corr(X)
cor(X)
对于n=10
,我得到了0.8490966,而不是0.8465363,所以变化是在小数点后3位.对于n=1000
,我得到0.7960206,而不是0.7960925,所以变化是在小数点后5位.