Pemeriksaan Kestasioneran Data Deret Waktu

Kali ini akan dilakukan pengecekan kestasioneran data baik itu secara rataan maupun ragam. Disini akan menekankan bagaimana kita dapat mengetahui suatu data stasioner atau tidaknya. Dilakukan pula partisi untuk mengecek kestasioneran sebagian data dari data yang dibawakan.

#library yang digunakan
library(ggplot2)
library(tsibble)
## 
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(MASS)

Kestasioneran Data Asli

Pada tahap ini data asli milik pribadi peneliti berupa data time series bulanan menganai kurs uang dalam usd akan diteliti kestasionerannya. Data sendiri ada di github pribadi peneliti.

df<- rio::import("https://raw.githubusercontent.com/fax17/MPDW/main/data/data.csv")
df
##     Periode     bulan   USD
## 1         1   Januari  9450
## 2         2  Februari  9835
## 3         3     Maret 10400
## 4         4     April 11675
## 5         5       Mei 11058
## 6         6      Juni 11440
## 7         7      Juli  9525
## 8         8   Agustus  8865
## 9         9 September  9675
## 10       10   Oktober 10435
## 11       11  November 10430
## 12       12  Desember 10400
## 13       13   Januari 10320
## 14       14  Februari 10189
## 15       15     Maret  9655
## 16       16     April  9316
## 17       17       Mei  8785
## 18       18      Juni  8730
## 19       19      Juli  9108
## 20       20   Agustus  8867
## 21       21 September  9015
## 22       22   Oktober  9233
## 23       23  November  8976
## 24       24  Desember  8940
## 25       25   Januari  8876
## 26       26  Februari  8905
## 27       27     Maret  8908
## 28       28     April  8675
## 29       29       Mei  8279
## 30       30      Juni  8285
## 31       31      Juli  8505
## 32       32   Agustus  8535
## 33       33 September  8389
## 34       34   Oktober  8495
## 35       35  November  8537
## 36       36  Desember  8465
## 37       37   Januari  8441
## 38       38  Februari  8447
## 39       39     Maret  8587
## 40       40     April  8661
## 41       41       Mei  9210
## 42       42      Juni  9415
## 43       43      Juli  9168
## 44       44   Agustus  9328
## 45       45 September  9710
## 46       46   Oktober  9090
## 47       47  November  9018
## 48       48  Desember  9290
## 49       49   Januari  9165
## 50       50  Februari  9260
## 51       51     Maret  9480
## 52       52     April  9570
## 53       53       Mei  9495
## 54       54      Juni  9713
## 55       55      Juli  9819
## 56       56   Agustus 10240
## 57       57 September 10310
## 58       58   Oktober 10090
## 59       59  November 10035
## 60       60  Desember  9830
## 61       61   Januari  9395
## 62       62  Februari  9230
## 63       63     Maret  9075
## 64       64     April  8775
## 65       65       Mei  9220
## 66       66      Juni  9300
## 67       67      Juli  9070
## 68       68   Agustus  9100
## 69       69 September  9235
## 70       70   Oktober  9110
## 71       71  November  9165
## 72       72  Desember  9020
## 73       73   Januari  9090
## 74       74  Februari  9160
## 75       75     Maret  9118
## 76       76     April  8828
## 77       77       Mei  8828
## 78       78      Juni  9054
## 79       79      Juli  9186
## 80       80   Agustus  9410
## 81       81 September  9137
## 82       82   Oktober  9103
## 83       83  November  9376
## 84       84  Desember  9419
## 85       85   Januari  9291
## 86       86  Februari  9230
## 87       87     Maret  9217
## 88       88     April  9234
## 89       89       Mei  9318
## 90       90      Juni  9225
## 91       91      Juli  9118
## 92       92   Agustus  9153
## 93       93 September  9378
## 94       94   Oktober 10995
## 95       95  November 12151
## 96       96  Desember 10950
## 97       97   Januari 11355
## 98       98  Februari 11980
## 99       99     Maret 11575
## 100     100     April 10713
## 101     101       Mei 10340
## 102     102      Juni 10225
## 103     103      Juli  9920
## 104     104   Agustus 10060
## 105     105 September  9681
## 106     106   Oktober  9545
## 107     107  November  9480
## 108     108  Desember  9400
## 109     109   Januari  9365
## 110     110  Februari  9335
## 111     111     Maret  9115
## 112     112     April  9012
## 113     113       Mei  9180
## 114     114      Juni  9083
## 115     115      Juli  8952
## 116     116   Agustus  9041
## 117     117 September  8924
## 118     118   Oktober  8928
## 119     119  November  9013
## 120     120  Desember  8991
## 121     121   Januari  9057
## 122     122  Februari  8823
## 123     123     Maret  8709
## 124     124     April  8574
## 125     125       Mei  8537
## 126     126      Juni  8597
## 127     127      Juli  8508
## 128     128   Agustus  8578
## 129     129 September  8823
## 130     130   Oktober  8835
## 131     131  November  9170
## 132     132  Desember  9068
## 133     133   Januari  9000
## 134     134  Februari  9085
## 135     135     Maret  9180
## 136     136     April  9190
## 137     137       Mei  9565
## 138     138      Juni  9480
## 139     139      Juli  9485
## 140     140   Agustus  9560
## 141     141 September  9588
## 142     142   Oktober  9615
## 143     143  November  9605
## 144     144  Desember  9670
## 145     145   Januari  9698
## 146     146  Februari  9667
## 147     147     Maret  9719
## 148     148     April  9722
## 149     149       Mei  9802
## 150     150      Juni  9929
## 151     151      Juli 10278
## 152     152   Agustus 10924
## 153     153 September 11613
## 154     154   Oktober 11234
## 155     155  November 11977
## 156     156  Desember 12189
## 157     157   Januari 12226
## 158     158  Februari 11634
## 159     159     Maret 11404
## 160     160     April 11532
## 161     161       Mei 11611
## 162     162      Juni 11969
## 163     163      Juli 11591
## 164     164   Agustus 11717
## 165     165 September 12212
## 166     166   Oktober 12082
## 167     167  November 12196
## 168     168  Desember 12440
## 169     169   Januari 12625
## 170     170  Februari 12863
## 171     171     Maret 13084
## 172     172     April 12937
## 173     173       Mei 13211
## 174     174      Juni 13332
## 175     175      Juli 13481
## 176     176   Agustus 14027
## 177     177 September 14657
## 178     178   Oktober 13639
## 179     179  November 13840
## 180     180  Desember 13795
## 181     181   Januari 13846
## 182     182  Februari 13395
## 183     183     Maret 13276
## 184     184     April 13204
## 185     185       Mei 13615
## 186     186      Juni 13180
## 187     187      Juli 13094
## 188     188   Agustus 13300
## 189     189 September 12998
## 190     190   Oktober 13051
## 191     191  November 13563
## 192     192  Desember 13436
## 193     193   Januari 13343
## 194     194  Februari 13347
## 195     195     Maret 13321
## 196     196     April 13327
## 197     197       Mei 13321
## 198     198      Juni 13319
## 199     199      Juli 13323
## 200     200   Agustus 13351
## 201     201 September 13492
## 202     202   Oktober 13572
## 203     203  November 13514
## 204     204  Desember 13548
## 205     205   Januari 13413
## 206     206  Februari 13707
## 207     207     Maret 13756
## 208     208     April 13877
## 209     209       Mei 13951
## 210     210      Juni 14404
## 211     211      Juli 14413
## 212     212   Agustus 14711
## 213     213 September 14929
## 214     214   Oktober 15227
## 215     215  November 14339
## 216     216  Desember 14481
## 217     217   Januari 14072
## 218     218  Februari 14062
## 219     219     Maret 14244
## 220     220     April 14215
## 221     221       Mei 14385
## 222     222      Juni 14141
## 223     223      Juli 14026
## 224     224   Agustus 14237
## 225     225 September 14174
## 226     226   Oktober 14008
## 227     227  November 14102
## 228     228  Desember 13901
## 229     229   Januari 13662
## 230     230  Februari 14234
## 231     231     Maret 16367
## 232     232     April 15157
## 233     233       Mei 14733
## 234     234      Juni 14302
## 235     235      Juli 14653
## 236     236   Agustus 14554
## 237     237 September 14918
## 238     238   Oktober 14690
## 239     239  November 14128
## 240     240  Desember 14105
## 241     241   Januari 14084
## 242     242  Februari 14229
## 243     243     Maret 14572
## 244     244     April 14468
## 245     245       Mei 14310
## 246     246      Juni 14496
## 247     247      Juli 14491
## 248     248   Agustus 14374
## 249     249 September 14307
## 250     250   Oktober 14199
## 251     251  November 14340
## 252     252  Desember 14269
## 253     253   Januari 14381
## 254     254  Februari 14371
## 255     255     Maret 14349
## 256     256     April 14418
## 257     257       Mei 14544
## 258     258      Juni 14848
## 259     259      Juli 14958
## 260     260   Agustus 14875
## 261     261 September 15247
## 262     262   Oktober 15542
## 263     263  November 15737
## 264     264  Desember 15731
## 265     265   Januari 14979
## 266     266  Februari 15274
## 267     267     Maret 15062
## 268     268     April 14751
## 269     269       Mei 14969
## 270     270      Juni 15026
## 271     271      Juli 15083
data <- df[,-2] #menghapus kolom bulan yg tidak diperlukan disini
ts <- ts(data$USD)

