2015-05-03 1 views
2

Я хотел бы создать вариограммную подгонку из некоторых данных semivariance в R.Как преобразовать dataframe в объект gstat в R? Конкретно gstatVariogram

Я понимаю, что вариограмма нужный требует объекта, генерируемого Vgm и raw.vgm gneerated по вариограмме, например:

x = seq(0,300,by=300/100) 
y = seq(0,0.9,by=(0.9/100)) 
Z = seq(0.0,10.0,by=(10/100)) 
raw.dat = data.frame(x=x,y=y,Z=Z) 

g <- gstat(formula=Z~1, locations=~x+y, data=raw.dat) 
raw.vgm <- variogram(g) 

vg.exp <- vgm(psill=0.8,model='Exp', range = 50) 
fit.exp <- fit.variogram(raw.vgm , model = vg.exp) 

Однако, если у меня уже есть гамма (полувариантность) и значения расстояния, как мне получить объект gstat?

Ниже выдает ошибку:

dist = seq(0,30,by=0.3) 
gamma = seq(0,0.9,by=(0.9/100)) 
raw.vgm = data.frame(dist=dist,gamma=gamma) 
vg.exp <- vgm(psill=0.8,model='Exp',range=20) 
fit.exp <- fit.variogram(raw.vgm, model=vg.exp) 

Ошибка на следующие:

Error in fit.variogram(raw.vgm, model = vg.exp) : 
    object should be of class gstatVariogram or variogramCloud 

У меня только гамма и расстояния отстает. как создать gstatVariogram или variogramCloud? Благодарю.

ответ

1

После создания raw.vgm, вы должны установить свой класс по

class(raw.vgm) = c("gstatVariogram", "data.frame") 

тогда, fit.variogram также ожидает, что вариограмма имеет np поля, с числом пар точек, используемых; Я устанавливаю его к одному по

raw.vgm$np = rep(1, nrow(raw.vgm)) 

и, наконец, по умолчанию fit.method предполагает, что вы не имеют значения вариограмм для расстояния нулевой, так что вы можете попробовать другие значения, как

fit.exp <- fit.variogram(raw.vgm, model=vg.exp,fit.method=1)