ここではモデルを実際に適合させていません。これを使用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
良い点の1つは、モデルからバージョン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