Plot Time Series

library(ggplot2)
plot_ts <- ts.plot(ts, xlab="Time Period ", ylab="", 
        main = "Time Series Plot")
points(ts)

Plot deret waktu di atas menunjukkan bahwa data cenderung membuat grafik tren, dan tidak stasioner dalam rataan maupun ragamnya .

Plot ACF

acf(ts)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off slowly yang artinya mengindikasikan tidak stasioner dalam rataannya.

Uji ADF

library(tseries)
adf.test(ts)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ts
## Dickey-Fuller = -2.5829, Lag order = 6, p-value = 0.3305
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.3305 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan . Hal ini sesuai dengan hasil eksplorasi data. .

Plot Box-Cox

index <- seq(1:271)
bc = boxcox(ts~index, lambda = seq(0,4,by=0.01))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.32
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14
## [16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29
## [31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44
## [46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
## [61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74
## [76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89
## [91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 0,35 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0,00 dan batas atas 0.97. Selang tersebut tidak memuat nilai satu (1) sehingga dapat dikatakan bahwa data tidak stasioner dalam ragam.

Kestasioneran Partisi Data

Pada tahap ini akan dilakukan pengecekan kestasioneran data seabnyak 2 kali terhadap 2 partisi/bagian data yang pemilihannya subjektif dari keinginan peneliti dengan mengacu pemotongan dilakukan tidak ketiika hendak naik atau turunnya nilai data time series

