Skip to content

jey-neutron/peramalan-exim-dengan-data-ais

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Tentang

Penelitian ini akan menggunakan data AIS sebagai sumber data baru. Data AIS yang digunakan merupakan data AIS yang dikirim kapal di wilayah Indonesia selama periode dua tahun (2019-2020). Kemudian data tersebut dilakukan preprocessing untuk menghilangkan noise dan mendapatkan data yang terkait dengan aktivitas ekspor impor. Untuk dapat meramalkan statistik ekspor impor bulanan, data AIS diagregasi menjadi indikator bulanan terkait ekspor impor. Beberapa indikator tersebut akan diseleksi sebagai variabel prediktor untuk meramalkan statistik ekspor dan impor Indonesia. Metode peramalan yang digunakan adalah metode Artificial Neural Network (ANN). Tuning parameter akan dilakukan untuk mendapatkan parameter model ANN yang optimal menggunakan random search. Hasil dengan model peramalan tersebut akan dibandingkan dengan metode peramalan tradisional menggunakan ARIMA. Error yang dihasilkan kedua model akan dihitung menggunakan RMSE dan MAPE. Model yang memiliki error terkecil akan dipilih sebagai model yang terbaik untuk meramalkan atau memprediksi nilai dan volume ekspor impor Indonesia.

Dalam folder Sourcecode+data terdapat data dan source code dalam bentuk file jupyter notebook yang digunakan dalam penyusunan skripsi "Pemanfaatan Data AIS dalam Pemodelan Nowcasting Statistik Ekspor Impor Indonesia".

Tahap pengumpulan data

