Tugas Regspasp 10

Data Meuse

library(sp)
## Warning: package 'sp' was built under R version 4.5.3
library(sf)
## Warning: package 'sf' was built under R version 4.5.3
## Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUE
library(gstat)
## Warning: package 'gstat' was built under R version 4.5.3
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.2
## 
## 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(FNN)
## Warning: package 'FNN' was built under R version 4.5.3
library(fields)
## Warning: package 'fields' was built under R version 4.5.3
## Loading required package: spam
## Warning: package 'spam' was built under R version 4.5.3
## Spam version 2.11-4 (2026-05-28) is loaded.
## Type 'help( Spam)' or 'demo( spam)' for a short introduction 
## and overview of this package.
## Help for individual functions is also obtained by adding the
## suffix '.spam' to the function name, e.g. 'help( chol.spam)'.
## 
## Attaching package: 'spam'
## The following objects are masked from 'package:base':
## 
##     backsolve, forwardsolve
## Loading required package: viridisLite
## Warning: package 'viridisLite' was built under R version 4.5.2
## Loading required package: RColorBrewer
## Warning: package 'RColorBrewer' was built under R version 4.5.2
## 
## Try help(fields) to get started.
library(automap)
## Warning: package 'automap' was built under R version 4.5.3
## Registered S3 method overwritten by 'stars':
##   method                  from
##   st_interpolate_aw.stars sf
data(meuse)
# Melihat struktur data
str(meuse)
## 'data.frame':    155 obs. of  14 variables:
##  $ x      : num  181072 181025 181165 181298 181307 ...
##  $ y      : num  333611 333558 333537 333484 333330 ...
##  $ cadmium: num  11.7 8.6 6.5 2.6 2.8 3 3.2 2.8 2.4 1.6 ...
##  $ copper : num  85 81 68 81 48 61 31 29 37 24 ...
##  $ lead   : num  299 277 199 116 117 137 132 150 133 80 ...
##  $ zinc   : num  1022 1141 640 257 269 ...
##  $ elev   : num  7.91 6.98 7.8 7.66 7.48 ...
##  $ dist   : num  0.00136 0.01222 0.10303 0.19009 0.27709 ...
##  $ om     : num  13.6 14 13 8 8.7 7.8 9.2 9.5 10.6 6.3 ...
##  $ ffreq  : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
##  $ soil   : Factor w/ 3 levels "1","2","3": 1 1 1 2 2 2 2 1 1 2 ...
##  $ lime   : Factor w/ 2 levels "0","1": 2 2 2 1 1 1 1 1 1 1 ...
##  $ landuse: Factor w/ 15 levels "Aa","Ab","Ag",..: 4 4 4 11 4 11 4 2 2 15 ...
##  $ dist.m : num  50 30 150 270 380 470 240 120 240 420 ...
# Melihat beberapa baris pertama
head(meuse)
##        x      y cadmium copper lead zinc  elev       dist   om ffreq soil lime
## 1 181072 333611    11.7     85  299 1022 7.909 0.00135803 13.6     1    1    1
## 2 181025 333558     8.6     81  277 1141 6.983 0.01222430 14.0     1    1    1
## 3 181165 333537     6.5     68  199  640 7.800 0.10302900 13.0     1    1    1
## 4 181298 333484     2.6     81  116  257 7.655 0.19009400  8.0     1    2    0
## 5 181307 333330     2.8     48  117  269 7.480 0.27709000  8.7     1    2    0
## 6 181390 333260     3.0     61  137  281 7.791 0.36406700  7.8     1    2    0
##   landuse dist.m
## 1      Ah     50
## 2      Ah     30
## 3      Ah    150
## 4      Ga    270
## 5      Ah    380
## 6      Ga    470
# Ringkasan statistik
summary(meuse)
##        x                y             cadmium           copper      
##  Min.   :178605   Min.   :329714   Min.   : 0.200   Min.   : 14.00  
##  1st Qu.:179371   1st Qu.:330762   1st Qu.: 0.800   1st Qu.: 23.00  
##  Median :179991   Median :331633   Median : 2.100   Median : 31.00  
##  Mean   :180005   Mean   :331635   Mean   : 3.246   Mean   : 40.32  
##  3rd Qu.:180630   3rd Qu.:332463   3rd Qu.: 3.850   3rd Qu.: 49.50  
##  Max.   :181390   Max.   :333611   Max.   :18.100   Max.   :128.00  
##                                                                     
##       lead            zinc             elev             dist        
##  Min.   : 37.0   Min.   : 113.0   Min.   : 5.180   Min.   :0.00000  
##  1st Qu.: 72.5   1st Qu.: 198.0   1st Qu.: 7.546   1st Qu.:0.07569  
##  Median :123.0   Median : 326.0   Median : 8.180   Median :0.21184  
##  Mean   :153.4   Mean   : 469.7   Mean   : 8.165   Mean   :0.24002  
##  3rd Qu.:207.0   3rd Qu.: 674.5   3rd Qu.: 8.955   3rd Qu.:0.36407  
##  Max.   :654.0   Max.   :1839.0   Max.   :10.520   Max.   :0.88039  
##                                                                     
##        om         ffreq  soil   lime       landuse       dist.m      
##  Min.   : 1.000   1:84   1:97   0:111   W      :50   Min.   :  10.0  
##  1st Qu.: 5.300   2:48   2:46   1: 44   Ah     :39   1st Qu.:  80.0  
##  Median : 6.900   3:23   3:12           Am     :22   Median : 270.0  
##  Mean   : 7.478                         Fw     :10   Mean   : 290.3  
##  3rd Qu.: 9.000                         Ab     : 8   3rd Qu.: 450.0  
##  Max.   :17.000                         (Other):25   Max.   :1000.0  
##  NA's   :2                              NA's   : 1
# Melihat nama variabel
names(meuse)
##  [1] "x"       "y"       "cadmium" "copper"  "lead"    "zinc"    "elev"   
##  [8] "dist"    "om"      "ffreq"   "soil"    "lime"    "landuse" "dist.m"
# Memeriksa jumlah observasi
nrow(meuse)
## [1] 155
# Memeriksa koordinat
head(meuse[, c("x", "y")])
##        x      y
## 1 181072 333611
## 2 181025 333558
## 3 181165 333537
## 4 181298 333484
## 5 181307 333330
## 6 181390 333260
# Memeriksa variabel zinc
summary(meuse$zinc)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   113.0   198.0   326.0   469.7   674.5  1839.0
n <- nrow(meuse)
ggplot(meuse, aes(x = x, y = y)) +
  geom_point(
    aes(color = zinc),
    size = 2.5
  ) +
  scale_color_viridis_c() +
  labs(
    title = "Sebaran Kandungan Zinc pada Dataset Meuse",
    x = "Koordinat X",
    y = "Koordinat Y",
    color = "Zinc"
  ) +
  theme_minimal()

