Statistics: Covariance



Basic Covariance 

  • Covariance merupakan ukuran arah pergerakan nilai-nilai dari dua variabel X dan Y apakah searah ataukan berlawanan.
  • Arti nilai covariance
    • Positif berarti variabel X naik sedangkan variabel Y juga naik.
    • Negatif berarti variabel X naik sedangkan variabel Y turun.
    • Nol berarti tidak ada arah yang jelas

Contoh penggunaan
  • Covariance banyak dipergunakan dalam investasi
  • Covariance antara US Dollar dan Harga Emas negatif, artinya 
    • kalau USD naik, harga emas turun
    • kalau USD turun, harga emas naik
  • Covariance antara saham BCA dan saham Bank Danamon positif artinya
    • kalau harga saham bank BCA naik, maka harga saham Bank Danamon juga naik
    • kalau harga saham bank BCA turun, maka harga saham Bank Danamon juga turun

Rumus Menghitung Covariance
  • Bila seluruh data dihitung, kita gunakan rumus untuk populasi sbb:
  • Bila hanya beberapa sampel data yang dihitung, kita gunakan rumus untuk sampel sbb:


CONTOH SOAL
Misalkan kita dapatkan jumlah penjualan mobil (x) dan sepeda motor (y) dalam ribuan unit selama 5 kuartal sbb:
  • Q1: x = 2, y = 10
  • Q2: x = 3, y = 14
  • Q3: x = 2.7, y = 12
  • Q4: x = 3.2, y = 15
  • Q5: x = 4.1, y = 20
Hitunglah apakah penjualan mobil dan sepeda motor bergerak pada arah yang sama? 

Jawab:

  • rata-rata x =(2+3+2.7+3.2+4.1)/5=3
  • rata-rata y =(10+14+12+15+20)/5=14.2
  • Cov(x,y) = ((2 - 3) x (10 - 14.2) + (3 - 3) x (14 - 14.2) + ... (4.1 - 3) x (20 - 14.2)) / 4 = (4.2 + 0 + 0.66 + 0.16 + 6.38) / 4 = 2.85
  • Berarti nilai penjualan mobil dan motor bersama-sama naik.

Time Series Modelling stationary ARIMA step by step



ARIMA (Autoregressive integrated moving average)
Penjeasan tentang ARIMA selengkapnya bisa lihat di wikipedia kilik link ini.

Tahapan ARIMA modeling:
  1. Exploratory data analysis
  2. Dekomposisi data
  3. Test stationarity
  4. Membuat Model ARIMA
  5. Forecasts

Library:
library(ggfortify)
library(tseries)
library(forecast)

Data
  • Disini kita pergunakan data Air Passanger ada dalam package R
  • Sekarang kita periksa apakah dataset AirPassangers sudah format time series?
data(AirPassengers)
AP <- AirPassengers
class(AP)
  • Hasilnya dataset AirPassangers sudah format time series
## [1] "ts"

STEP-1  EXPLORATORY DATA ANALYSIS (EDA)

  • Mari kita lihat dulu sepertia apa datasetnya
AP
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
  • Pemeriksaan nilai yang hilang (missing value)
sum(is.na(AP))
  • Hasilnya tidak ada missing value
## [1] 0
  • Pemeriksaan Frequency dengan fungsi frequency()
frequency(AP)
  • Hasilnya ada frequency=12
## [1] 12
  • Pemeriksaan cycle dengan fungsi cycle()
cycle(AP)
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949   1   2   3   4   5   6   7   8   9  10  11  12
## 1950   1   2   3   4   5   6   7   8   9  10  11  12
## 1951   1   2   3   4   5   6   7   8   9  10  11  12
## 1952   1   2   3   4   5   6   7   8   9  10  11  12
## 1953   1   2   3   4   5   6   7   8   9  10  11  12
## 1954   1   2   3   4   5   6   7   8   9  10  11  12
## 1955   1   2   3   4   5   6   7   8   9  10  11  12
## 1956   1   2   3   4   5   6   7   8   9  10  11  12
## 1957   1   2   3   4   5   6   7   8   9  10  11  12
## 1958   1   2   3   4   5   6   7   8   9  10  11  12
## 1959   1   2   3   4   5   6   7   8   9  10  11  12
## 1960   1   2   3   4   5   6   7   8   9  10  11  12
  • Summary data AirPassangers 
