GEOSTATISTIKA TG 3202
MODUL KE – 4
Estimasi Spasial dengan Simple dan Ordinary Kriging
Oleh:
Muhammad Ichsan 12117143
Asisten :
Oktaria Futri Ilham 12116089
Muhammad Fadhilah Harahap 12116084
Gita Rusmala 12116090
Helen Zetri 12116014
Adelia Gita Parera 12116123
Fira Pratiwi Darsono 12117151
Dita Aprilia Hutabalian 12116033
Safna Ramadhani 12116096
Mikha Parasian GT 12116042
Tujuan praktikum pada Modul 4. Estimasi Spasial dengan Simple dan Ordinary Kriging
antara lain, yaitu:
Memahami prosedur perhitungan gridding dengan Kriging.
Pada modul kali ini, pembahasannya untuk melakukan Estimasi Spasial dengan Simple
dan Ordinary Kriging. Metode kriging adalah teknik untuk mengoptimalisasi estimasi
suatu titik dengan menggunakan semivariogram dan sekumpulan data yang aktual.
Ordinary Kriging merupakan metode Geostatistika yang digunakan untuk memprediksi
data dari Lokasi tertentu. Pada metode tersebut mengira bahwa suatu variabel dari suatu
titik tertentu dapat dilakukan dengan cara mengamati data yang sejenis dari suatu
daerah. Tujuan dari metode Kriging yaitu menentan nilai faktor bobot untuk
meminimalkan variansi dari estimator. Selain itu, dalam Kriging dapat
memperhitungkan efek anisotropi, yaitu sesuatu yang tidak dapat dilakukan oleh
operator interpolasi lainnya. Maka dari itu, hasil dari Interpolasi kriging lebih unggul
dan lebih realistis dibandingkan dengan yang lainnya.
#Muhammad Ichsan 12117143
import numpy as np
from numpy.linalg import inv
#00_inisiasi data, menyimpan koordinat dalam array
data_obs = np.array([[0,0,20],[0,0,50],[0,0,30],[0,0,100]])
distance = [10,10,20,20]
#01 persamaan variogram teoritis
var =lambda L:50 * (1-np.exp(-3 * L/100))
#02 membentuk covariansi data_obs
N=4
C_left = np.zeros((N,N))
C_right = np.zeros((N,1))
C_0 = 50
for i in range (N):
for j in range (N):
if i == j:
C_left[i,j] = C_0
elif i == 0 :
L_left = [0,20,10,np.sqrt(500)]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 1 :
L_left = [20,0,np.sqrt(500),10]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 2 :
L_left = [10,np.sqrt(500),10,40]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 3 :
L_left = [np.sqrt(500),10,40,0]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
L_right = distance[i]
C_right [i,0] = C_0 - var(L_right)
#03 hitung Z_0 dengan ordinary kriging
lmda = inv(C_left@C_left.T)@C_left.T@C_right
lmda_0 = (1-np.sum(lmda))
z_0 = lmda_0 + np.sum(lmda*data_obs[:,2].reshape(N,1))
variansi = C_0 - np.sum(lmda*C_right)
print ('z_0 simple kriging:', z_0)
print('Variansi simple kriging:', variansi)
#04
C_left = np.hstack ((C_left, np.ones((N,1))))
C_left = np.vstack ((C_left, np.ones((1, N+1))))
C_left [-1,-1]=0
C_right = np.vstack((C_right,1))
lmda = inv (C_left@C_left.T)@C_left.T@C_right
lmda_0 = (1-np.sum(lmda[:-1,0]))
z_0 = lmda_0 +np.sum(lmda[:-1,0]*data_obs[:,2])
miu = lmda [-1,0]
variansi = C_0 - np.sum(lmda[:-1,0]*C_right[:-1,0]) - miu
print ('z_0 ordinary kriging:', z_0)
print('variansi ordinary kriging:', variansi)
• Script Soal 1B
#Muhammad Ichsan 12117143
import numpy as np
from numpy.linalg import inv
#00_inisiasi data, menyimpan koordinat dalam array
data_obs = np.array([[0,0,20],[0,0,50],[0,0,30],[0,0,100]])
distance = [10,10,20,20]
#01 persamaan variogram teoritis
var =lambda L:50 * (1-np.exp(-3 * L/100))
#02 membentuk covariansi data_obs
N=4
C_left = np.zeros((N,N))
C_right = np.zeros((N,1))
C_0 = 50
for i in range (N):
for j in range (N):
if i == j:
C_left[i,j] = C_0
elif i == 0 :
L_left = [0,20,10,30]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 1 :
L_left = [20,0,30,10]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 2 :
L_left = [10,30,10,40]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
elif i == 3 :
L_left = [30,10,40,0]
gamma = var(L_left[j])
C_left[i,j] = C_0 - gamma
L_right = distance[i]
C_right [i,0] = C_0 - var(L_right)
#03 hitung Z_0 dengan ordinary kriging
lmda = inv(C_left@C_left.T)@C_left.T@C_right
lmda_0 = (1-np.sum(lmda))
z_0 = lmda_0 + np.sum(lmda*data_obs[:,2].reshape(N,1))
variansi = C_0 - np.sum(lmda*C_right)
print ('z_0 simple kriging:', z_0)
print('Variansi simple kriging:', variansi)
#04
C_left = np.hstack ((C_left, np.ones((N,1))))
C_left = np.vstack ((C_left, np.ones((1, N+1))))
C_left [-1,-1]=0
C_right = np.vstack((C_right,1))
lmda = inv (C_left@C_left.T)@C_left.T@C_right
lmda_0 = (1-np.sum(lmda[:-1,0]))
z_0 = lmda_0 +np.sum(lmda[:-1,0]*data_obs[:,2])
miu = lmda [-1,0]
variansi = C_0 - np.sum(lmda[:-1,0]*C_right[:-1,0]) - miu
print ('z_0 ordinary kriging:', z_0)
print('variansi ordinary kriging:', variansi)
• Script Soal 2A
#Muhammad Ichsan 12117143
import numpy as np
import matplotlib.pyplot as plt
import pykrige.kriging_tools as kt
from pykrige.ok import OrdinaryKriging
from pykrige.uk import UniversalKriging
#00_Import data
data = np.loadtxt('data_magnetik.txt', skiprows = 1)
X = data [:, 0 ]
Y = data [:, 1 ]
T = data [:, 2 ]
#01_definisi grid UTM X dan UTM Y, yang ingin diinterpolasi
dx,dy = 20, 20
gridx = np.arange(X.min(), X.max(),dx)
gridy = np.arange(Y.min(), Y.max(),dy)
#02_melakukan interpolasi dengan menggunakan Ordinary Kriging
## variogram_model='linear', merupakan model variogram dapat diubah
OK = OrdinaryKriging(X,Y,T, variogram_model = 'hole-effect', verbose = Tr
ue,
enable_plotting = True)
z, ss = OK.execute('grid', gridx, gridy)
#03_Simpan titik interpolasi ke dalam ASCII data
kt.write_asc_grid(gridx, gridy, z, filename = "OKinterpolasi.asc")
#03_Ploting hasil interpolasi
plt.figure(1)
plt.imshow(z,cmap = 'jet', aspect = 'auto', origin = 'lower', extent = [X
.min(),X.max(), Y.min(), Y.max()])
plt.xlabel ('UTM X')
plt.ylabel ('UTM Y')
plt.colorbar (label = 'Tobs [mT]')
plt.show()
• Script Soal 2B
#Muhammad Ichsan 12117143
import numpy as np
import matplotlib.pyplot as plt
import pykrige.kriging_tools as kt
from pykrige.ok import OrdinaryKriging
from pykrige.uk import UniversalKriging
#00_Import data
data = np.loadtxt('data_magnetik.txt', skiprows=1)
X = data[:, 0]
Y = data[:, 1]
T = data[:, 2]
#01_definisi grid UTM X dan UTM Y, yang ingin di interpolasi
dx, dy = 20,20 #dx, dy merupakan lebar grid
gridx = np.arange(X.min(), X.max(), dx)
gridy = np.arange(Y.min(), Y.max(), dy)
#02_melakukan interpolasi dengan menggunakan Ordinary Kriging
## variogram_model = 'linear', merupakan model variogram dapat diubah
UK = UniversalKriging(X, Y, T, variogram_model='hole-effect',
drift_terms=['regional_hole-effect'],)
z, ss = UK.execute('grid', gridx, gridy)
#03_Simpan titik interpolasi kedalam ASCII data
kt.write_asc_grid(gridx, gridy, z, filename="OKInterpolasi.asc")
#03_Plotting hasil interpolasi
plt.figure(1)
plt.imshow(z,cmap='jet', aspect='auto', origin ='lower', extent=[X.min(),
X.max(), Y.min(), Y.max()])
plt.xlabel('UTM X')
plt.ylabel('UTM Y')
plt.colorbar(label='Tobs [mT]')
plt.show()
• Script Soal 3A
#Muhammad Ichsan 12117143
import numpy as np
import matplotlib.pyplot as plt
import pykrige.kriging_tools as kt
from pykrige.ok import OrdinaryKriging
from pykrige.uk import UniversalKriging
#00_Import data
data = np.loadtxt('data_magnetik2.txt', skiprows = 1)
X = data [:, 0 ]
Y = data [:, 1 ]
T = data [:, 2 ]
#01_definisi grid UTM X dan UTM Y, yang ingin diinterpolasi
dx,dy = 20, 20
gridx = np.arange(X.min(), X.max(),dx)
gridy = np.arange(Y.min(), Y.max(),dy)
#02_melakukan interpolasi dengan menggunakan Ordinary Kriging
## variogram_model='linear', merupakan model variogram dapat diubah
OK = OrdinaryKriging(X,Y,T, variogram_model = 'hole-effect', verbose = Tr
ue,
enable_plotting = True)
z, ss = OK.execute('grid', gridx, gridy)
#03_Simpan titik interpolasi ke dalam ASCII data
kt.write_asc_grid(gridx, gridy, z, filename = "OKinterpolasi.asc")
#03_Ploting hasil interpolasi
plt.figure(1)
plt.imshow(z,cmap = 'jet', aspect = 'auto', origin = 'lower', extent = [X
.min(),X.max(), Y.min(), Y.max()])
plt.xlabel ('UTM X')
plt.ylabel ('UTM Y')
plt.colorbar (label = 'Tobs [mT]')
plt.show()
• Script Soal 3B
#Muhammad Ichsan
import numpy as np
import matplotlib.pyplot as plt
import pykrige.kriging_tools as kt
from pykrige.ok import OrdinaryKriging
from pykrige.uk import UniversalKriging
#00_Import data
data = np.loadtxt('data_magnetik2.txt', skiprows=1)
X = data[:, 0] #load UTM X, ke variabel X
Y = data[:, 1] #load UTM Y, ke variabel Y
T = data[:, 2] #load UTM T, ke variabel T
#01_definisi grid UTM X dan UTM Y, yang ingin di interpolasi
dx, dy = 20,20 #dx, dy merupakan lebar grid
gridx = np.arange(X.min(), X.max(), dx)
gridy = np.arange(Y.min(), Y.max(), dy)
#02_melakukan interpolasi dengan menggunakan Ordinary Kriging
## variogram_model = 'linear', merupakan model variogram dapat diubah
UK = UniversalKriging(X, Y, T, variogram_model='hole-effect',
drift_terms=['regional_hole-effect'],)
z, ss = UK.execute('grid', gridx, gridy)
#03_Simpan titik interpolasi kedalam ASCII data
kt.write_asc_grid(gridx, gridy, z, filename="OKInterpolasi.asc")
#03_Plotting hasil interpolasi
plt.figure(1)
plt.imshow(z,cmap='jet', aspect='auto', origin ='lower', extent=[X.min(),
X.max(), Y.min(), Y.max()])
plt.xlabel('UTM X')
plt.ylabel('UTM Y')
plt.colorbar(label='Tobs [mT]')
plt.show()
• Output Soal 1A
• Output Soal 1B
• Output Soal 2A (Ordinary Kriging)
- Linear
- Gaussian
- Spherical
- Hole-Effect
Gambar 11. Variogram Model
- Linear
- Spherical
- Linear
Gambar 19. Variogram Model
- Power
- Gaussian
- Exponential
Gambar 27. Variogram Model
- Hole-Effect
- Linear
- Spherical
Analisis
Pada Soal nomor 1 dilakukan perbandingkan ketidakpastian antara konfigurasi (a) dan
(b) antara Simple dan Ordinary Kriging. Dengan menggunakan model eksponensial
sehingga terjadi peningkatan dalam semivariogram yang sangat curam dan mencapai
nilai sill secara asimtotik. Simple Kriging (SK) memiliki asumsi bahwa rata-rata (mean)
diketahui dan bernilai konstan sedangkan Ordinary Kriging (OK) memiliki asumsi
bahwa rata-rata (mean) tidak diketahui dan bernilai konstan. Hal inilah yang
menyebabkan error variance dari Ordinary Kriging lebih besar dibandingkan Simple
Kriging.
Pada soal 2 dilakukan analisa model variogram yang dihasilkan. Model variogram
tersebut berupa variogram Linear, Power, Gaussian, Spherical, Exponential, dan Hole-
Effect. Dari model variogram tersebut dipilih model linear sebagai model terbaik. Dari
penggunaan kriging baik Ordinary Kriging maupun Universal Kriging tidak menjadi
kendala dan menghasilkan interpolasi yang mirip. Hal ini dikarenakan data memiliki
kecenderungan trend yang cukup baik.
Pada soal 3 dilakukan analisa model variogram yang dihasilkan. Model variogram
tersebut berupa variogram Linear, Power, Gaussian, Spherical, Exponential, dan Hole-
Effect. Dari model variogram tersebut dipilih model hole-effect sebagai model terbaik.
Dari penggunaan kriging baik Ordinary Kriging maupun Universal Kriging tidak
menjadi kendala dan menghasilkan interpolasi yang mirip. Hal ini dikarenakan data
memiliki kecenderungan trend yang cukup baik. Data mempunyai kecenderungan
tertentu yaitu terdapat pola perubahan rata-rata seiring dengan berbedanya lokasi,
sehingga sifat second-order stationarity (stasioner orde dua) tidak berlaku.
V. Kesimpulan
Pada praktikum kali ini dapat diambil kesimpulan, yaitu:
1. Error variance dari Ordinary Kriging lebih besar dibandingkan Simple Kriging.
2. Simple Kriging (SK) memiliki asumsi bahwa rata-rata (mean) diketahui dan
bernilai konstan
3. Ordinary Kriging (OK) memiliki asumsi bahwa rata-rata (mean) tidak diketahui
dan bernilai konstan
4. Universal Kriging dapat diterapkan pada data yang mempunyai kecenderungan
trend tertentu atau data yang non-stasioner.
5. Hasil prediksi kriging lebih akurat daripada metode regresi.
DAFTAR PUSTAKA
Bailey, Kenneth D. (1994). Methods of Social Research. 4th ed. New York: The Free Press
SS SCRIPT SOAL 1A
SS SCRIPT SOAL 1B
SS SCRIPT SOAL 2A
SS SCRIPT SOAL 2B
SS SCRIPT SOAL 3A
SS SCRIPT SOAL 3B