# Membuat salinan data
meuse_sp <- meuse
# Mengubah menjadi objek spasial
coordinates(meuse_sp) <- ~x+y
# Menentukan sistem koordinat
proj4string(meuse_sp) <- CRS("+init=epsg:28992")
## Warning in CPL_crs_from_input(x): GDAL Message 1: +init=epsg:XXXX syntax is
## deprecated. It might return a CRS with a non-EPSG compliant axis order. Further
## messages of this type will be suppressed.
# Memeriksa objek spasial
meuse_sp
##          coordinates cadmium copper lead zinc   elev       dist   om ffreq soil
## 1   (181072, 333611)    11.7     85  299 1022  7.909 0.00135803 13.6     1    1
## 2   (181025, 333558)     8.6     81  277 1141  6.983 0.01222430 14.0     1    1
## 3   (181165, 333537)     6.5     68  199  640  7.800 0.10302900 13.0     1    1
## 4   (181298, 333484)     2.6     81  116  257  7.655 0.19009400  8.0     1    2
## 5   (181307, 333330)     2.8     48  117  269  7.480 0.27709000  8.7     1    2
## 6   (181390, 333260)     3.0     61  137  281  7.791 0.36406700  7.8     1    2
## 7   (181165, 333370)     3.2     31  132  346  8.217 0.19009400  9.2     1    2
## 8   (181027, 333363)     2.8     29  150  406  8.490 0.09215160  9.5     1    1
## 9   (181060, 333231)     2.4     37  133  347  8.668 0.18461400 10.6     1    1
## 10  (181232, 333168)     1.6     24   80  183  9.049 0.30970200  6.3     1    2
## 11  (181191, 333115)     1.4     25   86  189  9.015 0.31511600  6.4     1    2
## 12  (181032, 333031)     1.8     25   97  251  9.073 0.22812300  9.0     1    1
## 13  (180874, 333339)    11.2     93  285 1096  7.320 0.00000000 15.4     1    1
## 14  (180969, 333252)     2.5     31  183  504  8.815 0.11393200  8.4     1    1
## 15  (181011, 333161)     2.0     27  130  326  8.937 0.16833600  9.1     1    1
## 16  (180830, 333246)     9.5     86  240 1032  7.702 0.00000000 16.2     1    1
## 17  (180763, 333104)     7.0     74  133  606  7.160 0.01222430 16.0     1    1
## 18  (180694, 332972)     7.1     69  148  711  7.100 0.01222430 16.0     1    1
## 19  (180625, 332847)     8.7     69  207  735  7.020 0.00000000 13.7     1    1
## 20  (180555, 332707)    12.9     95  284 1052  6.860 0.00000000 14.8     1    1
## 21  (180642, 332708)     5.5     53  194  673  8.908 0.07034680 10.2     1    1
## 22  (180704, 332717)     2.8     35  123  402  8.990 0.09751360  7.2     1    1
## 23  (180704, 332664)     2.9     35  110  343  8.830 0.11393200  7.2     1    1
## 24  (181153, 332925)     1.7     24   85  218  9.020 0.34232100  7.0     1    2
## 25  (181147, 332823)     1.4     26   75  200  8.976 0.38580400  6.9     1    2
## 26  (181167, 332778)     1.5     22   76  194  8.973 0.42928900  6.3     1    2
## 27  (181008, 332777)     1.3     27   73  207  8.507 0.31511600  5.6     1    2
## 28  (180973, 332687)     1.3     24   67  180  8.743 0.32057400  4.4     1    2
## 29  (180916, 332753)     1.8     22   87  240  8.973 0.24986300  5.3     1    2
## 30  (181352, 332946)     1.5     21   65  180  9.043 0.48906400  4.8     1    2
## 31  (181133, 332570)     1.3     29   78  208  8.688 0.47277800  2.6     1    2
## 32  (180878, 332489)     1.3     21   64  198  8.727 0.28795700  1.0     1    2
## 33  (180829, 332450)     2.1     27   77  250  8.328 0.27162200  2.4     1    2
## 34  (180954, 332399)     1.2     26   80  192  7.971 0.38580700  1.9     1    2
## 35  (180956, 332318)     1.6     27   82  213  7.809 0.41841700  3.1     1    2
## 37  (180710, 332330)     3.0     32   97  321  6.986 0.24447400  1.6     1    2
## 38  (180632, 332445)     5.8     50  166  569  7.756 0.13570900  3.5     1    2
## 39  (180530, 332538)     7.9     67  217  833  7.784 0.04849650  8.1     1    1
## 40  (180478, 332578)     8.1     77  219  906  7.000 0.00000000  7.9     1    1
## 41  (180383, 332476)    14.1    108  405 1454  6.920 0.00135803  9.5     1    1
## 42  (180494, 332330)     2.4     32  102  298  7.516 0.13570900  1.4     1    2
## 43  (180561, 332193)     1.2     21   48  167  8.180 0.26622000   NA     1    2
## 44  (180451, 332175)     1.7     22   65  176  8.694 0.21184300   NA     1    2
## 45  (180410, 332031)     1.3     21   62  258  9.280 0.32057200  2.0     1    2
## 46  (180355, 332299)     4.2     51  281  746  7.940 0.08122200  5.1     1    2
## 47  (180292, 332157)     4.3     50  294  746  6.360 0.19008600  5.3     1    2
## 48  (180283, 332014)     3.1     38  211  464  7.780 0.28794100  4.5     1    2
## 49  (180282, 331861)     1.7     26  135  365  8.180 0.42382600  4.9     1    2
## 50  (180270, 331707)     1.7     24  112  282  9.420 0.55428900  4.5     1    2
## 51  (180199, 331591)     2.1     32  162  375  8.867 0.60322500  5.5     1    2
## 52  (180135, 331552)     1.7     24   94  222  8.292 0.61407100  3.4     1    2
## 53  (180237, 332351)     8.2     47  191  812  8.060 0.00135803 11.1     1    1
## 54  (180103, 332297)    17.0    128  405 1548  7.980 0.00000000 12.3     1    1
## 55  (179973, 332255)    12.0    117  654 1839  7.900 0.00543210 16.5     1    1
## 56  (179826, 332217)     9.4    104  482 1528  7.740 0.00543210 13.9     1    1
## 57  (179687, 332161)     8.2     76  276  933  7.552 0.00543210  8.1     1    1
## 58  (179792, 332035)     2.6     36  180  432  7.760 0.14657800  3.1     1    1
## 59  (179902, 332113)     3.5     34  207  550  6.740 0.13568400  5.8     1    1
## 60  (180100, 332213)    10.9     90  541 1571  6.680 0.07033330 10.2     1    1
## 61  (179604, 332059)     7.3     80  310 1190  7.400 0.04848310 12.0     1    1
## 62  (179526, 331936)     9.4     78  210  907  7.440 0.00543210 14.1     1    1
## 63  (179495, 331770)     8.3     77  158  761  7.360 0.00543210 14.5     1    1
## 64  (179489, 331633)     7.0     65  141  659  7.200 0.03166630 14.8     1    1
## 65  (179414, 331494)     6.8     66  144  643  7.220 0.01222430 13.3     1    1
## 66  (179334, 331366)     7.4     72  181  801  7.360 0.01222430 15.2     1    1
## 67  (179255, 331264)     6.6     75  173  784  5.180 0.03733950 11.4     1    1
## 69  (179470, 331125)     7.8     75  399 1060  5.800 0.21184600  9.0     1    1
## 75  (179692, 330933)     0.7     22   45  119  7.640 0.45103700  3.6     1    1
## 76  (179852, 330801)     3.4     55  325  778  6.320 0.57587700  6.9     1    1
## 79  (179140, 330955)     3.9     47  268  703  5.760 0.07568690  7.0     1    1
## 80  (179128, 330867)     3.5     46  252  676  6.480 0.12481000  6.2     1    1
## 81  (179065, 330864)     4.7     55  315  793  6.480 0.10302400  6.5     1    1
## 82  (179007, 330727)     3.9     49  260  685  6.320 0.15746900  5.7     1    1
## 83  (179110, 330758)     3.1     39  237  593  6.320 0.20097600  7.0     1    1
## 84  (179032, 330645)     2.9     45  228  549  6.160 0.20097600  7.3     1    1
## 85  (179095, 330636)     3.9     48  241  680  6.560 0.26622000  8.2     1    1
## 86  (179058, 330510)     2.7     36  201  539  6.900 0.29883500  4.3     1    1
## 87  (178810, 330666)     2.5     36  204  560  7.540 0.08122470  4.4     1    1
## 88  (178912, 330779)     5.6     68  429 1136  6.420 0.07035500  8.2     1    1
## 89  (178981, 330924)     9.4     88  462 1383  6.280 0.01222430  8.5     1    1
## 90  (179076, 331005)    10.8     85  333 1161  6.340 0.00000000  9.6     1    1
## 123 (180151, 330353)    18.1     76  464 1672  7.307 0.05377230 17.0     1    1
## 160 (179211, 331175)     6.3     63  159  765  5.700 0.05936620 12.8     1    1
## 163 (181118, 333214)     2.1     32  116  279  7.720 0.21184300  5.9     1    2
## 70  (179474, 331304)     1.8     25   81  241  7.932 0.12481000  2.9     2    2
## 71  (179559, 331423)     2.2     27  131  317  7.820 0.12481000  4.5     2    1
## 91  (179022, 330873)     2.8     36  216  545  8.575 0.09215160 10.7     2    1
## 92  (178953, 330742)     2.4     41  145  505  8.536 0.11394100  9.4     2    1
## 93  (178875, 330516)     2.6     33  163  420  8.504 0.17921600  9.0     2    1
## 94  (178803, 330349)     1.8     27  129  332  8.659 0.23359600  7.0     2    1
## 95  (179029, 330394)     2.0     38  148  400  7.633 0.33686100  6.5     2    1
## 96  (178605, 330406)     2.7     37  214  553  8.538 0.07035500  9.4     2    1
## 97  (178701, 330557)     2.7     34  226  577  7.680 0.05936620 10.2     2    1
## 98  (179547, 330245)     0.9     19   54  155  7.564 0.25534100  6.4     2    1
## 99  (179301, 330179)     0.9     22   70  224  7.760 0.36406700  7.6     2    1
## 100 (179405, 330567)     0.4     26   73  180  7.653 0.42929500  7.0     2    1
## 101 (179462, 330766)     0.8     25   87  226  7.951 0.38032800  5.6     2    1
## 102 (179293, 330797)     0.4     22   76  186  8.176 0.24987400  6.5     2    1
## 103 (179180, 330710)     0.4     24   81  198  8.468 0.26621200  6.6     2    1
## 104 (179206, 330398)     0.4     18   68  187  8.410 0.45103700  5.9     2    1
## 105 (179618, 330458)     0.8     23   66  199  7.610 0.30971000  6.5     2    1
## 106 (179782, 330540)     0.4     22   49  157  7.792 0.29335900  6.4     2    1
## 108 (179980, 330773)     0.4     23   63  203  8.760 0.53235100  7.2     2    2
## 109 (180067, 331185)     0.4     23   48  143  9.879 0.61951300  6.6     2    3
## 110 (180162, 331387)     0.2     23   51  136  9.097 0.68472500  4.3     2    2
## 111 (180451, 331473)     0.2     18   50  117  9.095 0.80974200  5.3     2    3
## 112 (180328, 331158)     0.4     20   39  113  9.717 0.88038900  4.1     2    3
## 113 (180276, 330963)     0.2     22   48  130  9.924 0.74959100  6.1     2    3
## 114 (180114, 330803)     0.2     27   64  192  9.404 0.57575200  7.5     2    3
## 115 (179881, 330912)     0.4     25   84  240 10.520 0.58148400  8.8     2    3
## 116 (179774, 330921)     0.2     30   67  221  8.840 0.49452000  5.7     2    3
## 117 (179657, 331150)     0.2     23   49  140  8.472 0.32058000  6.1     2    3
## 118 (179731, 331245)     0.2     24   48  128  9.634 0.33685100  7.1     2    3
## 119 (179717, 331441)     0.2     21   56  166  9.206 0.24985200  4.1     2    2
## 120 (179446, 331422)     0.2     24   65  191  8.470 0.07568690  6.0     2    1
## 121 (179524, 331565)     0.2     21   84  232  8.463 0.07568690  6.6     2    1
## 122 (179644, 331730)     0.2     23   75  203  9.691 0.16285300  6.8     2    1
## 124 (180321, 330366)     3.7     53  250  722  8.704 0.09749160  9.1     2    2
## 125 (180162, 331837)     0.2     33   81  210  9.420 0.44014200  5.9     2    2
## 126 (180029, 331720)     0.2     22   72  198  9.573 0.46190000  4.9     2    2
## 127 (179797, 331919)     0.2     23   86  139  9.555 0.22270100  7.1     2    1
## 128 (179642, 331955)     0.2     25   94  253  8.779 0.10302400  8.1     2    1
## 129 (179849, 332142)     1.2     30  244  703  8.540 0.09213530  8.3     2    1
## 130 (180265, 332297)     2.4     47  297  832  8.809 0.04848840 10.0     2    1
## 131 (180107, 332101)     0.2     31   96  262  9.523 0.16833100  5.9     2    1
## 132 (180462, 331947)     0.2     20   56  142  9.811 0.38581000  5.0     2    2
## 133 (180478, 331822)     0.2     16   49  119  9.604 0.48906400  4.5     2    2
## 134 (180347, 331700)     0.2     17   50  152  9.732 0.57602000  5.4     2    2
## 135 (180862, 333116)     0.4     26  148  415  9.518 0.08121940  2.3     2    1
## 136 (180700, 332882)     1.6     34  162  474  9.720 0.03733690  7.5     2    1
## 161 (180201, 331160)     0.8     18   37  126  9.036 0.77169800  4.6     2    3
## 162 (180173, 331923)     1.2     23   80  210  9.528 0.33682900  5.8     2    2
## 137 (180923, 332874)     0.2     20   80  220  9.155 0.22812300  4.4     3    1
## 138 (180467, 331694)     0.2     14   49  133 10.080 0.59776100  4.4     3    2
## 140 (179917, 331325)     0.8     46   42  141  9.970 0.44558000  4.5     3    2
## 141 (179822, 331242)     1.0     29   48  158 10.136 0.39667500  5.2     3    2
## 142 (179991, 331069)     0.8     19   41  129 10.320 0.58147800  4.6     3    3
## 143 (179120, 330578)     1.2     31   73  206  9.041 0.28796600  6.9     3    1
## 144 (179034, 330561)     2.0     27  146  451  7.860 0.23359600  7.0     3    1
## 145 (179085, 330433)     1.5     29   95  296  8.741 0.36406700  5.4     3    1
## 146 (179236, 330046)     1.1     22   72  189  7.822 0.33145400  6.2     3    1
## 147 (179456, 330072)     0.8     20   51  154  7.780 0.21184600  5.0     3    1
## 148 (179550, 329940)     0.8     20   54  169  8.121 0.10302900  5.1     3    1
## 149 (179445, 329807)     2.1     29  136  403  8.231 0.07035500  8.1     3    1
## 150 (179337, 329870)     2.5     38  170  471  8.351 0.14657600  8.0     3    1
## 151 (179245, 329714)     3.8     39  179  612  7.300 0.05377230  8.8     3    1
## 152 (179024, 329733)     3.2     35  200  601  7.536 0.11928600  9.3     3    1
## 153 (178786, 329822)     3.1     42  258  783  7.706 0.09214350  8.4     3    1
## 154 (179135, 329890)     1.5     24   93  258  8.070 0.24986300  7.7     3    1
## 155 (179030, 330082)     1.2     20   68  214  8.226 0.37494000  5.7     3    1
## 156 (179184, 330182)     0.8     20   49  166  8.128 0.42383700  4.7     3    1
## 157 (179085, 330292)     3.1     39  173  496  8.577 0.42383700  9.1     3    1
## 158 (178875, 330311)     2.1     31  119  342  8.429 0.27709000  6.5     3    1
## 159 (179466, 330381)     0.8     21   51  162  9.406 0.35860600  5.7     3    1
## 164 (180627, 330190)     2.7     27  124  375  8.261 0.01222430  5.5     3    3
##     lime landuse dist.m
## 1      1      Ah     50
## 2      1      Ah     30
## 3      1      Ah    150
## 4      0      Ga    270
## 5      0      Ah    380
## 6      0      Ga    470
## 7      0      Ah    240
## 8      0      Ab    120
## 9      0      Ab    240
## 10     0       W    420
## 11     0      Fh    400
## 12     0      Ag    300
## 13     1       W     20
## 14     0      Ah    130
## 15     0      Ah    220
## 16     1       W     10
## 17     1       W     10
## 18     1       W     10
## 19     1       W     10
## 20     1    <NA>     10
## 21     1      Am     80
## 22     1      Am    140
## 23     1      Ag    160
## 24     0      Ah    440
## 25     0       W    490
## 26     0       W    530
## 27     0      Ab    400
## 28     0      Ag    400
## 29     0      Ah    330
## 30     0      Ag    630
## 31     0       B    570
## 32     0      Ag    390
## 33     0      Ah    360
## 34     0       B    500
## 35     0       B    550
## 37     0      Ab    340
## 38     0      Ab    210
## 39     1      Am     60
## 40     1       W     10
## 41     1       W     20
## 42     0      Am    170
## 43     0      Ga    320
## 44     0       W    260
## 45     0      Ah    360
## 46     0      Ah    100
## 47     0      Am    200
## 48     0      Ah    320
## 49     0      Ah    480
## 50     0      Bw    660
## 51     0      Bw    690
## 52     0      Ab    710
## 53     1      Ah     10
## 54     1       W     10
## 55     1       W     10
## 56     1       W     10
## 57     1       W     20
## 58     0      Fw    200
## 59     0      Fw    140
## 60     1      Fw     70
## 61     1       W     20
## 62     1       W     10
## 63     1      Fw     10
## 64     1       W     20
## 65     1      Ah     10
## 66     1       W     20
## 67     1       W     20
## 69     0      Ah    270
## 75     1      Fw    560
## 76     0      Bw    750
## 79     1      Ab     80
## 80     1      Ab    130
## 81     0       W    110
## 82     0       W    200
## 83     1      Ah    260
## 84     0       W    270
## 85     0       W    320
## 86     0      Ah    360
## 87     1      Am     80
## 88     1       W    100
## 89     1       W     70
## 90     1       W     20
## 123    1       W     50
## 160    1       W     80
## 163    0       W    290
## 70     1      Ah    160
## 71     0       W    160
## 91     0       W    140
## 92     0       W    150
## 93     0      Ah    220
## 94     0      Am    280
## 95     1      Am    450
## 96     1      Am     70
## 97     0      Am     70
## 98     0       W    340
## 99     0       W    470
## 100    0      Am    630
## 101    0      Am    460
## 102    0      Am    320
## 103    0      Ah    320
## 104    0       W    540
## 105    0       W    420
## 106    0     SPO    380
## 108    0       W    500
## 109    0      Am    760
## 110    0      Ah    750
## 111    0      Fw   1000
## 112    0      Ah    860
## 113    0      Ah    680
## 114    0      Fw    500
## 115    0     STA    650
## 116    0     DEN    630
## 117    0      Fw    410
## 118    0      Ah    390
## 119    0      Ah    310
## 120    0      Ah     70
## 121    0       W     70
## 122    1     STA    150
## 124    0      Bw     80
## 125    0      Ah    450
## 126    0      Aa    530
## 127    0       W    240
## 128    1      Tv     70
## 129    0      Fw     70
## 130    0      Ah     60
## 131    0      Ah    190
## 132    0      Ah    450
## 133    0      Am    550
## 134    0      Am    650
## 135    0      Am    100
## 136    0       W    170
## 161    1      Ah    860
## 162    0       W    410
## 137    0      Aa    290
## 138    0      Am    680
## 140    0      Am    540
## 141    0      Am    480
## 142    0       W    720
## 143    0       W    380
## 144    0       W    310
## 145    0      Ah    430
## 146    0      Ah    370
## 147    0      Fw    290
## 148    0       W    150
## 149    0      Bw     70
## 150    0      Bw    220
## 151    0       W     80
## 152    0       W    120
## 153    0      Ah    120
## 154    0      Am    260
## 155    0      Ah    440
## 156    0      Am    540
## 157    0      Ah    520
## 158    0      Ah    350
## 159    0       W    460
## 164    0       W     40
plot(
  meuse_sp,
  pch = 19,
  col = "blue",
  main = "Lokasi Pengamatan Meuse"
)