summary(AP)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   104.0   180.0   265.5   280.3   360.5   622.0
  • Plot data AirPassangers
  • Sumbu horisontal = "Periode"
  • Sumbu vertikal = "Penumpang (ribuan)"
  • Judul = "Air Passenger tahun 1949 sd 1961"
plot(AP,xlab="Periode", ylab = "Penumpang (ribuan)",main="Air Passenger tahun 1949 sd 1961")

  • Pemeriksaan Seasonal dengan fungsi boxplot()
boxplot(AP~cycle(AP),xlab="Periode", 
        ylab = "Penumpang (ribuan)" ,
        main ="Air Passenger tahun 1949 sd 1961")

Hasil EDA:

  • Jumlah penumpang bertambah setiap tahunnya
  • Trend meningkat secara linear
  • Disetiap bulan ke 6 dan 9, mean lebih tinggi dan variance lebih lebar karena banyak orang berlibur di US saat musim  panas
  • Data sudah bersih karena tidak ada outliers dan missing value sehingga tidak perlu cleansing data



STEP-2 Dekomposisi


  • Proses dekomposisi dllakukan untuk memriksa adanya trend, seasonal, dan random component,
  • Persamaannya:
Y[t]=T[t]S[t]e[t]
  • dimana
    • Y(t) jumlah penumpang pada waktu t,
    • T(t) trend pada waktu t,
    • S(t) seasonal pada waktu t,
    • e(t) random error pada waktu t.
  • untuk memeriksa dekomposisi lakukan fungsi berikut
dekomposisiAP <- decompose(AP,"multiplicative")
autoplot(dekomposisiAP)


Disini kita dapat melihat plot data, pola seasonal, trend yang naik, dan komponen random pada bagian  “remainder”.


STEP-3:TEST STATIONARITY


  • Time series dikatakan stationary dengan syarat mean, variance dan covariance bukan merupakan fungsi waktu.
  • Syarat model ARIMA, time series harus stationary

1. Test stationarity menggunakan Augmented Dickey-Fuller (ADF) test
  • Test stationary dilakukan dengan fungsi adf.test()
  • setting hipotesis:
    • Ho: time series bukan stationary
    • Ha: time series adalah stationary
adf.test(AP) 
## 
##  Augmented Dickey-Fuller Test
## 
## data:  AP
## Dickey-Fuller = -7.3186, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
  • Bila p-value kurang 5%, maka Ho ditolak. 
  • Karena p-value = 0.01 kurang dari 0.05 maka Ho ditolak sehingga time series adalah stationary.

2. Test Stationary menggunakan Autocorrelation
  • Test stationary yang lain adalah test autocorrelation. 
  • Kita gunakan fungsi ggAcf() ada dalam R package. 
  • Fungsi ini menghitung korelasi antara series dan lagnya dengan 95% confident interval.
  • Bila autokorelasi memotong garis putus-putus biru berarti lag tsb berkorelasi dengan seriesnya secara significant.
ggAcf(AP,
         xlab="Periode", 
         ylab = "Penumpang (ribuan)",
         main="Air Passenger tahun 1949 sd 1961")
  • Maximum pada lag bulan 1 or 12  menandakan a relasi positif dengan cycle 12 bulan.
  • Plot 
ggAcf(decomposeAP$random[7:138],
      xlab="Periode", 
      ylab = "Penumpang (ribuan)",
      main="Air Passenger tahun 1949 sd 1961")



  • Residuals tersebar di sekitar 0.

STEP-4 Membuat Model ARIMA

  • Fungsi untuk menghitung model ARIMA kita gunakan auto.arima().
arima_AP <- auto.arima(AP)
arima_AP
## Series: AP 
## ARIMA(2,1,1)(0,1,0)[12]                    
## 
## Coefficients:
##          ar1     ar2      ma1
##       0.5960  0.2143  -0.9819
## s.e.  0.0888  0.0880   0.0292
## 
## sigma^2 estimated as 132.3:  log likelihood=-504.92
## AIC=1017.85   AICc=1018.17   BIC=1029.35
  • Parameter ARIMA(2,1,1)(0,1,0)[12] 
  • Model ARIMA:
  • dimana E adalah beberapa error.
  • sekarang kita periksa apakah model ARIMA sudah fit dengan memeriksa residualnya
