forked from cultpenguin/mGstat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGoovaertsChap7_MG.m
180 lines (144 loc) · 4.24 KB
/
GoovaertsChap7_MG.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
% GoovaertsChap7_MG : MultiGaussian Approach
% read data
dwd=[mgstat_dir,filesep,'examples',filesep,'data',filesep,'jura',filesep];
[data,header]=read_eas([dwd,'transect.dat']);
x=data(:,1); % x data column
id=find(data(:,4)~=-99);
x_obs=data(id,1); % x data column
v_obs=data(id,4); % Cd data column
n_obs=length(id);
v_mean=mean(v_obs);
% RANK TRANSFORM
r_obs=rank_transform(v_obs);
% NORMAL SCORE TRANSFORMATION OF THE DATA
%[v_obs_nscore,normscore,d_obs,pk]=nscore(v_obs);
[v_obs_nscore,o_nscore]=nscore(v_obs);
w1=1;w2=1;dmin=0;dmax=5;
[v_obs_nscore1,o_nscore1]=nscore(v_obs,w1,w2,dmin,dmax);
v_mean_nscore=mean(v_obs_nscore);
% THE VARIOGRAM MODEL
V='0.3 Nug(0) + 0.30 Sph(0.2) + 0.26 Sph(1.3)';
Vnscore='0.3488 Nug(0) + 0.3488 Sph(0.2) + 0.3023 Sph(1.3)';
%% SK KRIGING OF NORMAL SCORES NAD ORIGINAL DATA
xu=[1.625 3.375 2.5 6]';
options.mean=v_mean_nscore;
keyboard
[v_est_nscore,v_var_nscore]=krig(x_obs,v_obs_nscore,xu,Vnscore,options);
optons.mean=v_mean;
[v_est,v_var]=krig(x_obs,v_obs,xu,V,options);
%% SK KRIGING OF WHOLE X_ARRAY
options.mean=v_mean_nscore;
[v2_est_nscore,v2_var_nscore]=krig(x_obs,v_obs_nscore,x,Vnscore,options);
options.mean=v_mean;
[v2_est,v2_var]=krig(x_obs,v_obs,x,V,options);
%v2_est_inscore=inscore(v2_est_nscore,normscore,v_obs);
v_est_inscore=inscore(v_est_nscore,o_nscore);
v2_est_inscore=inscore(v2_est_nscore,o_nscore1);
v2_var_inscore_m=inscore(v2_est_nscore-2.*v2_var_nscore,o_nscore1);
v2_var_inscore_p=inscore(v2_est_nscore+2.*v2_var_nscore,o_nscore1);
figure(1)
%% Figure 7.7
subplot(2,1,1);
plot(x_obs,v_obs,'k*',[min(x) max(x)],[1 1].*v_mean,'b-')
ax=axis;axis([min(x) max(x) -1 5])
ylabel('Data Value')
hold on
plot(xu,v_est,'go')
plot(x,v2_est,'g-','linewidth',2)
%plot(x,v2_est-2.*v2_var,'r-')
%plot(x,v2_est+2.*v2_var,'r-')
plot(xu,v_est_inscore,'ro')
plot(x,v2_est_inscore,'r-','linewidth',2)
%plot(x,v2_var_inscore_m,'g-')
%plot(x,v2_var_inscore_p,'g-')
hold off
for i=1:4
text(xu(i)+.08,v_est(i)+.3,num2str(i))
end
legend('OBS','MEAN','SK EST','SK','SK MG EST','SK MG')
subplot(2,1,2);
plot(x_obs,v_obs_nscore,'k*',[min(x) max(x)],[1 1].*0,'r-')
ax=axis;axis([min(x) max(x) ax(3) ax(4)])
ylabel('Normal Score Data Value')
hold on
plot(xu,v_est_nscore,'ro')
plot(x,v2_est_nscore,'r-')
hold off
for i=1:4
text(xu(i)+.07,v_est_nscore(i)+.3,num2str(i))
end
%print -dpng GoovaertsChap7_A
figure(2)
x_norm=[-3:.1:3];
for i=1:4
subplot(2,2,i);
p(i,:) = normcdf(x_norm,v_est_nscore(i),v_var_nscore(i));
plot(x_norm,p(i,:))
% x_norm_inscore=inscore(x_norm,normscore,v_obs);
% plot(x_norm_inscore,p(i,:))
title(num2str(i))
xlabel('X')
ylabel('CPDF')
grid on
end
suptitle('Normal Score CPDF')
print -dpng GoovaertsChap7_B
figure(3)
x_norm=[-3:.1:3];
for i=1:4
subplot(2,2,i);
x_norm_inscore=inscore(x_norm,o_nscore1);
%x_norm_inscore=inscore(x_norm,normscore,v_obs);
plot(x_norm_inscore,p(i,:))
title(num2str(i))
xlabel('X')
ylabel('CPDF')
grid on
end
suptitle('Posterior Probability')
print -dpng GoovaertsChap7_C
figure(4);
[v_obs_nscore,o_nscore]=nscore(v_obs);
w1=2;w2=.5;dmin=-4;dmax=6;
[v_obs_nscore1,o_nscore1]=nscore(v_obs,w1,w2,dmin,dmax);
w1=1;w2=1;dmin=0;dmax=5;
[v_obs_nscore2,o_nscore2]=nscore(v_obs,w1,w2,dmin,dmax);
plot(sort(o_nscore.d),o_nscore.pk,'k')
hold on
plot(sort(o_nscore1.d),o_nscore1.pk,'bd')
plot(sort(o_nscore2.d),o_nscore2.pk,'r*')
hold off
legend('No tails','w1=2,w2=0.5,dmin=-4dmax=6','w1=1,w2=1,dmin=0,dmax=5',2)
print -dpng GoovaertsChap7_E
figure(5)
x=[1 2 3 4 5];
d=[25,13,8,9,1];
[d_obs_nscore,o_nscore]=nscore(d);
plot(sort(d),o_nscore.pk,'-*')
xlabel('z, data values')
ylabel('Prob(Z<=z)')
axis([0 26 0 1])
print -dpng GoovaertsChap7_testA
figure(6)
subplot(1,2,1)
plot(sort(d),o_nscore.pk,'-*')
xlabel('z, data values')
ylabel('Prob(Z<=z)')
title('orig data')
axis([0 26 0 1])
subplot(1,2,2)
cpdf_norm=normcdf(x_norm,0,1);
plot(sort(d_obs_nscore),o_nscore.pk,'r*',x_norm,cpdf_norm,'k-');
legend('Normal Score Data','Gaussian CPDF, mean00, var=1',2)
xlabel('z, data values')
ylabel('Prob(Z<=z)')
title('normal score')
axis([-3 3 0 1])
print -dpng GoovaertsChap7_testA
figure(7)
x=linspace(0,30,100);
cpdf_norm=normcdf(x,mean(d),sqrt(var(d)));
plot(sort(d),o_nscore.pk,'-*',x,cpdf_norm,'k-')
legend('data','Best fitting Gaussian Model')
print -dpng GoovaertsChap7_Compare
return