Closet Observation

# Menyiapkan koordinat dan nilai
koordinat <- as.matrix(meuse[, c("x", "y")])
nilai <- meuse$zinc

# Cross Validation Closest Observation
pred_closest <- numeric(nrow(meuse))

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

  data_train <- koordinat[-i, ]
  data_test <- koordinat[i, , drop = FALSE]

  jarak <- spDistsN1(
    data_train,
    data_test,
    longlat = FALSE
  )

  indeks <- which.min(jarak)

  pred_closest[i] <- nilai[-i][indeks]
}

# Menghitung RMSE
rmse_closest <- sqrt(
  mean((nilai - pred_closest)^2)
)

rmse_closest
## [1] 309.9685

Nearest Neighbor (NN)

# Cross Validation Nearest Neighbor
pred_nn <- numeric(nrow(meuse))

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

  data_train <- koordinat[-i, ]
  data_test <- koordinat[i, , drop = FALSE]

  hasil_nn <- get.knnx(
    data = data_train,
    query = data_test,
    k = 1
  )

  pred_nn[i] <- nilai[-i][hasil_nn$nn.index[1]]
}

# Menghitung RMSE
rmse_nn <- sqrt(
  mean((nilai - pred_nn)^2)
)

rmse_nn
## [1] 309.9685

