Langsung ke konten utama

Natural Language Processing (NLP) Penerapan Stopwords Bahasa Indonesia dengan R: Topik Sepinya Jalur Pantura Akibat Adanya Tol Trans Jawa

Natural Language Processing : Stopwords Bahasa Indonesia dengan R Halo teman-teman, berjumpa lagi dengan blog sederhana ini. Pada pembahasan sebelumnya, kita telah bersama belajar penerapan stemming teks yang merupakan bagian dari Natural Language Processing (NLP) menggunakan R. Pada perjumpaan kali ini, kita akan melanjutkan perjuangan kita berbagi ilmu mengenai NLP, tepatnya adalah penerapan stopwords Bahasa Indonesia dengan R. Perlu diketahui bahwa di dalam NLP, untuk menambah keluasan dan mempertajam analisis teks, proses stemming teks saja belum cukup. Kita juga perlu membersihkan teks yang relatif atau mutlak tidak bermakna di dalam analisis teks. Biasanya teks yang dieliminasi dalam NLP merupakan kata penghubunga atau konjungsi, atau kata yang berupa ekspresi yang bercampur di dalam data teks, misalkan ekspresi tertawa "wkwk", ekspresi penolakan "gak, nggak, tidak, atau gk", bahasa asing (selain Indonesia), atau juga kata-kata yang tidak memenuhi kaidah ta

Pemodelan Geographically Weigthed Regression (GWR Model) menggunakan R

Geographically Weigthed Regression (GWR) dengan R

Halo teman-teman, kemarin kita telah sejenak break dari pemodelan dengan membahas fungsi sprintf() yang ada di R. Kali ini kita akan melanjutkan kembali pembahasan model-model statistik dengan R. Yang akan kita bahas kali ini adalah bagaimana menerapkan model Geographically Weigthed Regression atau biasa disingkat model GWR.

GWR merupakan sebuah model alternatif bila di dalam pemodelan regresi linier (dalam parameter) kita terganggu oleh asumsi heteroskedastisitas spasial atau asumsi homoskedastisitas residual model tidak terpenuhi. Mengapa disebut heteroskedastisitas spasial? Ya karena di dalam data kita terdiri atas amatan-amatan lokasi yang masing-masing memiliki variabel pembobot spasial dan di dalam praktiknya masing-masing lokasi ini ditunjukkan oleh posisi astronomis longitute dan latitude.

Kalau di model regresi Robust yang sebelumnya kita bahas, ia merupakan model alternatif bila residual modelnya terganggu asumsi normalitas dan atau heteroskedastisitas, tapi setiap amatannya bukan terdiri atas lokasi-lokasi amatan. Bila ternyata di dalam data kita memiliki lokasi-lokasi amatan yang ditunjukkan oleh longitude dan latitude, maka model GWR bisa juga menjadi alternatif model untuk analisis.

Baik, kita kembali ke model GWR. Bila di dalam model regresi dengan metode estimasi parameter Ordinary Least Square (OLS) hanya melihat pengaruh variabel independen terhadap variabel dependennya baik secara parsial maupun simultan, maka di model GWR kita dapat melihat seberapa besar pengaruh variabel independen terhadap variabel dependen di sebuah wilayah atau lokasi amatan dan seberapa besar pengaruh variabel independen seluruh lokasi terhadap variabel dependennya. Kalau diistilahkan, di dalam model GWR ini kita akan mengenal model lokal dan model global. Artinya, pada masing-masing lokasi atau wilayah akan memiliki model regresi GWR yang berbeda dan secara global juga memiliki sebuah model GWR.

