如何在R中计算?

时间:2014-11-26 14:15:13

标签: r statistics

我的数据集如下所示:

y1 y2 1 2 3 4 2 5 7 2 等等。所以每次观察都是二维的。调用此矩阵y

我想计算

enter image description here

现在每个yi都是一个向量。

我怎么能用R这样做?有预定义的功能吗?非常感谢!

1 个答案:

答案 0 :(得分:2)

显然不是协方差。让我们看看它是什么。

y-bar是y1和y2的平均值:

> d=data.frame(y1=c(1,3,2,7),y2=c(2,4,5,2))
> ybar = mean(c(d$y1, d$y2))
> ybar
[1] 3.25

现在在你的总和中我们有一个轻微的混乱点。 A * A'将取决于A是行矩阵还是列矩阵。 R只是在一个维度上有向量。你可以通过一种方式得到一个标量答案,另一方面,你得到一个4x4矩阵,因为你有四个观察值。我想你想要前者。所以总和的内部位是这些的总和:

> t(d$y1-ybar) %*% (d$y1-ybar) 
      [,1]
[1,] 20.75
> t(d$y2-ybar) %*% (d$y2-ybar) 
     [,1]
[1,] 6.75

总和为20.75 + 6.75,即27.5。你有答案。

但这些事情并不关心他们是y1还是y2。这些只是与平均值的平方差的总和。我们可以使用unlist获取所有值的向量,并在其中使用:

> unlist(d)
y11 y12 y13 y14 y21 y22 y23 y24 
  1   3   2   7   2   4   5   2 
> sum( (unlist(d) - mean(unlist(d)) )^2 ) 
[1] 27.5

再次得到你的答案。