Inverse Distance Weighting (IDW)

# Cross Validation IDW
cv_idw <- krige.cv(
  zinc ~ 1,
  locations = meuse_sp,
  nfold = nrow(meuse_sp),
  set = list(idp = 2)
)

# Mengambil hasil prediksi
pred_idw <- cv_idw$var1.pred

# Menghitung RMSE
rmse_idw <- sqrt(
  mean((cv_idw$observed - pred_idw)^2)
)

rmse_idw
## [1] 278.2734

Ensemble (CO + IDW + TPS)

TPS

# TPS - Leave One Out Cross Validation
pred_tps <- numeric(n)

for (i in 1:n) {
  data_train <- meuse[-i, ]
  data_test <- meuse[i, ]

  model_tps <- Tps(
    x = as.matrix(data_train[, c("x", "y")]),
    Y = data_train$zinc
  )

  pred_tps[i] <- predict(
    model_tps,
    as.matrix(data_test[, c("x", "y")])
  )
}

rmse_tps <- sqrt(mean((nilai - pred_tps)^2))

rmse_tps
## [1] 219.5513

(CO + IDW + TPS)

# Ensemble CO + IDW + TPS
pred_ensemble <- (pred_closest + pred_idw + pred_tps) / 3

rmse_ensemble <- sqrt(mean((nilai - pred_ensemble)^2))