Secara mendasar, karakteristik dari model GWR ini ditunjukkan oleh matriks pembobot dengan menggunakan beberapa teknik dengan menggunakan fungsi Kernel, yaitu fixed kernel Gaussian, adaptive kernel Gaussian, fixed kernel Bisquare, adaptive kernel Bisquare atau lainnya. Menurut Fotheringham et.al (2002), fungsi matriks pembobot ini memiliki bandwith (h) yang berbeda untuk setiap lokasi. Bandwith ini sebenarnya merupakan parameter penghalus non-negatif berbentuk lingkaran yang memiliki radius sebesar b dari titik pusat lokasi sebagai dasar penentuan bobot model regresi di setiap lokasi amatan. Dengan demikian, untuk pengamatan yang dekat dengan lokasi atau wilayah X misalkan, maka ia akan lebih berpengaruh terhadap pembentukan parameter lokasi atau wilayah X tersebut.

Dalam kasus model GWR, nilai bandwith yang kecil menyebabkan varians membesar sehingga diperlukan metode-metode bagaimana memilih bandwith sedemikian rupa sehingga mampu memperkecil varians. Sebab varians yang besar (tidak homogen) menyebabkan penduga parameter yang dihasilkan tidak akurat. Adapun metode pemilihan bandwith yang optimum ini ada beberapa, yaitu dengan berdasarkan nilai Cross Validation (CV), Akaike Information Criteria (AIC), General Cross Validation (GCV), atau Bayessian Information Criteria (BIC).

Secara matematis, bentuk model GWR secara umum dapat dituliskan sebagai berikut:

Bentuk umum model Geographically Weigthed Regression (GWR)

Baik, itu sekilas teori mengenai GWR teman-teman. Selanjutnya kita akan mempraktikkan bagaimana memodelkan GWR dengan R. Data yang akan kita gunakan dalam praktik kali ini adalah data mengenai jumlah kematian bayi, indeks ketersediaan pangan, dan jumlah persalinan yang dibantu tenaga kesehatan. Data tersebut bersumber dari Profil Kesehatan Jawa Timur dan kemeterian Pertanian tahun 2020 yang dapat teman-teman unduh pada tautan berikut. Setelah datanya telah siap, pemodelan GWR dapat mengikuti beberapa code berikut:

Code:

#Mengimport Data
library(readxl)
dataku <- read_excel("C:/Users/Joko Ade/Downloads/datagwr.xlsx")
#Sesuaikan dengan letak penyimpanan file

#melihat sekilas struktur data
str(dataku)

Hasil:

tibble [38 x 6] (S3: tbl_df/tbl/data.frame)
 $ Wilayah  : chr [1:38] "Pacitan" "Ponorogo" "Trenggalek" "Tulungagung" ...
 $ long     : num [1:38] 111 111 112 112 112 ...
 $ lat      : num [1:38] -8.13 -7.87 -8.18 -8.91 -8.1 ...
 $ JKB      : num [1:38] 62 139 38 158 115 163 86 174 338 117 ...
 $ IP       : num [1:38] 74.1 76.2 71.6 76.5 76.1 ...
 $ Salinakes: num [1:38] 6.55 10.62 8.99 14.3 15.52 ...

Code:

#Melakukan Seleksi data dan melihat ringkasan data
dataku <- dataku[,c(-1)]
summary(dataku)

#Mengattach data
attach(dataku)

Hasil:

      long            lat              JKB              IP          Salinakes     
 Min.   :111.1   Min.   :-8.912   Min.   :  6.0   Min.   :58.40   Min.   : 2.103  
 1st Qu.:112.0   1st Qu.:-7.971   1st Qu.: 44.5   1st Qu.:67.11   1st Qu.: 8.729  
 Median :112.5   Median :-7.712   Median : 96.0   Median :75.11   Median :14.629  
 Mean   :112.6   Mean   :-7.691   Mean   :101.8   Mean   :73.58   Mean   :15.062  
 3rd Qu.:113.1   3rd Qu.:-7.463   3rd Qu.:148.8   3rd Qu.:79.41   3rd Qu.:17.820  
 Max.   :114.4   Max.   :-6.895   Max.   :338.0   Max.   :90.11   Max.   :43.534

