我正在尝试计算这两个向量之间的样本协方差。我定义了一个带有两个输入变量的函数。我不知道这是正确的吗?我的样本协方差公式也不会运行。有人可以帮我用R写出来吗?

  xv = c(1., 5.5, 7.8, 4.2, -2.7, -5.4, 8.9)
  yv = c(0.1, 1.5, 0.8, -4.2, 2.7, -9.4, -1.9)
  sampleCov= function(x,y){
    cov(xv,yv) = frac{sum_{i=1}^{n}(x_i-\mu_x)(y_i-\mu_y)}{n-1}].
    return (Cov(xv,yv)
  }

最佳答案

R中有一个名为cov的基本函数可以完全满足您的要求,但是如果您想编写一个函数(不需要这样做),则可以尝试以下操作:

COV<- function(x,y) {
  if(length(x)!=length(y)) {stop('x must have the same length as y ')}
  x.bar <- mean(x)
  y.bar <- mean(y)
  N <- length(x)

  Cov <- (sum((x-x.bar)*(y-y.bar))) / (N-1)
  return(Cov)
}

COV(xv, yv)
[1] 8.697381

cov(xv, yv)
[1] 8.697381

如您所见,COVcov具有相同的结果,因此您不必为此编写函数。

此外,函数的主体没有R语法,而是编写了不相同的LaTex语法。

关于r - 2个向量的样本协方差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12941972/

10-12 19:58