#library(ggfortify) gunakan library ini 
ggtsdiag(arima_AP)

  • Residual terlihat tersebar di sekitar 0 sebagai noise, tanpa pola. 
  • Model Arima ini secara fair dikatakan good fit

Part 5: FORECAST

  • forecast() dengan 95% confidence interval untuk 3 tahun (36 bulan) kedepan.
forecastAP <- forecast(arima_AP, level = c(95), h = 36)
autoplot(forecastAP)







Time Series: Forecasting




Salah satu penggunaan Time Seies  adalah untuk melakukan forecasting untuk beberapa waktu kedepan.

CONTOH SOAL

Diberikan data saham sebuah bank terkenal di Indonesia sepanjang 2016 sampai dengan 2017. Buatlah forecast dengan analisis time series dengan metode ETS, ARIMA, dan TBATS untuk tahun 2018.

>head(saham)
  Year Month Close
1 2016     1 13475
2 2016     2 13300
3 2016     3 13050
4 2016     4 13000
5 2016     5 13325
6 2016     6 14450

Format Time Series


  • Untuk melihat apakah data kita sudah dalam forrmat time series, kita pergunakan fungsi class(namadataset).  

> class(iris) # contoh belum format data frame
[1] "data.frame"
> class(AirPassengers) # contoh format time series
[1] "ts"
> 


  • Kalau hasil fungsi class tertulis "ts" menandakan format sudah time series. 
  • Dataset iris bukan format time series sedangkan AirPassengers sudah format time series.
  • Berikutnya, kita periksa dataset saham bank ini. Ternyata bukan time series.

> class(saham)# belum format ts
[1] "data.frame"
> 
  • Untuk mengubah menjadi fungsi time series kita gunakan fungsi ts().  
  • Parameter yang dibutuhkan disini adalah nama dataset dan nama kolomnya.
  • Hasilnya, kalau diperiksa ulang dengan fungsi class() sudah menunjukkan format time series.

> ts_saham <- ts(saham["Close"], 
+ start = c(2015, 1), frequency = 12)
> class(ts_saham)# sudah format ts
[1] "ts"

Visualisasi Time Series


  • Sekarang kita coba visualisasi data ts_saham ini menggunakan fungsi plot().

> plot(ts_saham) #This will plot the time series

  • Untuk melihat apakah ada trend, kita gambarkan sebuah garis trend dengan fungsi abline().

>abline(reg=lm(ts_saham~time(ts_saham))) 
# This will fit in a line

  • Dari gambar di atas, terlihat garis trend naik, hal ini menunjukkan bahwa ada trend naik dari tahun 2015 ke tahun 2017. 

Forecast

  • Sekarang kita bisa forecast 12 bulan kedepan dengan menggunakan metode ETS, ARIMA, dan TBATS..
  • METODE ETS
    • ETS=Errors, Trends, Seasonals
    • Kita gunakan fungsi ets(datatimeseries)
    • Untuk forecast dibutuhkan fungsi forecast(modelETS,h).
    • Library yang diperlukan forecast
    • Kita gunakan h=12 untuk memprediksi harga saham 12 bulan ke depan.
>library(forecast)
>ets_saham=ets(ts_saham)
>f_ets_saham = forecast(ets_saham, h=12) 
>plot(f_ets_saham)




  • METODE ARIMA
    • Kita gunakan fungsi auto.arima(datatimeseries)
    • Untuk forecast dibutuhkan fungsi forecast(modelARIMA,h)

arima_saham = auto.arima(ts_saham)
f_arima_saham = forecast(arima_saham, h=12)
plot(f_arima_saham)

  • METODE TBATS
    • Kita gunakan fungsi tbats(datatimeseries)
    • Untuk forecast dibutuhkan fungsi forecast(modelTBATS,h).

tbats_saham = tbats(ts_saham)
f_tbats_saham = forecast(tbats_saham, h=12)
plot(f_tbats_saham)