Code:

#Pemodelan regresi OLS
ols <- lm(JKB~IP+Salinakes)

#Ringkasan model OLS
summary(ols)

#Melihat AIC
AIC(ols)

Hasil:

Call:
lm(formula = JKB ~ IP + Salinakes)

Residuals:
     Min       1Q   Median       3Q      Max
-123.989  -32.292    1.592   29.144  105.588

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 210.3187    76.3647   2.754  0.00927 **
IP           -2.5151     1.0633  -2.365  0.02368 *  
Salinakes     5.0789     0.8212   6.184 4.42e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 49.12 on 35 degrees of freedom
Multiple R-squared:  0.5261,    Adjusted R-squared:  0.499
F-statistic: 19.42 on 2 and 35 DF,  p-value: 2.114e-06 

AIC: [1] 408.6804

Code:

#Uji Asumsi Normalitas Residual
ks.test(ols$residuals, ecdf(ols$residuals))
shapiro.test(residuals(ols))

#Uji Non Autokorelasi Residual
dwtest(ols)

#Uji Non Multikolinieritas Variabel Bebas Model
ols_vif_tol(ols)

#Uji Homoskedastisitas Residual Model
bptest(ols)

Hasil:

    One-sample Kolmogorov-Smirnov test

data:  ols$residuals
D = 0.026316, p-value = 1
alternative hypothesis: two-sided

    Shapiro-Wilk normality test

data:  residuals(ols)
W = 0.99049, p-value = 0.9836

    Durbin-Watson test

data:  ols
DW = 1.6189, p-value = 0.09199
alternative hypothesis: true autocorrelation is greater than 0

  Variables Tolerance      VIF
1        IP 0.9317424 1.073258
2 Salinakes 0.9317424 1.073258

    studentized Breusch-Pagan test

data:  ols
BP = 11.072, df = 2, p-value = 0.003943

Interpretasi: terlihat bahwa model regresi memenuhi semua uji asumsi klasik kecuali uji homoskedastisitas karena nilai p-value Breush-Pagan 0,0003943 atau < 0,05 (alpha penelitian), maka model GWR dapat menjadi alternatif bila setiap amatan kita adalah lokasi dengan memiliki data longitude dan latitude

Code:

#Karena Terganggu Heteroskedastisitas Opsi Lain Bisa Menggunakan GWR
#Install dan aktivasi beberapa package untuk pemodelan GWR
install.packages("spgwr")
install.packages("sp")
install.packages("spData")
library(spgwr)
library(sp)
library(spData)

#Pemodelan GWR
#Mencari Bandwith, misalkan Bisquare Adaptive
band_bidap <- gwr.sel(formula = JKB~IP+Salinakes, data = dataku,
                      coords = cbind(dataku$long, dataku$lat), adapt = TRUE, gweight = gwr.bisquare)

Hasil:

Adaptive q: 0.381966 CV score: 71986.42
Adaptive q: 0.618034 CV score: 85144.32
Adaptive q: 0.236068 CV score: 79166.29
Adaptive q: 0.3985704 CV score: 72813.99
Adaptive q: 0.3493846 CV score: 71763.77
Adaptive q: 0.3061015 CV score: 78009.31
Adaptive q: 0.3617677 CV score: 71361.09
Adaptive q: 0.3639216 CV score: 71345.02
Adaptive q: 0.3650074 CV score: 71341.32
Adaptive q: 0.3658301 CV score: 71340.32
Adaptive q: 0.3659504 CV score: 71340.29
Adaptive q: 0.3659911 CV score: 71340.29
Adaptive q: 0.3660318 CV score: 71340.3
Adaptive q: 0.3659911 CV score: 71340.29 ----> nilai bandwith yang digunakan 0,3659911

Code:

#pemodelan GWR
modelfix <- gwr(formula = JKB~IP+Salinakes, data = dataku,
                coords = cbind(dataku$long, dataku$lat), bandwidth = band_bidap,
                hatmatrix = TRUE)

