[R] covariance

Marc Schwartz marc_schwartz at me.com
Sun Apr 19 19:36:05 CEST 2009


Depending upon the size of the matrix, using:

   diag(cov(t(x), t(y)))

might be notably faster. On smaller matrices the time savings is  
negligible.

Using Jorge's example below:

 > diag(cov(t(X), t(Y)))
  [1]  0.23396819  0.51455839  1.13851842 -4.30551345 -2.60720372
  [6] -0.06834326  0.78344182 -0.02085422  1.05896045  1.37631451

HTH,

Marc Schwartz

On Apr 19, 2009, at 12:22 PM, Jorge Ivan Velez wrote:

> Dear Benny,
> Here is something that could get you a hint:
>
> # Some data
> set.seed(123)
> X <- matrix(rnorm(100),ncol=10)
> Y <- matrix(rnorm(100,2,4),ncol=10)
>
> # Number of rows
> n<-nrow(X)
>
> # Covariances
> sapply(1:n,function(i) cov(X[i,],Y[i,]))
> # [1]  0.23396819  0.51455839  1.13851842 -4.30551345 -2.60720372
> -0.06834326  0.78344182 -0.02085422
> # [9]  1.05896045  1.37631451
>
> See ?cov and ?sapply for more details.
>
> HTH,
>
> Jorge
>
>
> On Sun, Apr 19, 2009 at 1:12 PM, Benny Chain <b.chain at ucl.ac.uk>  
> wrote:
>
>> Does anyone know a way to calculate the covariances between two
>> arrays/matrices x and y, row by row. i.e. var(x[n,],y[n,]) for all  
>> n ?




More information about the R-help mailing list