Perbandingan Model

  • Ketiga metode forecast sama-sama memprediksi harga saham bank ini akan naik di tahun 2018.
  • Untuk membandingkan ketiga model prediksi diatas kita gunakan diagram batang fungsi barplot() .
  • Yang kita bandingkan disini adalah property AIC(Akaike’s Information Criterion) dari masing-masing model.
  • Akaike Information Critera (AIC) digunakan untuk menghitung  1) the goodness of fit, dan 2) the simplicity/parsimony, model terhadap suatu nilai statistik.
  • Model dengan nilai AIC lebih kecil adalah model yang lebih baik.


>barplot(c(ETS=ets_saham$aic,ARIMA=arima_saham$aic,
        TBATS=tbats_saham$AIC),
        col="orange",ylab="AIC")



Dari diagram batang di atas terlihat model ARIMA memiliki nilai AIC terkecil sehingga model forecast ARIMA lebih baik dari ETS dan TBATS.


Hierarchy Clustering - Average Linkage - Manual



Sekarang kita belajar cara manual membuat dendrodram Hierarchy Clustering dengan metode average linkage secara manual.

Contoh Soal

Jarak antar kota A,B,C,D, dan E adalah seperti pada gambar berikut. Buatlah dendrodram menggunakan Hierarchy Clustering dengan metode Average Linkage!



STEP-1

Setiap kota kita buat menjadi klaster kecil tersendiri sehingga kita dapatkan 5 klaster yaitu {A}, {B}, {C}, {D}, dan {E}

STEP-2

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak A ke B =1 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A} dan {B} menjadi {A,B}
  • Hitung Jarak Rata-rata Antar Kota untuk klaster baru {A,B}
    • Jarak A ke C=5, jarak B ke C=2, maka jarak {A,B} ke C = (5+2)/2=3.5
    • Jarak A ke D=8, jarak B ke D=6, maka jarak {A,B} ke D= (8+6)/2=7. 
    • Jarak A ke E=9, jarak B ke E=8, maka jarak {A,B} ke E= (9+8)/2=8.5 

STEP-3: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak C ke D =3 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {C} dan {D} menjadi {C, D}
  • Hitung Jarak Rata-rata Antar Kota untuk klaster baru {C,D}
    • Jarak C ke A=5, jarak C ke B=2, jarak D ke A= 8, jarak D ke B=6 maka jarak {C,D} ke {A,B} = (5+2+8+6)/4=5.3
    • Jarak C ke E=7, jarak D ke E=4, maka jarak {C,D} ke E = (7+4)/2=5.5

STEP-4: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak {A,B} ke{C,D} =5.3 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A,B} dan {C,D} menjadi {A,B,C,D}
  • Hitung Jarak Rata-rata Antar Kota untuk klaster baru {A,B,C,D}
    • Jarak A ke E=9, jarak B ke E=8, jarak C ke E= 7, jarak D ke E=4, maka jarak {A,B,C,D} ke E = (9+8+7+4)/4=7

STEP-5:

  • Temukan jarak terpendek: Hanya tinggal jarak  {A,B,C,D} ke E=7. 
  • Penggabungan klaster: {A,B,C,D} dan {E} menjadi {A,B,C,D,E}
  • Karena semua klaster sudah menjadi satu klaster, maka proses Hierarchy Clustering dengan average linkage berhenti sampai disini.

DENDRODRAM

Berikut ini adalah penggambaran dendrodram hasil proses Average Linkage di atas:





Hierarchy Clustering - Complete Linkage - Manual

Sekarang kita belajar cara manual membuat dendrodram Hierarchy Clustering dengan metode complete linkage secara manual.

Contoh Soal

Jarak antar kota A,B,C,D, dan E adalah seperti pada gambar berikut. Buatlah dendrodram menggunakan Hierarchy Clustering dengan metode Complete Linkage!



STEP-1

Setiap kota kita buat menjadi klaster kecil tersendiri sehingga kita dapatkan 5 klaster yaitu {A}, {B}, {C}, {D}, dan {E}