rmse_ensemble
## [1] 243.2628

Kriging

variogram empiris

# Variogram empiris
variogram_emp <- variogram(zinc ~ 1, meuse_sp)

# Menampilkan variogram
plot(variogram_emp, main = "Variogram Empiris Zinc")

Model variogram teoretis

# Fitting variogram spherical
variogram_model <- fit.variogram(
  variogram_emp,
  model = vgm(
    psill = var(meuse$zinc) * 0.8,
    model = "Sph",
    range = 1000,
    nugget = var(meuse$zinc) * 0.2
  )
)

# Melihat parameter variogram
variogram_model
##   model     psill    range
## 1   Nug  24802.25   0.0000
## 2   Sph 134746.19 831.0006
# Grafik hasil fitting
plot(
  variogram_emp,
  variogram_model,
  main = "Fitting Variogram Spherical"
)

Ordinary Kriging

# Membuat grid prediksi
grid <- spsample(
  meuse_sp,
  type = "regular",
  n = 5000
)

gridded(grid) <- TRUE

# Ordinary Kriging
hasil_kriging <- krige(
  zinc ~ 1,
  locations = meuse_sp,
  newdata = grid,
  model = variogram_model
)
## [using ordinary kriging]
# Visualisasi hasil
spplot(
  hasil_kriging["var1.pred"],
  main = "Hasil Interpolasi Ordinary Kriging"
)

