2015-04-03 3 views
0

У меня есть серия образцов, которые я хочу построить вариограммную модель и возможную модель кригинга. Во-первых, я нужду в detrend данные, как показано ниже:Почему мой дебитор не приводит к другому полуварианту в R?

samples 
    x y   z 
1 180 1180 2.763441 
2 180 240 -2.000000 
3 380 1840 1.720087 
4 720 80 4.056754 
5 860 800 4.361503 
6 620 1360 4.737717 
7 980 1920 4.352956 
8 1680 260 4.568255 
9 1520 800 5.025272 
10 1100 1220 4.693432 
11 800 1460 2.470927 
12 360 1900 1.455169 
13 700 1760 2.894159 
14 720 1540 2.115742 
15 660 1480 1.749017 
16 540 1680 3.291592 
17 260 1280 2.962401 
18 440 1640 2.422442 
19 280 1260 2.966076 
20 580 1580 3.178913 
21 600 1220 3.752786 
22 240 1700 1.748011 
23 480 1440 3.106302 
24 740 1880 4.827699 
25 760 1320 3.603621 
26 1560 1640 5.410076 
27 1960 1980 6.145778 
28 1520 1620 5.499064 
29 1900 1820 5.316121 
30 1780 1580 5.318344 
31 100 740 2.019103 
32 180 760 2.353693 
33 140 200 1.714856 
34 380 720 3.526107 
35 240 580 3.075283 
36 260 600 3.329397 
37 340 360 3.188613 
38 280 680 2.626241 
39 420 700 3.211163 
40 500 240 2.960805 
41 460 280 3.171664 
42 480 300 2.828883 
43 400 640 3.227938 
44 440 480 2.420358 
45 300 560 4.021187 
46 1380 220 5.364264 
47 1500 740 5.344526 
48 1240 380 4.632060 
49 1420 360 4.012537 
50 1280 800 4.122139 
51 1400 600 5.033020 
52 1300 640 4.215308 
53 1460 200 5.116025 
54 1220 440 4.550290 
55 1200 520 3.788613 
56 1540 340 5.772432 
57 1520 660 5.656598 
58 1480 260 5.423685 
59 1360 780 4.728220 
60 1260 240 3.683696 


print(mean(samples$z)) 

h <- gstat(formula=z~1, locations=~x+y, data=samples) 
samples.vgm <- variogram(h) 
plot(samples.vgm,main='Variogram of Samples NOT detrended') 


z = samples$z 
x = samples$x 
y = samples$y 
trend <- lm(z~x+y) 

c = trend$coefficients[[1]] 
a = trend$coefficients[[2]] 
b = trend$coefficients[[3]] 



Xs <- c() 
Ys <- c() 
Zs <- c() 

print('started the loop') 
for (i in 1:nrow(samples)){ 
    i = samples[i,] 
    x=i$x 
    y=i$y 
    z=i$z 
    z_prime = z - (a*x+b*y+c) 
    Xs <- c(Xs,x) 
    Ys <- c(Ys,y) 
    Zs <- c(Zs,z_prime) 
} 
sampled <- data.frame(Xs,Ys,Zs) 
print(sampled) 
print('the length of sampled is') 
print(length(sampled[[1]])) 
print(levelplot(Zs~Xs+Ys,sampled)) 

x <- seq(0,2000,by=20) 
y <- seq(0,2000,by=20) 

pred.grid <- data.frame(x=rep(x,times=length(y)),y=rep(y,each=length(x))) 

g <- gstat(formula=Zs~1, locations=~Xs+Ys, data=sampled) 
sampled.vgm <- variogram(g) 
plot(sampled.vgm,main='Variogram of Samples hopefully detrended') 

Проблема заключается в том, что сюжет трендом вариограммой (т.е. вариограммой g выше) выглядит точно так же, как и вариограммой h также выше, что НЕ сдерживается. любая причина, почему это происходит?

Данные явно отличаются друг от друга. Средние значения в расширенной версии - 0, как и ожидалось, но не ограниченная версия составляет около 3.556, также как и ожидалось.

Есть ли что-то, что я здесь не ловил?

+0

С какого пакета идет 'gstat'? Кроме того, 'object 'g' not found' в' samples.vgm <- variogram (g) '(третья строка). –

+0

Возможно, это должно было быть упомянуто ранее: когда я запускаю следующее ** сразу ** после вышеуказанного кода, это ошибки: 'vg.sph <- vgm (psill = 1.0, model = 'Sph', range = 500) fit.sph <- fit.variogram (sampled.vgm, model = vg.sph) sk1 <- krige (formula = Zs ~ 1, locations = ~ Xs + Ys, data = sampled, newdata = pred.grid, model = fit.sph, beta = 0) 'И сообщение об ошибке« Ошибка в [.data.frame (object,, -coord.numbers, drop = FALSE): не определены выбранные столбцы' – Candic3

ответ

0

Не уверен, что этот вопрос принадлежит, поскольку я думаю, что проблема концептуальна, не связана с вашим кодом. Я новичок, поэтому я просто продолжу и дам вам краткую обратную связь.

Вариатограмма отображает дисперсию (или полувариантность технически) ваших данных в заданной пространственной задержке. Когда вы применяете линейное преобразование к своим данным, я не верю, что вы измените дисперсию, и поэтому вы не должны видеть, что из модели вариограммы выходят разные параметры. Вместо этого ваша кригедная поверхность просто приобретает другое среднее значение.

p.s. Было бы полезно сделать код тем, что любой может скопировать и вставить - например, включить кодированные тестовые данные.

+0

Данные предоставляются. –

+0

Я понимаю, что он изменяет вариограмму. Вот моя логика: неподвижная переменная имела бы ограниченную вариограмму, потому что дисперсия хорошо определена, т. Е. Ограничена с некоторым максимумом. Нестационарная переменная не имела бы ограниченной вариации, потому что в переменной была бы геопространственная тенденция. Таким образом, чтобы преобразовать нестационарную переменную в стационарную переменную, мы должны очернить, и для депрессии мы должны линейно преобразовать. – Candic3