#Pengecekan koefisien model
modelfix$lm$coefficients

#Mengecek signifikansi variabel dalam model
LMZ.F3GWR.test(modelfix)

Hasil:

(Intercept)          IP   Salinakes
 210.318714   -2.515098    5.078869

Leung et al. (2000) F(3) test

            F statistic Numerator d.f. Denominator d.f.     Pr(>)    
(Intercept)      5.9564        13.6357           24.734 6.602e-05 ***
IP               5.7204        12.0966           24.734 0.0001238 ***
Salinakes        3.4095        13.6284           24.734 0.0039280 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Interpretasi: terlihat seluruh variabel independen berpengaruh signifikan statistik terhadap variabel dependen

Code:

#Melihat AIC
modelfix$results[8]

Hasil:

$AICh
[1] 355.3489

Code:

#cek Anova modelnya perbandingan OLS dan GWR
#bila signifikan berarti model GWR lebih baik dari OLS
anova(modelfix)

#mencari nilai F tabel
qf(p = 0.05, df1 = anova(modelfix)[2,1], df2 = anova(modelfix)[3,1],
   lower.tail = FALSE)
#Jika nilai |F hitung| > F tabel tolak H0 artinya GWR lebih baik dari OLS
# Atau Mencari p-value nilai F Anova, jika < 0.05 tolak H0 artinya GWR lebih baik dari OLS
pf(q = anova(modelfix)[3,4], df1 = anova(modelfix)[2,1],
   df2 = anova(modelfix)[3,1], lower.tail = FALSE)

Hasil:

Analysis of Variance Table
                    Df Sum Sq Mean Sq F value
OLS Residuals    3.000  84451                
GWR Improvement 16.169  67176  4154.7        
GWR Residuals   18.831  17275   917.4  4.5289

Nilai F-Tabel: [1] 2.217443

Nilai p-value: [1] 0.00118195

Code:

#Selain itu uji model Global dapat dilakukan dengan uji F LMZ
LMZ.F1GWR.test(modelfix)

Hasil:

    Leung et al. (2000) F(1) test

data:  modelfix
F = 0.38019, df1 = 24.734, df2 = 35.000, p-value = 0.007164
alternative hypothesis: less
sample estimates:
SS OLS residuals SS GWR residuals
        84451.27         17274.95

Code:

#Melihat Intersep model lokal
modelfix$SDF$`(Intercept)`

#melihat Koefisien IP lokal
modelfix$SDF$IP

Hasil:

[1]  -165.493877  -109.437424  -158.089894 -1046.972846   -67.279399    20.705466   212.146159   483.523836
 [9]   555.629387   836.886416   552.258880   659.191891   487.971285   158.777521   137.298122   120.523552
[17]   111.351302     6.488024   -57.322304   -62.434970   -23.977988    68.010960   395.432418   244.031644
[25]   201.522895   150.840227   124.501058   259.844691   353.003696   -26.771901   -67.279399    86.833596
[33]   343.234161   156.035701   146.394134   -66.493632   162.328836    58.899471


[1]   2.00291333   1.42004407   2.23550425  16.07065781   1.33894888  -0.04054907  -2.36473580  -6.71981226
 [9]  -7.97684097 -11.37571776  -7.54229252  -8.63917298  -7.19002370  -1.92665900  -1.74410450  -1.46782969
[17]  -1.33347504   0.06484369   0.80541727   0.76526999   0.29533918  -0.72940634  -4.83500655  -3.08973403
[25]  -2.62090249  -2.14313147  -2.06405256  -4.44891112  -5.27246568   0.56831402   1.33894888  -0.77049139
[33]  -4.85706069  -1.97571435  -1.83141695   0.88599258  -2.16050614  -0.45529833