Cros validation

# Cross Validation Ordinary Kriging
cv_kriging <- krige.cv(
  zinc ~ 1,
  locations = meuse_sp,
  model = variogram_model,
  nfold = nrow(meuse_sp)
)

# Melihat hasil cross validation
head(cv_kriging)
##        coordinates var1.pred var1.var observed      residual        zscore fold
## 1 (181072, 333611)  890.6839 61750.57     1022  131.31609515  0.5284421708    1
## 2 (181025, 333558)  868.8741 59924.83     1141  272.12588996  1.1116458205    2
## 3 (181165, 333537)  661.2549 60458.08      640  -21.25486700 -0.0864432753    3
## 4 (181298, 333484)  465.7935 72132.18      257 -208.79351443 -0.7774142328    4
## 5 (181307, 333330)  268.9063 58751.45      269    0.09372075  0.0003866575    5
## 6 (181390, 333260)  235.0768 73390.71      281   45.92324761  0.1695165304    6

RMSE KRINGING

# Menghitung RMSE
pred_kriging <- cv_kriging$var1.pred

rmse_kriging <- sqrt(
  mean((cv_kriging$observed - pred_kriging)^2)
)

rmse_kriging
## [1] 224.7897

Visualisasi hasil Cross Validation

# Data aktual dan prediksi
data_cv <- data.frame(
  Aktual = cv_kriging$observed,
  Prediksi = cv_kriging$var1.pred
)

