【问题标题】:fitting semivariogram using R使用 R 拟合半变异函数
【发布时间】:2013-03-13 02:00:57
【问题描述】:

我已经使用“geoR”包拟合了我的半变异函数,如下所示:

#loading geoR
library(geoR)
#calculating the semivariogram
bin1 <- variog(geodata)
#plotting
plot(bin1)
#fitting the model
lines.variomodel(cov.model = "exp", cov.pars = c(0.571,0.2527), nug = 0.13, max.dist=1)

有什么方法可以知道指数模型的拟合优度(轻松)??

提前致谢...

【问题讨论】:

标签: r geor


【解决方案1】:

您在这里并没有真正拟合模型,您可以使用 variofit 将模型拟合到经验半变异函数。

例如

library(geoR)
vario100 <- variog(s100, max.dist=1)
ini.vals <- expand.grid(seq(0,1,l=5), seq(0,1,l=5))
ols <- variofit(vario100, ini=ini.vals, fix.nug=TRUE, wei="equal")
## variofit: model parameters estimated by OLS (ordinary least squares):
## covariance model is: matern with fixed kappa = 0.5 (exponential)
## fixed value for tausq =  0 
## parameter estimates:
## sigmasq     phi 
##  1.1070  0.4006 
## Practical Range with cor=0.05 for asymptotic range: 1.200177
## 
## variofit: minimised sum of squares = 0.1025

您可以使用 cov.spatial 在变异函数上的每个点计算您自己的适当加权平方和。

我认为这不是一个好主意。


相反,您可以使用loglik.GRF 来计算与给定模型和所有数据关联的可能性

# you can pass an existing model
loglik.GRF(s100, obj.model = ols)
## [1] -87.32958

或者只是参数

 loglik.GRF(s100, cov.pars = c(1.5,0.6), nugget = 0.01)

如果您真的想要加权最小二乘值,您可以使用 gstat 包中的 fit.variogram,而无需实际拟合任何东西。

一件好事是gstat 有一些辅助函数可以将geoR 模型转换为gstat 版本。这非常有用,因为gstat 的预测速度更快、效率更高。

例如

 library(gstat)
 # convert geodata to  data.frame object
 s100df <- as.data.frame(s100)
 # remove geodata.frame class that causes problems
 class(s100df) <- 'data.frame'

 # create gstat version of variogram
 s100v <- variogram(data~1, ~X1+X2, s100df)

 # convert a variomodel to vgm object

 foo <- as.vgm.variomodel(list(cov.model = 'exponential', kappa = 0.5,
                          cov.pars = c(1.5,0.6), nugget = 0.2))

 # get the weighted least squares value
 # calling fit.variogram without fitting any thing
 fittedfoo <- fit.variogram(s100v, foo, fit.sills = FALSE, fit.ranges = FALSE)
 # the weighted sum of squares is
 attr(fittedfoo, 'SSErr')
 ## [1] 0.6911813

【讨论】:

  • 你是对的,但实际上我可以通过使用指数模型向我的半变异函数添加线来知道与拟合相关的错误,尽管我可以用普通 (OLS) 和/或拟合我的经验变异函数使用 variofit 函数的加权 (WLS) 最小二乘模型。
猜你喜欢
  • 2015-10-12
  • 2021-05-14
  • 2015-05-27
  • 2015-11-28
  • 2016-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 2018-07-07
相关资源
最近更新 更多