STEP-2

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak A ke B =1 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A} dan {B} menjadi {A,B}
  • Hitung Jarak Maximum Antar Kota untuk klaster baru {A,B}
    • Jarak A ke C=5, jarak B ke C=2, maka jarak {A,B} ke C = 5
    • Jarak A ke D=8, jarak B ke D=6, maka jarak {A,B} ke D= 8. 
    • Jarak A ke E=9, jarak B ke E=8, maka jarak {A,B} ke E= 9. 

STEP-3: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak C ke D =3 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {C} dan {D} menjadi {C, D}
  • Hitung Jarak Maximum Antar Kota untuk klaster baru {C,D}
    • Jarak C ke A=5, jarak C ke B=2, jarak D ke A= 8, jarak D ke B=6 maka jarak {C,D} ke {A,B} = 8
    • Jarak C ke E=7, jarak D ke E=4, maka jarak {C,D} ke E = 7

STEP-4: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak {C,D} ke E =7 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {C,D} dan {E} menjadi {C,D,E}
  • Hitung Jarak Maximum Antar Kota untuk klaster baru {C,D,E}
    • Jarak C ke A=5, jarak C ke B=2, jarak D ke A= 8, jarak D ke B=6, jarak E ke A=9,jarak E ke B=8 maka jarak {C,D,E} ke {A,B} = 9

STEP-5:

  • Temukan jarak terpendek: Hanya tinggal jarak  {A,B} ke {C,D,E}=9. 
  • Penggabungan klaster: {A,B} dan {C,D,E} menjadi {A,B,C,D,E}
  • Karena semua klaster sudah menjadi satu klaster, maka proses Hierarchy Clustering dengan complete linkage berhenti sampai disini.

DENDRODRAM

Berikut ini adalah penggambaran dendrodram hasil proses complete linkage di atas:




Hierarchy Clustering - Single Linkage - Manual

Sekarang kita belajar cara manual membuat dendrodram Hierarchy Clustering dengan metode single linkage secara manual.

Contoh Soal

Jarak antar kota A,B,C,D, dan E adalah seperti pada gambar berikut. Buatlah dendrodram menggunakan Hierarchy Clustering dengan metode Single Linkage!



STEP-1

Setiap kota kita buat menjadi klaster kecil tersendiri sehingga kita dapatkan 5 klaster yaitu {A}, {B}, {C}, {D}, dan {E}

STEP-2

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak A ke B =1 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A} dan {B} menjadi {A,B}
  • Hitung Jarak Terpendek Antar Kota untuk klaster baru {A,B}
    • Jarak A ke C=5, jarak B ke C=2, maka jarak {A,B} ke C = 2
    • Jarak A ke D=8, jarak B ke D=6, maka jarak {A,B} ke D= 6. 
    • Jarak A ke E=9, jarak B ke E=8, maka jarak {A,B} ke E= 8. 

STEP-3: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak {A,B} ke C =2 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A,B} dan {C} menjadi {A,B,C}
  • Hitung Jarak Terpendek Antar Kota untuk klaster baru {A,B,C}
    • Jarak A ke D=8, jarak B ke D=6, jarak C ke D= 3, maka jarak {A,B,C} ke D = 3
    • Jarak A ke E=9, jarak B ke E=8, jarak C ke E= 7, maka jarak {A,B,C} ke E = 7


STEP-4: 

  • Temukan jarak terpendek: Seperti terlihat pada gambar di sebelah kiri, jarak {A,B,C} ke D =3 adalah jarak terkecil (minimum) dari seluruh jarak yang lain.
  • Penggabungan klaster: {A,B,C} dan {D} menjadi {A,B,C,D}
  • Hitung Jarak Terpendek Antar Kota untuk klaster baru {A,B,C,D}
    • Jarak A ke E=9, jarak B ke E=8, jarak C ke E= 7, jarak D ke E= 4, maka jarak {A,B,C,D} ke E=4.

STEP-5:

  • Temukan jarak terpendek: Hanya tinggal jarak  {A,B,C,D} ke E =4. 
  • Penggabungan klaster: {A,B,C,D} dan {E} menjadi {A,B,C,D,E}
  • Karena semua klaster sudah menjadi satu klaster, maka proses Hierarchy Clustering dengan single linkage berhenti sampai disini.

DENDRODRAM

Berikut ini adalah penggambaran dendrodram hasil proses single linkage di atas: