【问题标题】:covariance matrix协方差矩阵
【发布时间】:2013-03-19 22:01:25
【问题描述】:

我想知道是否有人可以向我解释 geoR 包如何计算协方差函数?我的意思是你会怎么手工做?

library(geoR)
#suppose I have the following coordinates
X = c(60,30,20,40)
Y = c(50,20,50,50)
my_coordinates = cbind(X,Y)
print(my_coordinates)

#computing covariance
my_cov= varcov.spatial(my_coordinates,cov.model="exp", cov.pars=c(0.2,25))
print(my_cov)

你会得到:

         [,1]       [,2]       [,3]       [,4]
[1,] 0.20000000 0.03664442 0.04037930 0.08986579
[2,] 0.03664442 0.20000000 0.05645288 0.05645288
[3,] 0.04037930 0.05645288 0.20000000 0.08986579
[4,] 0.08986579 0.05645288 0.08986579 0.20000000

不过,也可以在 Matlab 中进行。

【问题讨论】:

  • 你看过源码了吗?您只需在 R 命令提示符下键入函数名称即可。根据提供的参数,该函数包括几个变体,但各个代码路径看起来并不特别模糊。
  • 如下所述,您的距离矩阵h与您的数据不对应。

标签: r geor


【解决方案1】:

了解包或函数如何做某事的最佳方法是查看源代码。这是开源项目最棒的事情之一,你可以做到这一点。

尝试输入varcov.spatial 或在解压后的压缩包中搜索函数定义

要计算协方差(取决于点之间的距离),需要计算

  • 你的点之间的距离(你真的只需要下三角形,因为它是对称的
  • 每个距离的协方差函数的值
  • 从这些计算出的协方差中形成完整的对称方差协方差矩阵。

协方差函数在?cov.spatial 中定义。您可以调用cov.spatialR 中计算这些值(geoR::varcov.spatial 所做的正是如此)

【讨论】:

  • @ToNoY - 您的示例距离不是来自您的示例数据。距离矩阵的下三角是as.vector(dist(my_coordinates)),它给出了[1] 42.42641 40.00000 20.00000 31.62278 31.62278 20.00000
  • @ToNoY -- 默认为euclidian distance -- 请参阅?dist。我不知道你的号码是从哪里得到的。
猜你喜欢
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 2017-08-27
  • 2019-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-03-06
相关资源
最近更新 更多