[英]fitting semivariogram using R
我已經使用“ 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)
有什么方法可以輕松地了解指數模型的擬合優度?
提前致謝 ...
您在這里並沒有真正擬合模型,可以使用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)
如果你真的想加權最小二乘值,你可以使用fit.variogram
從gstat
包,而無需實際安裝任何東西。
一件好事是, 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.