协方差矩阵和相关系数矩阵(R语言)

一、协方差矩阵

1.协方差定义

                                          S = \frac{1}{n - 1}\sum_{i=1}^{n}\left ( x_{(i)} -\bar{x}\right )\left ( x_{(i)} -\bar{x}\right )^{T}

 2.R语言实现

#协方差矩阵
#等价于cov(data)

data<-as.matrix(data)
n<-nrow(data)
mx<-diag(1,n)-matrix(1,n,n)/n
covA<-t(data)%*%mx%*%data/(n-1);covA 

  3.可视化运算

假设有X、Y两个矩阵,分别求X的协方差、Y的协方差、X和Y的协方差。 

                   \LARGE X=\bigl(\begin{smallmatrix} 1& 2&3 \\ 2& 1&1 \\ 3& 3 &2 \end{smallmatrix}\bigr)             \LARGE Y=\bigl(\begin{smallmatrix} 1& 3&2\\ 3& 1&4 \\ 2& 2 &0\end{smallmatrix}\bigr)


第一步先求X的每一列的均值:

                                                  \LARGE \bar{X}=\bigl(\begin{smallmatrix} 2 \\ 2\\ 2 \end{smallmatrix}\bigr)

第二步计算X-\bar{X},每列减去每列相应的均值:

                                                 \LARGE X-\bar{X}=\bigl(\begin{smallmatrix} -1& 0&1 \\ 0& -1&-1 \\ 1& 1 &0 \end{smallmatrix}\bigr)

第三步乘积求和:

                            \LARGE cov(X)=\bigl(\begin{smallmatrix} -1\\ 0\\ 1\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} -1 &0 & 1 \end{smallmatrix}\bigr)+\bigl(\begin{smallmatrix} 0\\ -1\\ 1\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} 0 &-1 & 1 \end{smallmatrix}\bigr)+\bigl(\begin{smallmatrix} 1\\ -1\\ 0\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} 1 &-1 & 0 \end{smallmatrix}\bigr)=\bigl(\begin{smallmatrix} 1 & 0.5 & -0.5\\ 0.5 & 1&0.5 \\ -0.5& 0.5& 1 \end{smallmatrix}\bigr)

同理可得Y的协方差:

                                    \LARGE cov(Y)=\bigl(\begin{smallmatrix} 1& -1&1 \\ -1& 1&-1 \\ 1& -1 &4 \end{smallmatrix}\bigr)

求X和Y的协方差,先求Y-\bar{Y}

                                                     \LARGE Y-\bar{Y}=\bigl(\begin{smallmatrix} -1& 1&0 \\ 1& -1&2 \\ 0& 0&-2 \end{smallmatrix}\bigr)

再乘积求和,用X的每一列乘以Y的每一列的转置:

                                \LARGE cov(X,Y)=\bigl(\begin{smallmatrix} -1\\ 0\\ 1\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} -1 &1 & 0 \end{smallmatrix}\bigr)+\bigl(\begin{smallmatrix} 0\\ -1\\ 1\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} 1 &-1 & 2 \end{smallmatrix}\bigr)+\bigl(\begin{smallmatrix} 1\\ -1\\ 0\end{smallmatrix}\bigr)\bigl(\begin{smallmatrix} 0 &0 &-2 \end{smallmatrix}\bigr)=\bigl(\begin{smallmatrix} 0.5& -0.5 & -1\\ -0.5 & 0.5&-2 \\ -1& 1& -1 \end{smallmatrix}\bigr)

二、相关系数矩阵

1.相关系数定义

                                  r_{jk} = \frac{s_{jk}}{\sqrt{s_{jj}}\sqrt{s_{kk}}}, j,k = 1,2,...,p

2.R语言实现

#相关系数矩阵
#等价于cor(data)

corA<-covA
for(j in 1:n )
{
  for(k in 1:n)
  {
    corA[j,k]<-covA[j,k]/(sqrt(covA[j,j])*sqrt(covA[k,k]))
  }
}
corA

   3.可视化运算

根据前面所求协方差:

                                   \LARGE cov(X)=\bigl(\begin{smallmatrix} 1 & 0.5 & -0.5\\ 0.5 & 1&0.5 \\ -0.5& 0.5& 1 \end{smallmatrix}\bigr)           \LARGE cov(Y)=\bigl(\begin{smallmatrix} 1& -1&1 \\ -1& 1&-1 \\ 1& -1 &4 \end{smallmatrix}\bigr)

按照公式可求得:

                                 \LARGE cor(X)=\bigl(\begin{smallmatrix} 1 & 0.5 & -0.5\\ 0.5 & 1&0.5 \\ -0.5& 0.5& 1 \end{smallmatrix}\bigr)             \LARGE cor(Y)=\bigl(\begin{smallmatrix} 1 & -1 & 0.5\\ -1 & 1&0.5 \\ 0.5& -0.5& 1 \end{smallmatrix}\bigr)

相关资料:数据分析与R软件第二版(李素兰著)每章例题代码和数据,下载地址:https://download.csdn.net/download/lph188/10802159

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值