标签: 方差矩阵

  • R语言计算方差协方差矩阵

    方差协方差矩阵,多组变量组成的以方差和协方差数值得到的矩阵。要获得方差-协方差矩阵,需要先知道什么是方差。

    方差:是衡量随机变量或一组数据时离散程度的度量,即(样本中的每个值减去均值)平方和/自由度。

    例如,有一组数据,用R手动计算其方差。

    a <- c(2, 2, 1, 5, 4, 1, 2, 5, 2, 2)

    sum((a-mean(a))^2)/(length(a)-1) #手动计算方差

    var(a) #函数计算方差

    可以对比一下,函数计算的方差与手动计算的方差是否一致。

    协方差:是用于衡量两个随机变量的联合变化程度。而方差是协方差的一种特殊情况,即变量与自身的协方差。

    如果我们又有一组数据,用R计算一下协方差。

    b <- c(2, 2, 1, 4, 4, 3, 5, 1, 3, 5)

    sum((a-mean(a))*(b-mean(b)))/(length(a)-1)

    var(a,b)

    可自行查看结果是否一致。

    方差-协方差矩阵,是用不同数据得到的协方差矩阵。

    如果要得到a,b的方差-协方差矩阵,直接使用var()就可以。

    matrixNoHeader <- cbind(a,b)

    var(matrixNoHeader)

    协方差矩阵行列数量相等,等于变量的个数。

    如果是多个数据

    a <- c(2, 2, 1, 5, 4, 1, 2, 5, 2, 2)
    b <- c(2, 2, 1, 4, 4, 3, 5, 1, 3, 5)
    c <- c(1, 5, 5, 5, 3, 3, 2, 1, 4, 2)
    d <- c(4, 2, 5, 1, 5, 5, 4, 3, 5, 1)

    matrixNoHeader <- cbind(a,b,c,d)
    var(matrixNoHeader)

    对角线是每个变量自身的方差,其余部分是协方差。方差协方差矩阵就是这么简单。