R语言中计算协方差、相关系数。

 

001、

1.协方差

方差是描述自身偏离其均值的程度。

协方差用来描述两个变量间的变化关系,协方差用来度量两个随机变量关系的统计量:

 

<span class="mrow"><span class="mi"><img src="https://img2022.cnblogs.com/blog/1447599/202207/1447599-20220731123105542-380290930.png" alt="" loading="lazy" />

 

<span class="mrow"><span class="mi">

 

 

E[x] 代表期望,一般置X的均值

公式:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值

 

总结一下,如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高

 

dat1 <- c(2, 4, 6, 4)
dat2 <- c(8, 10, 6, 12)
cov(dat1, dat2)

mean1 <- mean(dat1)
mean2 <- mean(dat2)

mean2

sum <- 0
for (i in 1:4) {
  sum = sum + (dat1[i] - mean1) * (dat2[i] - mean2)
}
sum
sum/(4 - 1)

 

 

 

2、相关系数

协方差除以标准差的乘积。

就是用X、Y的协方差除以X的标准差和Y的标准差。

所以,相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差

 

既然是一种特殊的协方差,那它:

1、也可以反映两个变量变化时是同向还是反向,如果同向变化就为正,反向变化就为负。

2、由于它是标准化后的协方差,因此更重要的特性来了:它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度

 

 

dat1 <- c(2, 4, 6, 4)
dat2 <- c(8, 10, 6, 12)
cov(dat1, dat2)

mean1 <- mean(dat1)
mean2 <- mean(dat2)

mean2
sum <- 0
for (i in 1:4) {
  sum = sum + (dat1[i] - mean1) * (dat2[i] - mean2)
}
sum
sum/(4 - 1)                          ## 协方差,方向两个变量同向或反向变化。

sum/(4 - 1)/(sd(dat1)*sd(dat2))      ## 相关系数 = 协方差除以标准差的乘积。
cor(dat1, dat2)

 

参考:https://www.zhihu.com/question/20852004

 

posted @ 2022-07-31 12:32  小鲨鱼2018  阅读(2068)  评论(0编辑  收藏  举报