Data statistik ekspor impor dikumpulkan dari web BPS (https://www.bps.go.id), sedangkan data AIS dikumpulkan dari database Geomesa dari penyedia data AIS exactEarth yang disediakan oleh UN Global Platform. Database tersebut dapat diakses melalui Jupyter Hub (https://location.officialstatistics.org) yang memerlukan akun UNGP 1.

Data AIS

File _1_tradeIndicatorsClass_Indonesia.ipynb merupakan source code untuk mengakses data AIS dan perlu dihubungkan dengan kernel PySpark Jupyter Hub di UNGP. Data AIS yang tersedia berukuran besar sehingga data tersebut langsung diolah disana. File ini juga akan membentuk indikator terkait ekspor impor dari data AIS, dengan sebelumnya melakukan preprocessing/filtering pada data AIS. Tahap filtering yang dilakukan yaitu:

  • Memfilter pesan AIS yang dikirim kapal di wilayah bounding box Indonesia pada rentang waktu tertentu
      # rentang waktu
      df = df.filter((F.col("dtg") > F.unix_timestamp(F.lit(startDate)).cast('timestamp')) & 
                     (F.col("dtg") < F.unix_timestamp(F.lit(endDate)).cast('timestamp')) )
      # filter bounding box
      filterExpr = "st_contains(st_makeBBox({0},{1},{2},{3}),position)".format(areaLongitude['lLim'], 
                                areaLatitude['lLim'], areaLongitude['uLim'], areaLatitude['uLim'])
      df = df.filter(F.expr(filterExpr))
  • Filter 1: MMSI kapal yang valid
      df = df.filter((df["mmsi"]>=100000000) & (df["mmsi"]<=999999999) )
  • Filter 2: kapal yang melakukan pelayaran
      df = aisClass.movingShips(df = df, latDiff = 0.1, longDiff = 0.1)
  • Filter 3: status kapal berlabuh
      df = df.filter(df.nav_status.rlike('Moored|Anchor|Manoeuvrability'))\
  • Filter 4: non-zero draught
      df = df.filter(df.draught > 0)
  • Filter 5: tipe kapal yang relevan
      df = df.filter(df.vessel_type.rlike('Cargo|Tanker'))
  • Filter 6: kapal yang berada di Pelabuhan
      df = aisClass.definePortNo(df = df, portCoords = portCoords)

Indikator yang dibentuk yaitu:

  • Time in port (timeInPort()) : menghitung lama waktu kapal di pelabuhan
  • Number of vessel (portTraffic()) : jumlah unik kapal yang masuk ke suatu pelabuhan
  • Number of visit (numVisit()) : jumlah kunjungan kapal di pelabuhan
  • Number of draught changes (draughtDiff(tipe='count')) : jumlah kapal yang mengalami perubahan draft di pelabuhan (terbagi menjadi 2, yaitu positif dan negatif)
  • Draught change sizes (draughtDiff(tipe='sum')) : besar perubahan draft kapal yang terjadi di pelabuhan (terbagi menjadi 2 juga)

Data indikator tersebut seperti terdapat pada folder out_from_geomesa/ dalam bentuk bulanan pada setiap port dan terbagi menjadi beberapa bagian (berdasarkan rentang waktu tertentu). Data tersebut akan diagregasi menjadi indikator terkait ekspor impor bulanan secara keseluruhan seperti pada file df_indikatorAIS.csv

Metode Peramalan

Metode peramalan yang akan digunakan adalah model ANN dan model ARIMA. Model ARIMA akan menggunakan library statsmodels (statsmodels.tsa.arima.model). Sedangkan fungsi ANN akan dibangun dengan menggunakan referensi dari Coursera (http://www.coursera.org) seperti pada file _2_ANN.ipynb.

ANN

Tahapan ANN yang dibangun yaitu:

  • Inisialisasi parameter (initialize_params())
  • Activation function (fa())
  • Forward propagation (forward_propagation())
  • Compute cost (compute_cost())
  • Backward propagation (backward_propagation())
  • Update parameters (update_params())
  • Model ANN keseluruhan (nn_model())
  • Predict function (predict())

ARIMA

Tahap model ARIMA (pada _3_exe.ipynb), yaitu:

  • Meregresikan variabel prediktor dengan variabel respons
      regresi = sm.OLS(Y,X).fit()
  • Residual hasil regresi dibuat plot ACF dan PACF untuk menentukan parameter p dan q pada ARIMA. Penentuan parameter p dan q tersebut juga mempertimbangkan jumlah variabel yang signifikan dan error yang dihasilkan pada berbagai macam kombinasi p dan q
      from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
      plot_acf(regresi.resid)
      plot_pacf(regresi.resid)
  • Penentuan koefisien variabel / pemodelan
      model = ARIMA(endog, order=(p,0,q), freq='MS', exog) #modelling ARIMAX
      model_fit = model.fit() #fit
      model_fit.summary() #summary
  • Uji diagnostik model
      model_fit.plot_diagnostics()

Penerapan

Variabel prediktor

Penerapan model peramalan dengan indikator AIS seperti file _3_exe.ipynb. Semua indikator AIS yang terbentuk akan dijadikan variabel prediktor untuk meramalkan nilai dan volume ekspor impor. Dilakukan juga beberapa metode seleksi variabel prediktor agar memberikan hasil peramalan yang terbaik, di antaranya:

  • Seleksi menggunakan permutation importance (permutation_importance()). Model ANN yang terbentuk (semua indikator AIS sebagai variabel prediktor) akan dilakukan permutation importance untuk melihat importance value setiap indikator. Indikator yang memiliki importance value>0 akan dipilih sebagai variabel prediktor
  • Seleksi menggunakan stepwise regression (stepwise_selection_bic()). Indikator AIS yang memberikan peningkatan nilai BIC ke model akan dipilih sebagai variabel prediktor
  • Seleksi menggunakan indikator yang signifikan (alpha = 0.05) pada model ARIMA yang terbentuk sebelumnya (semua indikator AIS sebagai variabel prediktor)
  • Seleksi menggunakan nilai korelasi, yaitu indikator yang memiliki nilai korelasi > 0.25 dengan statistik ekspor impor

Evaluasi peramalan

Evaluasi peramalan menggunakan:

  • nilai RMSE dari library sklearn pada mean_squared_error(squared=False)
  • nilai MAPE yang dibangun sesuai rumus dengan fungsi mape()

Hasil peramalan

Hasil peramalan model, baik itu ANN maupun ARIMA, dapat terlihat pada folder OUT. Folder tersebut berisi rangkuman hasil peramalan, seperti nilai RMSE, MAPE, variabel yang digunakan, parameter model yang digunakan, dll. 2

Referensi

Kontak

Jimmy Nickelson
[email protected]


Footnotes

  1. Sejak bulan Juni 2021, akses ke database AIS diubah melalui Jupyter Hub (https://notebooks.officialstatistics.org) dan GitLab (https://code.officialstatistics.org).

  2. Seleksi permutation importance (AISf/ann), seleksi stepwise (AISr/st), seleksi var yang signifikan arima (AISs/ar), seleksi korelasi (AISc/corr)

About

Peramalan data Ekspor Impor dengan data AIS

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published