# Scatter plot
ggplot(data_cv, aes(x = Aktual, y = Prediksi)) +
  geom_point() +
  geom_abline(slope = 1, intercept = 0, linetype = "dashed") +
  labs(
    title = "Aktual vs Prediksi Ordinary Kriging",
    x = "Nilai Aktual Zinc",
    y = "Nilai Prediksi Zinc"
  ) +
  theme_minimal()

Perbandingan RMSE

# Tabel perbandingan RMSE
hasil_rmse <- data.frame(
  Metode = c(
    "Closest Observation",
    "Nearest Neighbor",
    "IDW",
    "Ensemble (CO + IDW + TPS)",
    "Ordinary Kriging"
  ),
  RMSE = c(
    rmse_closest,
    rmse_nn,
    rmse_idw,
    rmse_ensemble,
    rmse_kriging
  )
)

# Mengurutkan dari RMSE terkecil
hasil_rmse <- hasil_rmse[order(hasil_rmse$RMSE), ]

# Menampilkan hasil
print(hasil_rmse)
##                      Metode     RMSE
## 5          Ordinary Kriging 224.7897
## 4 Ensemble (CO + IDW + TPS) 243.2628
## 3                       IDW 278.2734
## 1       Closest Observation 309.9685
## 2          Nearest Neighbor 309.9685

Kesimpulan

Hasil perbandingan RMSE menggunakan Leave-One-Out Cross Validation (LOOCV), Ordinary Kriging merupakan metode interpolasi terbaik dengan nilai RMSE terkecil sebesar 224,7897. Selanjutnya, Ensemble (CO + IDW + TPS) memperoleh RMSE sebesar 243,2628, IDW sebesar 278,2734, serta Closest Observation dan Nearest Neighbor masing-masing sebesar 309,9685.

Ordinary Kriging menghasilkan prediksi paling akurat dibandingkan metode lainnya. Hal ini menunjukkan bahwa pemanfaatan struktur ketergantungan spasial melalui variogram mampu memberikan hasil interpolasi yang lebih baik pada meuse