【问题标题】:Covariance Parameters for Krig in geoR kslinegeoR ksline 中 Krig 的协方差参数
【发布时间】:2015-01-22 18:40:40
【问题描述】:

我有一个以 mg/kg 为单位的位置和苯浓度的小型数据集

    WELL.ID   X           Y     BENZENE
1   MW-02   268.8155    282.83  0.00150
2   IW-06   271.6961    377.01  0.00050
3   IW-07   251.0236    300.41  0.01040
4   IW-08   278.9238    300.37  0.03190
5   MW-10   281.4008    414.15  2.04000
6   MW-12   391.3973    449.40  0.01350
7   MW-13   309.5307    335.55  0.01940
8   MW-15   372.8967    370.04  0.01620
9   MW-17   250.0000    428.04  0.01900
10  MW-24   424.4025    295.69  0.00780
11  MW-28   419.3205    250.00  0.00100
12  MW-29   352.9197    277.27  0.00031
13  MW-31   309.3174    370.92  0.17900

我正在尝试像这样将网格中的值(这些井所在的属性)中的值进行 krig

setwd("C:/.....")
getwd()

require(geoR)
require(ggplot2)


a <- read.table("krigbenz_loc.csv", sep = ",", header = TRUE)
b <- data.matrix(a)
c <- as.geodata(b)

x.range <- as.integer(range(a[,2]))
y.range <- as.integer(range(a[,3]))
x = seq(from=x.range[1], to=x.range[2], by=1)
y = seq(from=y.range[1], to=y.range[2], by=1)
length(x)
length(y)
xv <- rep(x,length(y))
yv <- rep(y, each=length(x))
in_mat <- as.matrix(cbind(xv, yv))

这是我用

启动 Krig 的时候
q <- ksline(c, cov.model="exp", cov.pars=c(10,3.33), nugget=0, locations=in_mat)

然而,当用

查看这个的输出时
cbind(q$predict[1:10], q$krige.var[1:10])

我明白了

         [,1]     [,2]
 [1,] 343.8958 10.91698
 [2,] 343.8958 10.91698
 [3,] 343.8958 10.91698
 [4,] 343.8958 10.91698
 [5,] 343.8958 10.91698
 [6,] 343.8958 10.91698
 [7,] 343.8958 10.91698
 [8,] 343.8958 10.91698
 [9,] 343.8958 10.91698
[10,] 343.8958 10.91698

前 5000 行的这些值不会改变...(无法查看更多内容,因为 max.print = 5000...也不知道如何更改,但这是一个切线..)

我意识到我的

cov.pars = c(10,3.33)

范围和门槛,可能是问题所在。

geoR.pdf,第 19 页描述了 cov.pars 的预期,但我不确定我应该如何决定这些协方差参数需要是什么。

有没有一种方法可以从我现有的数据中找到合适的值,或者我可以将它们设置为通用值,我的输出将类似于在 ESRI 的 ArcGIS 的空间分析包中执行的克里金法?

ZR

::::编辑:::

我的地理数据对象转换不正确... 这是正确的方法

c <- as.geodata(b, coords.col = 2:3, data.col = 4, )

也...对于变异函数,

v1 <- variog(c)
length(v1$n)
v1.summary <- cbind(c(1:11), v1$v, v1$n)
colnames(v1.summary) <- c("lag", "semi-variance", "# of pairs")
v1.summary

【问题讨论】:

  • 有多种方法可以估计这些参数。你看过 variofit 函数吗?
  • 我没有……你能举个例子吗?
  • 阅读小插图leg.ufpr.br/geoR/geoRdoc/vignette/geoRintro.pdf。就目前而言,这是一个更多关于统计方法的问题
  • 谢谢,我会读一读...谢谢你的帮助,nmel 和blindJesse --zr

标签: r gis covariance kriging geor


【解决方案1】:

一种方法是使用variofit 函数(也在geoR 包中)来估计协方差参数。例如,使用您的数据和初始值:

vario <- variog(c)  # See other options here for binning, etc
# Note that the order of the cov.pars is variance, then range, (see your question)
fitted_model <- variofit(vario=vario, ini.cov.pars=c(10, 3.33), cov.model='exp')
q <- ksline(c, cov.model=fitted_model$cov.model, cov.pars=fitted_model$cov.pars,
            nugget=fitted_model$nugget, locations=in_mat)

顺便说一下,看看变异函数是值得的。

【讨论】:

  • 为什么你还在为fitted_model ini.cov.pars 使用值10 和3.33?
  • 请查看 variofit 的帮助。您需要提供一些合理的起始值,并从那里进行优化。我只是用了你提供的东西。
猜你喜欢
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
相关资源
最近更新 更多