Oke, demikian sedikit pembahasan mengenai penerapan model Geographically Weigthed Regression (GWR) dengan R. Jangan lupa share dan bisa komentar bila ada pertanyaan di kolom komentar. Dan pastinya, simak dan ikuti terus unggahan-unggahan berikutnya dalam blog ini. Selamat mempraktikkan!

Komentar

Postingan populer dari blog ini

Pemodelan Autoregressive Integrated Moving Average (ARIMA Model) dengan R

ARIMA dengan R Jumpa lagi teman-teman, sebelumnya saya mohon maaf karena kemarin tidak sempat membuat unggahan terbaru di blog ini. Baik, sebelumnya kita telah mengulas tentang pemodelan Geographically Weigthed Regression (GWR) dengan R. Kali ini, kita akan melanjutkan belajar bersama mengenai pemodelan yang tak asing lagi dan populer hingga kini, yaitu pemodelan Autoregressive Integrated Moving Average (ARIMA). Kita akan membahas ARIMA secara langsung tanpa membahas AR dan MA secara tersendiri mengingat pada dasarnya ARIMA adalah model perpaduan antara model AR dengan order p , MA dengan order q dan aspek differencing dengan order d . Artinya, ketika kita mendengar istilah AR(1), maka sebenarnya itu adalah ARIMA(1, 0, 0), ketika kita mendengar ARI(1,1), maka aslinya itu ARIMA(1, 1, 0), atau bila mendengar MA(3), itu sebenarnya ARIMA(0, 0, 3) atau IMA(2,1) sebenarnya adalah ARIMA(0, 2, 1). Data runtun waktu atau time series merupakan salah satu jenis data yang hingga kini banyak digun

Machine Learning: Memahami Reinforcement Learning

Reinforcement Learning Halo teman-teman, pada pembahasan sebelumnya, kita telah berusaha memahami mengenai supervised learning dan unsupervised learning . Sebelum lanjut ke pemodelan statistik selanjutnya, ada baiknya kita membahas tentang satu lagi jenis algoritma machine learning yang akhir-akhir ini banyak digunakan dalam membentuk artificial intelligence (AI), yaitu algoritma reinforcement learning . Kita ke pengertian berdasarkan studi literatur daring ( online ) dulu teman-teman. Saya coba mengambil salah satu pengertian reinforcement learning, misalkan dari situsnya Algoritma, menyatakan bahwa reinforcement learning merupakan algoritma yang diterapkan untuk pembelajaran mesin ( machine learning ) sedemikian rupa sehingga dapat menentukan aksi yang tepat dan pada akhirnya sebuah program dapat bekerja secara otomatis memberikan hasil atau putusan yang benar. Lebih lanjut dalam situs algoritma mengangkat sebuah perumpamaan reinforcement learning dengan menggunakan proses penugasan

Machine Learning: Perbedaan Supervised Learning dan Unsupervised Learning

Perbedaan supervised learning dan unsupervised learning Halo teman-teman, kemarin kita telah mengawali bahasan mengenai salah satu anggota dari Machine Learning sekaligus merupakan contoh dari algoritma supervised learning , yaitu Naive Bayes Classifier (NBC). Akhir-akhir ini, dunia sains data dihebohkan dengan berbagai istilah statistik yang berkaitan erat dengan komputasi atau komputasi statistik, yaitu supervised learning dan unsupervised learning . Sebenarnya ada lagi istilah baru dan cukup makin sulit menyederhanakan definisinya, yaitu reinforcement learning , tapi khusus reinforcement learning nanti akan kita bahas tersendiri karena kita mulai bersinggungan dengan Artificial Intelligence atau kecerdasan buatan. Jujur, saya mengakui bahwa tidak semua dari kita memiliki latar belakang apalagi pakar teknologi informasi (IT). Sehingga, bila kita cermati bahasan-bahasan atau istilah komputasi statistik, sains data, atau data engineering , kita mungkin akan sejenak loading , bahkan s