使用新颖的距离函数创建相关矩阵

时间:2012-08-22 02:20:24

标签: r

我正在尝试编写一个函数,该函数将使用奇特的距离估计(dcorr,布朗距离)创建相关矩阵。更一般地说,我想编写一个通用“相关”矩阵的代码,您可以在其中插入任何距离估算器。

我的数据格式化为列是变量,行是观察。

我的基本代码出现问题。我的算法如下:

  • 使用apply来获取变量
  • 传递给将再次应用于整个矩阵的功能
  • 此时你应该有两对变量
  • 使用na.omit删除缺失的观察结果(dcorr必需)
  • 计算dcorr

我希望这会导致相关矩阵,但我在基本变量管理方面遇到了很多问题。我很难将变量传递给apply函数。特别是,我想传递第一个应用中拉出的列并将其传递给第二个应用(应用于整个原始矩阵)

我的代码:

dcormatrix <- function(Matrix){
  dcorhelper <- function (Col1){
    as.matrix(apply(Matrix,2,function(Col2){
      B <- na.omit(cbind(Col1,Col2))
      dcor(B[,1],B[,2],index=1)
    },Col1=Col1))
  }
 apply(Matrix,2,dcorhelper(),Matrix=Matrix)
}

有什么想法吗?我确信要有一个简单的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

您可能需要查看designdist包中的vegan。它允许人们定义替代距离/不相似矩阵。请参阅here