Partisi pertama

partisi pertama ini ingin dilihat ketika data seakan sebelum naik di plot data seluruhnya yakni dari amatan 1 hingga ke 120.

partisits1 <- ts[1:120] |> ts()
mean(partisits1)
## [1] 9436.875
var(partisits1)
## [1] 597247

Plot Time Series

partisits1 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot deret waktu di atas menunjukkan bahwa cenderus tidak stasioner dalam rataan, ditandai dengan data yang tidak menyebar di sekitar nilai tengahnya dandata terlihat tidak stasioner dalam ragam, hal ini ditandai dengan lebar pita yang cenderung berbeda pula.

Plot ACF

acf(partisits1)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off slowly dan membentuk sinus yang artinya data tidak stastioner dalam rataan.

Uji ADF

adf.test(partisits1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  partisits1
## Dickey-Fuller = -3.1386, Lag order = 4, p-value = 0.1037
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.1037 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index1 <- seq(1:120)
bc1 = boxcox(partisits1~index1, lambda = seq(-6,4,by=1))

#Nilai Rounded Lambda
lambda1 <- bc1$x[which.max(bc1$y)]
lambda1
## [1] -5.494949
#SK
bc1$x[bc1$y > max(bc1$y) - 1/2 * qchisq(.95,1)]
##  [1] -6.000000 -5.898990 -5.797980 -5.696970 -5.595960 -5.494949 -5.393939
##  [8] -5.292929 -5.191919 -5.090909 -4.989899 -4.888889 -4.787879 -4.686869
## [15] -4.585859 -4.484848 -4.383838 -4.282828 -4.181818 -4.080808 -3.979798
## [22] -3.878788 -3.777778 -3.676768 -3.575758

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar -5 dan pada selang kepercayaan 95% nilai memiliki batas bawah -5 dan batas atas -3.454. Selang tersebut tidak memuat nilai satu sehingga dapat dikatakan bahwa data tidak stasioner dalam ragam.

Partisi kedua

partisi kedua ini ingin dilihat ketika data seakan naik di plot data seluruhnya yakni dari amatan 126 hingga ke 175 sebanyak 50 amatan.

partisits2 <- ts[126:175] |> ts()
mean(partisits2)
## [1] 10710.02
var(partisits2)
## [1] 2342629
#### Plot Time Series
partisits2 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot deret waktu di atas menunjukkan bahwa data cenderung trend dan tidak stasioner dalam rataan, semntara untuk stasioner dalam ragamnya juga terlihat tidak terpenuhi.

Plot ACF

acf(partisits2)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off. Berarti, belum stasioner.

Uji ADF

adf.test(partisits2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  partisits2
## Dickey-Fuller = -2.5886, Lag order = 3, p-value = 0.3382
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.338 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index2 <- seq(1:50)
bc2 = boxcox(partisits2~index2, lambda = seq(-5,5,by=1))

#Nilai Rounded Lambda
lambda2 <- bc2$x[which.max(bc2$y)]
lambda2
## [1] -1.161616
#SK
bc2$x[bc2$y > max(bc2$y) - 1/2 * qchisq(.95,1)]
##  [1] -2.37373737 -2.27272727 -2.17171717 -2.07070707 -1.96969697 -1.86868687
##  [7] -1.76767677 -1.66666667 -1.56565657 -1.46464646 -1.36363636 -1.26262626
## [13] -1.16161616 -1.06060606 -0.95959596 -0.85858586 -0.75757576 -0.65656566
## [19] -0.55555556 -0.45454545 -0.35353535 -0.25252525 -0.15151515 -0.05050505

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar -1.16 dan pada selang kepercayaan 95% nilai memiliki batas bawah -2.37 dan batas atas -0.05. Selang tersebut tudak memuat nilai satu sehingga dapat dikatakan bahwa data tidak stasioner dalam ragam.

Partisi ketiga

partisi ketiga ini adalah partisi tambahan dimana peneliti ingin melihat ketika data setelah naik di plot data seluruhnya yakni dari amatan 211 hingga ke 260 sebanyak 50 amatan.

partisits3 <- ts[211:260] |> ts()
mean(partisits3)
## [1] 14441.06
var(partisits3)
## [1] 179617.6
#### Plot Time Series
partisits3 |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) +
  geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

Plot deret waktu di atas menunjukkan bahwa data cenderung seakan stasioner dalam rataan, semntara untuk stasioner dalam ragamnya juga terlihat tidak terpenuhi.

Plot ACF

acf(partisits3)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cut off pada lag pertama. Berarti ada indikasi data stasioner dalam rataan.

Uji ADF

adf.test(partisits3)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  partisits3
## Dickey-Fuller = -3.2775, Lag order = 3, p-value = 0.08521
## alternative hypothesis: stationary

\(H_0\) : Data tidak stasioner dalam rataan

\(H_1\) : Data stasioner dalam rataan

Berdasarkan uji ADF tersebut, didapat p-value sebesar 0.08521 yang lebih besar dari taraf nyata 5% sehingga tak tolak \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF. Disini peneliti lebih memilih hasil plot yang berarti data stasioner dalam rataan. disni juga nilai adf hampir stasioner atau jika didekati dengan taraf nyata 5% maka akan tolak \(H_0\) , inilah landasan peneliti menyatakan data stasioner dalam rataan.

Plot Boxcox

index3 <- seq(1:50)
bc3 = boxcox(partisits3~index3, lambda = seq(-25,5,by=10))

#Nilai Rounded Lambda
lambda3 <- bc3$x[which.max(bc3$y)]
lambda3
## [1] -13.18182
#SK
bc3$x[bc3$y > max(bc3$y) - 1/2 * qchisq(.95,1)]
##  [1] -20.757576 -20.454545 -20.151515 -19.848485 -19.545455 -19.242424
##  [7] -18.939394 -18.636364 -18.333333 -18.030303 -17.727273 -17.424242
## [13] -17.121212 -16.818182 -16.515152 -16.212121 -15.909091 -15.606061
## [19] -15.303030 -15.000000 -14.696970 -14.393939 -14.090909 -13.787879
## [25] -13.484848 -13.181818 -12.878788 -12.575758 -12.272727 -11.969697
## [31] -11.666667 -11.363636 -11.060606 -10.757576 -10.454545 -10.151515
## [37]  -9.848485  -9.545455  -9.242424  -8.939394  -8.636364  -8.333333
## [43]  -8.030303  -7.727273  -7.424242  -7.121212  -6.818182  -6.515152

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar ** -20.757576** dan pada selang kepercayaan 95% nilai memiliki batas bawah -2.37 dan batas atas -6.515152. Selang tersebut tudak memuat nilai satu sehingga dapat dikatakan bahwa data tidak stasioner dalam ragam.