#1. Persiapan data

# Memanggil package
library(sp)
## Warning: package 'sp' was built under R version 4.5.2
library(gstat)
## Warning: package 'gstat' was built under R version 4.5.3
library(nnet)
## Warning: package 'nnet' was built under R version 4.5.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
## Warning: package 'tidyr' was built under R version 4.5.3
# Memanggil data meuse
data(meuse)

# Mengambil variabel yang digunakan
data_meuse <- meuse[, c("x", "y", "zinc")]

# Memeriksa data
head(data_meuse)
##        x      y zinc
## 1 181072 333611 1022
## 2 181025 333558 1141
## 3 181165 333537  640
## 4 181298 333484  257
## 5 181307 333330  269
## 6 181390 333260  281
summary(data_meuse)
##        x                y               zinc       
##  Min.   :178605   Min.   :329714   Min.   : 113.0  
##  1st Qu.:179371   1st Qu.:330762   1st Qu.: 198.0  
##  Median :179991   Median :331633   Median : 326.0  
##  Mean   :180005   Mean   :331635   Mean   : 469.7  
##  3rd Qu.:180630   3rd Qu.:332463   3rd Qu.: 674.5  
##  Max.   :181390   Max.   :333611   Max.   :1839.0
# Memeriksa missing value
colSums(is.na(data_meuse))
##    x    y zinc 
##    0    0    0

A. Closest Observation

Menggunakan nilai zinc dari satu titik pengamatan yang memiliki jarak paling dekat dengan lokasi prediksi.

closest_obs <- function(train, test) {

  jarak <- sqrt(
    (train$x - test$x)^2 +
    (train$y - test$y)^2
  )

  indeks <- which.min(jarak)

  return(train$zinc[indeks])
}

B. Nearest Neighbor

Mengambil rata-rata nilai dari k titik terdekat

# Nearest Neighbor (k = 5)
prediksi_nn <- function(train, test, k = 5) {

  hasil <- numeric(nrow(test))

  for (i in 1:nrow(test)) {

    # Menghitung jarak Euclidean
    jarak <- sqrt(
      (train$x - test$x[i])^2 +
      (train$y - test$y[i])^2
    )

    # Mengambil indeks k titik terdekat
    indeks <- order(jarak)[1:k]

    # Menghitung rata-rata nilai zinc
    hasil[i] <- mean(train$zinc[indeks])
  }

  return(hasil)
}

Keterangan: - k = 5: menggunakan lima titik pengamatan terdekat. - order(jarak)[1:k]: mengambil indeks lima jarak terkecil. - mean(): menghitung rata-rata nilai zinc dari lima tetangga tersebut.

C. Inverse Distance Weighting (IDW)

IDW memberikan bobot lebih besar kepada titik pengamatan yang lebih dekat. Pada kode ini digunakan pangkat jarak \(p=2\).

prediksi_idw <- function(train, test) {

  train_sp <- train
  coordinates(train_sp) <- ~x+y

  test_sp <- test
  coordinates(test_sp) <- ~x+y

  hasil <- gstat::idw(
    zinc ~ 1,
    locations = train_sp,
    newdata = test_sp,
    idp = 2
  )

  return(as.numeric(hasil$var1.pred))
}

D. Ordinary Kriging

Kriging dilakukan dengan membentuk variogram eksperimental, kemudian menyesuaikan model variogram eksponensial.

prediksi_kriging <- function(train, test) {

  # Mengubah data training menjadi spatial object
  train_sp <- train
  coordinates(train_sp) <- ~x+y

  # Mengubah data testing menjadi spatial object
  test_sp <- test
  coordinates(test_sp) <- ~x+y

  # Menghitung varians data
  var_z <- var(train$zinc)

  # Menghitung jarak maksimum antar titik
  max_dist <- max(
    spDists(coordinates(train_sp))
  )

  # Menentukan parameter awal variogram
  range_awal <- max(max_dist / 3, 1)

  model_awal <- vgm(
    psill = 0.8 * var_z,
    model = "Exp",
    range = range_awal,
    nugget = 0.2 * var_z
  )

  # Membentuk variogram eksperimental
  variogram_exp <- variogram(
    zinc ~ 1,
    data = train_sp
  )

  # Fitting variogram
  model_fit <- tryCatch(
    fit.variogram(
      variogram_exp,
      model_awal,
      fit.method = 6
    ),
    error = function(e) NULL
  )

  # Memeriksa apakah hasil fitting valid
  valid <- FALSE

  if (!is.null(model_fit)) {

    model_non_nug <- model_fit[
      model_fit$model != "Nug",
    ]

    valid <- (
      nrow(model_non_nug) > 0 &&
      all(is.finite(model_fit$psill)) &&
      all(model_fit$psill >= 0) &&
      all(is.finite(model_non_nug$range)) &&
      all(model_non_nug$range > 0) &&
      !isTRUE(attr(model_fit, "singular"))
    )
  }

  # Jika fitting tidak valid, gunakan model awal
  if (!valid) {
    model_fit <- model_awal
  }

  # Ordinary Kriging
  hasil <- krige(
    zinc ~ 1,
    locations = train_sp,
    newdata = test_sp,
    model = model_fit
  )

  return(as.numeric(hasil$var1.pred))
}

E. Ensemble

Ensemble menggunakan rata-rata hasil prediksi dari tiga metode: Nearest Neighbor (k = 5) IDW (p = 2) Kriging (Ordinary Kriging)

prediksi_ensemble <- function(train, test) {

  hasil_nn <- prediksi_nn(train, test, k = 5)

  hasil_idw <- prediksi_idw(train, test)

  hasil_kriging <- prediksi_kriging(train, test)

  hasil <- (
    hasil_nn +
    hasil_idw +
    hasil_kriging
  ) / 3

  return(hasil)
}

#2. Cross Validation (LOOCV) Pada tahap ini, setiap satu titik pengamatan dijadikan data pengujian secara bergantian. Sementara itu, titik lainnya digunakan sebagai data training.

n <- nrow(data_meuse)

hasil_cv <- data.frame(
  Aktual = data_meuse$zinc,
  Closest_Observation = NA_real_,
  NN = NA_real_,
  IDW = NA_real_,
  Ensemble = NA_real_,
  Kriging = NA_real_
)

set.seed(123)

for (i in 1:n) {

  train <- data_meuse[-i, ]
  test <- data_meuse[i, , drop = FALSE]

  hasil_cv$Closest_Observation[i] <-
    closest_obs(train, test)

  hasil_cv$NN[i] <-
    prediksi_nn(train, test, k = 5)

  hasil_cv$IDW[i] <-
    prediksi_idw(train, test)

  hasil_cv$Kriging[i] <-
    prediksi_kriging(train, test)

  hasil_cv$Ensemble[i] <- mean(
    c(
      hasil_cv$NN[i],
      hasil_cv$IDW[i],
      hasil_cv$Kriging[i]
    )
  )

  if (i %% 10 == 0) {
    cat("Proses CV:", i, "dari", n, "\n")
  }
}
## [inverse distance weighted interpolation]
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(object, model, fit.sills = fit.sills, fit.ranges =
## fit.ranges, : singular model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 10 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 20 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 30 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 40 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 50 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 60 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 70 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 80 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 90 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 100 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 110 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 120 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 130 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(object, model, fit.sills = fit.sills, fit.ranges =
## fit.ranges, : No convergence after 200 iterations: try different initial
## values?
## [using ordinary kriging]
## Proses CV: 140 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## Proses CV: 150 dari 155 
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): No
## convergence after 200 iterations: try different initial values?
## Warning in fit.variogram(variogram_exp, model_awal, fit.method = 6): singular
## model in variogram fit
## [using ordinary kriging]
## [inverse distance weighted interpolation]
## [using ordinary kriging]
# Melihat hasil prediksi
head(hasil_cv)
##   Aktual Closest_Observation    NN      IDW Ensemble  Kriging
## 1   1022                1141 558.0 793.8598 767.0940 949.4222
## 2   1141                1022 702.0 727.3774 736.6329 780.5214
## 3    640                1022 634.4 605.2803 631.5304 654.9110
## 4    257                 640 511.6 477.0037 500.3030 512.3053
## 5    269                 281 269.2 368.8423 317.5397 314.5769
## 6    281                 269 248.8 347.1991 282.6059 251.8186

#3. Menghitung RMSE RMSE digunakan untuk mengetahui besarnya rata-rata kesalahan prediksi. Semakin kecil nilai RMSE, semakin baik hasil interpolasi berdasarkan ukuran kesalahan tersebut.

hitung_rmse <- function(aktual, prediksi) {
  sqrt(mean((aktual - prediksi)^2))
}

hasil_rmse <- data.frame(
  Metode = c(
    "Closest Observation",
    "Nearest Neighbor",
    "IDW",
    "Ensemble",
    "Kriging"
  ),

  RMSE = c(
    hitung_rmse(
      hasil_cv$Aktual,
      hasil_cv$Closest_Observation
    ),

    hitung_rmse(
      hasil_cv$Aktual,
      hasil_cv$NN
    ),

    hitung_rmse(
      hasil_cv$Aktual,
      hasil_cv$IDW
    ),

    hitung_rmse(
      hasil_cv$Aktual,
      hasil_cv$Ensemble
    ),

    hitung_rmse(
      hasil_cv$Aktual,
      hasil_cv$Kriging
    )
  )
)

hasil_rmse <- hasil_rmse %>%
  arrange(RMSE)

print(hasil_rmse)
##                Metode     RMSE
## 1             Kriging 233.5300
## 2            Ensemble 252.3520
## 3    Nearest Neighbor 263.9874
## 4                 IDW 278.2734
## 5 Closest Observation 309.9685

menentukan model terbaik

metode_terbaik <- hasil_rmse %>%
  slice_min(
    order_by = RMSE,
    n = 1
  )

print(metode_terbaik)
##    Metode   RMSE
## 1 Kriging 233.53

Berdasarkan hasil perbandingan lima metode interpolasi menggunakan Leave-One-Out Cross Validation (LOOCV), diperoleh bahwa metode Ordinary Kriging memiliki nilai RMSE terkecil sebesar 233,5300. Selanjutnya, metode Ensemble memperoleh RMSE sebesar 252,3520, Nearest Neighbor sebesar 263,9874, IDW sebesar 278,2734, dan Closest Observation sebesar 309,9685. Hasil tersebut menunjukkan bahwa Ordinary Kriging merupakan metode interpolasi dengan tingkat kesalahan prediksi paling rendah pada data zinc dalam dataset meuse. Dengan demikian, Ordinary Kriging menjadi metode terbaik berdasarkan kriteria RMSE pada pengujian ini.

Peta Hasil Interpolasi

ggplot(
  hasil_rmse,
  aes(
    x = reorder(Metode, RMSE),
    y = RMSE
  )
) +

  geom_col() +

  geom_text(
    aes(label = round(RMSE, 2)),
    hjust = -0.2
  ) +

  coord_flip() +

  labs(
    title = "Perbandingan RMSE Metode Interpolasi",
    x = "Metode Interpolasi",
    y = "RMSE"
  ) +

  theme_minimal()