library(ggplot2)
library(tsibble)
## Warning: package 'tsibble' was built under R version 4.3.3
## Registered S3 method overwritten by 'tsibble':
##   method               from 
##   as_tibble.grouped_df dplyr
## 
## Attaching package: 'tsibble'
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, union
library(tseries)
## Warning: package 'tseries' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(MASS)
set.seed(8990)

Stasioner dalam Rataan dan Ragam

Pada dasarnya, pembangkitan data ARIMA akan menghasilkan data yang stasioner dalam rataan dan ragam karena akan mengikuti fungsi default-nya yang mengikuti pembangkitan bilangan acak normal dengan mean=0 dan ragam=1 .

stas <- arima.sim(n=200, list(order=c(1,0,1),ar= .2, ma=.2),mean=12)

Plot Time Series

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

mean(stas)
## [1] 18.06022

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(stas)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

lattice::densityplot(as.vector(stas))

Uji ADF

tseries::adf.test(stas)
## Warning in tseries::adf.test(stas): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  stas
## Dickey-Fuller = -5.5322, Lag order = 5, p-value = 0.01
## 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.01 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Box-Cox

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

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 1.97
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36
##  [16] 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51
##  [31] 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 0.66
##  [46] 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81
##  [61] 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93 0.94 0.95 0.96
##  [76] 0.97 0.98 0.99 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11
##  [91] 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26
## [106] 1.27 1.28 1.29 1.30 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41
## [121] 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56
## [136] 1.57 1.58 1.59 1.60 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.70 1.71
## [151] 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.80 1.81 1.82 1.83 1.84 1.85 1.86
## [166] 1.87 1.88 1.89 1.90 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.00 2.01
## [181] 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.14 2.15 2.16
## [196] 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31
## [211] 2.32 2.33 2.34 2.35 2.36 2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 2.45 2.46
## [226] 2.47 2.48 2.49 2.50 2.51 2.52 2.53 2.54 2.55 2.56 2.57 2.58 2.59 2.60 2.61
## [241] 2.62 2.63 2.64 2.65 2.66 2.67 2.68 2.69 2.70 2.71 2.72 2.73 2.74 2.75 2.76
## [256] 2.77 2.78 2.79 2.80 2.81 2.82 2.83 2.84 2.85 2.86 2.87 2.88 2.89 2.90 2.91
## [271] 2.92 2.93 2.94 2.95 2.96 2.97 2.98 2.99 3.00 3.01 3.02 3.03 3.04 3.05 3.06
## [286] 3.07 3.08 3.09 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21
## [301] 3.22 3.23 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35 3.36
## [316] 3.37 3.38 3.39 3.40 3.41 3.42 3.43 3.44 3.45 3.46 3.47 3.48 3.49 3.50 3.51
## [331] 3.52 3.53 3.54 3.55 3.56 3.57 3.58 3.59 3.60 3.61 3.62 3.63 3.64 3.65 3.66
## [346] 3.67 3.68 3.69 3.70 3.71 3.72 3.73

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

Partisi Data

Bagian 1

dt_stas1 <- stas[1:67] |> ts()
mean(dt_stas1)
## [1] 18.08483
var(dt_stas1)
## [1] 1.141982

Plot Time Series

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

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(dt_stas1)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

Uji ADF

tseries::adf.test(dt_stas1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_stas1
## Dickey-Fuller = -3.5663, Lag order = 4, p-value = 0.043
## 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.043 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index <- seq(1:67)
bc = boxcox(dt_stas1~index, lambda = seq(-2,6,by=1))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 2.20202
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] -1.03030303 -0.94949495 -0.86868687 -0.78787879 -0.70707071 -0.62626263
##  [7] -0.54545455 -0.46464646 -0.38383838 -0.30303030 -0.22222222 -0.14141414
## [13] -0.06060606  0.02020202  0.10101010  0.18181818  0.26262626  0.34343434
## [19]  0.42424242  0.50505051  0.58585859  0.66666667  0.74747475  0.82828283
## [25]  0.90909091  0.98989899  1.07070707  1.15151515  1.23232323  1.31313131
## [31]  1.39393939  1.47474747  1.55555556  1.63636364  1.71717172  1.79797980
## [37]  1.87878788  1.95959596  2.04040404  2.12121212  2.20202020  2.28282828
## [43]  2.36363636  2.44444444  2.52525253  2.60606061  2.68686869  2.76767677
## [49]  2.84848485  2.92929293  3.01010101  3.09090909  3.17171717  3.25252525
## [55]  3.33333333  3.41414141  3.49494949  3.57575758  3.65656566  3.73737374
## [61]  3.81818182  3.89898990  3.97979798  4.06060606  4.14141414  4.22222222
## [67]  4.30303030  4.38383838  4.46464646  4.54545455  4.62626263  4.70707071
## [73]  4.78787879  4.86868687  4.94949495  5.03030303  5.11111111  5.19191919
## [79]  5.27272727  5.35353535  5.43434343  5.51515152

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

Bagian 2

dt_stas2 <- stas[1:134] |> ts()
mean(dt_stas2)
## [1] 17.93724
var(dt_stas2)
## [1] 1.128205

Plot Time Series

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

Plot deret waktu di atas menunjukkan bahwa data stasioner dalam rataan, ditandai dengan data yang menyebar di sekitar nilai tengahnya (18) dan stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama.

Plot ACF

acf(dt_stas2)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off dan membentuk gelombang sinus.

Uji ADF

adf.test(dt_stas2)
## Warning in adf.test(dt_stas2): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_stas2
## Dickey-Fuller = -4.4004, Lag order = 5, p-value = 0.01
## 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.01 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

index <- seq(1:134)
bc = boxcox(dt_stas2~index, lambda = seq(0,6,by=1))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 2.848485
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 0.4848485 0.5454545 0.6060606 0.6666667 0.7272727 0.7878788 0.8484848
##  [8] 0.9090909 0.9696970 1.0303030 1.0909091 1.1515152 1.2121212 1.2727273
## [15] 1.3333333 1.3939394 1.4545455 1.5151515 1.5757576 1.6363636 1.6969697
## [22] 1.7575758 1.8181818 1.8787879 1.9393939 2.0000000 2.0606061 2.1212121
## [29] 2.1818182 2.2424242 2.3030303 2.3636364 2.4242424 2.4848485 2.5454545
## [36] 2.6060606 2.6666667 2.7272727 2.7878788 2.8484848 2.9090909 2.9696970
## [43] 3.0303030 3.0909091 3.1515152 3.2121212 3.2727273 3.3333333 3.3939394
## [50] 3.4545455 3.5151515 3.5757576 3.6363636 3.6969697 3.7575758 3.8181818
## [57] 3.8787879 3.9393939 4.0000000 4.0606061 4.1212121 4.1818182 4.2424242
## [64] 4.3030303 4.3636364 4.4242424 4.4848485 4.5454545 4.6060606 4.6666667
## [71] 4.7272727 4.7878788 4.8484848 4.9090909 4.9696970 5.0303030 5.0909091
## [78] 5.1515152 5.2121212 5.2727273

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 2,85 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0,48 dan batas atas 5,27. Selang tersebut memuat nilai satu sehingga dapat dikatakan bahwa data bangkitan stasioner dalam ragam.

Tidak Stasioner dalam Rataan, Stasioner dalam Ragam

Bagaimana cara mensimulasikan data dengan tren tertentu?

Kunci dari simulasi tersebut berada di \(Y_{t}-Y_{t-1}\), atau first difference, atau selisih antara observasi di waktu ke \(t\) dan observasi sebelumnya. Jika suatu deret waktu memiliki tren naik, misal, maka selisih tersebut akan positif. Sebaliknya, jika suatu deret memiliki tren turun, maka selisih akan negatif. Jika suatu deret stasioner, selisih akan memiliki rata-rata nol.

Ini dapat diilustrasikan dengan fungsi cumsum. cumsum adalah jumlah kumulatif. Untuk mengerti logika dari pengunaan jumlah kumulatif, bayangkan ada deret waktu dengan nilai awal \(c\):

\[ Y_1 = c \]

Lalu definsikan \(d_i\), di mana \(i = 2, 3, \ldots\) sebagai selisih observasi ke-i dengan observasi sebelumnya:

\[ d_i = Y_i-Y_{i-1} \]

Perhatikan bahwa:

\[ \begin{aligned} Y_3-Y_{1} & = d_3+d_2\\ &= Y_3-Y_2+Y_2-Y_1 \end{aligned} \]

Cukup jelas bahwa sifat tersebut berarti:

\[ \begin{aligned} Y_t-Y_1 &= \sum_{i=2}^t d_i\\ Y_t &= Y_1 + \sum_{i=2}^t d_i \end{aligned} \]

Atau, amatan di waktu ke \(t\) dapat ditemukan dari menambahkan amatan ke-1 dengan jumlah kumulatif perbedaan \(d_i\) sampai di waktu ke-t. Kode di bawah membuat data dengan proses tersebut. Ada tiga skenario, yaitu:

  1. Selisih antara observasi dan observasi sebelumnya nol

  2. Selisih antara observasi dan observasi sebelumnya positif

  3. Selisih antara observasi dan observasi sebelumnya negatif

Dengan nilai awal 1 dan komponen \(e_t\) menyebar normal.

notrend <- 1 + cumsum(rep(0, 100)) + rnorm(100) |> ts()
postrend <- 1 + cumsum(rep(0.2, 100)) + rnorm(100) |> ts() 
negtrend <- 1 + cumsum(rep(-0.2, 100)) + rnorm(100) |> ts()

Hasil yang muncul dapat di-plot (note, untuk plotting ini digunakan ggplot2; ts.plot() dapat digunakan - ini tergantung preferensi saja):

plot_notrend <- notrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = 0")
plot_postrend <- postrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = 0.2")
plot_negtrend <- negtrend |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("First Difference = -0.2")

ggpubr::ggarrange(plot_notrend, plot_postrend, plot_negtrend, nrow = 3)

Dapat disimulasikan proses MA atau AR yang tidak stasioner dengan suatu tren dengan mensimulasikan beda terlebih dahulu (menggunakan arima.sim), ditambah suatu konstanta, lalu mencari jumlah kumulatif. Terdapat juga parameter mean di fungsi arima.sim, tetapi parameter ini adalah parameter untuk \(E[e_t]\), bukan \(E[Y_t-Y_{t-1}]\). Proses dari nilai harapan white noise tertentu menjadi nilai harapan \(Y\) di suatu proses MA atau AR yang tak stasioner sangat tergantung pada model, yang diilustrasikan di sini.

startSpot <- 3
dt <- {arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd=2) + 1.5}  |> ts()
yt <- startSpot + cumsum(dt) |> ts()

dt_alt <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), mean = 1.5, sd=2)  |> ts()
yt_alt <- startSpot + cumsum(dt_alt) |> ts()

plot_dt <- dt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("Penambahan konstanta 1.5 di selisih")
plot_yt <- yt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")
plot_dt_alt <- dt_alt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai") + ggtitle("Mean 1.5 di parameter arima.sim")
plot_yt_alt <- yt_alt |> as_tsibble() |> 
  ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
  xlab("Obs") + ylab("Nilai")

ggpubr::ggarrange(plot_dt, plot_yt, plot_dt_alt, plot_yt_alt)

Terlihat di contoh di atas bahwa menambahkan konstanta 1.5 pada hasil arima.sim beda dengan memasukkan parameter mean = 1.5.

Data Bangkitan Baru

set.seed(8990)
dt_alt <- arima.sim(n=200, list(order=c(1,0,1),ar=c(.2), ma=.2), mean=0.2, sd=0.5)  |> ts()
postrend <- startSpot + cumsum(dt_alt) |> ts()

Plot Time Series

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

mean(postrend)
## [1] 33.75305
var(postrend)
## [1] 341.6068

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan, ditandai dengan adanya tren positif, tetapi stasioner dalam ragam, ditandai dengan adanya lebar pita pada plot yang cenderung sama.

ts.plot(diff(postrend))

Plot ACF

acf(postrend)

Uji ADF

adf.test(postrend)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend
## Dickey-Fuller = -1.9413, Lag order = 5, p-value = 0.6007
## alternative hypothesis: stationary

Plot Box-Cox

index <- seq(1:200)
bc = boxcox(postrend~index, lambda = seq(0.8,1.1,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.961
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.900 0.901 0.902 0.903 0.904 0.905 0.906 0.907 0.908 0.909 0.910 0.911
##  [13] 0.912 0.913 0.914 0.915 0.916 0.917 0.918 0.919 0.920 0.921 0.922 0.923
##  [25] 0.924 0.925 0.926 0.927 0.928 0.929 0.930 0.931 0.932 0.933 0.934 0.935
##  [37] 0.936 0.937 0.938 0.939 0.940 0.941 0.942 0.943 0.944 0.945 0.946 0.947
##  [49] 0.948 0.949 0.950 0.951 0.952 0.953 0.954 0.955 0.956 0.957 0.958 0.959
##  [61] 0.960 0.961 0.962 0.963 0.964 0.965 0.966 0.967 0.968 0.969 0.970 0.971
##  [73] 0.972 0.973 0.974 0.975 0.976 0.977 0.978 0.979 0.980 0.981 0.982 0.983
##  [85] 0.984 0.985 0.986 0.987 0.988 0.989 0.990 0.991 0.992 0.993 0.994 0.995
##  [97] 0.996 0.997 0.998 0.999 1.000 1.001 1.002 1.003 1.004 1.005 1.006 1.007
## [109] 1.008 1.009 1.010 1.011 1.012 1.013 1.014 1.015 1.016 1.017 1.018 1.019
## [121] 1.020 1.021 1.022

Partisi Data

Bagian 1

postrend1 <- postrend[1:100] |> ts()
mean(postrend1)
## [1] 18.84534
var(postrend1)
## [1] 116.7756

Plot Time Series

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

Plot ACF

acf(postrend1)

Uji ADF

adf.test(postrend1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend1
## Dickey-Fuller = -2.2384, Lag order = 4, p-value = 0.4779
## alternative hypothesis: stationary

Plot Boxcox

index <- seq(1:100)
bc = boxcox(postrend1~index, lambda = seq(0.5,1,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.747
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] 0.575 0.576 0.577 0.578 0.579 0.580 0.581 0.582 0.583 0.584 0.585 0.586
##  [13] 0.587 0.588 0.589 0.590 0.591 0.592 0.593 0.594 0.595 0.596 0.597 0.598
##  [25] 0.599 0.600 0.601 0.602 0.603 0.604 0.605 0.606 0.607 0.608 0.609 0.610
##  [37] 0.611 0.612 0.613 0.614 0.615 0.616 0.617 0.618 0.619 0.620 0.621 0.622
##  [49] 0.623 0.624 0.625 0.626 0.627 0.628 0.629 0.630 0.631 0.632 0.633 0.634
##  [61] 0.635 0.636 0.637 0.638 0.639 0.640 0.641 0.642 0.643 0.644 0.645 0.646
##  [73] 0.647 0.648 0.649 0.650 0.651 0.652 0.653 0.654 0.655 0.656 0.657 0.658
##  [85] 0.659 0.660 0.661 0.662 0.663 0.664 0.665 0.666 0.667 0.668 0.669 0.670
##  [97] 0.671 0.672 0.673 0.674 0.675 0.676 0.677 0.678 0.679 0.680 0.681 0.682
## [109] 0.683 0.684 0.685 0.686 0.687 0.688 0.689 0.690 0.691 0.692 0.693 0.694
## [121] 0.695 0.696 0.697 0.698 0.699 0.700 0.701 0.702 0.703 0.704 0.705 0.706
## [133] 0.707 0.708 0.709 0.710 0.711 0.712 0.713 0.714 0.715 0.716 0.717 0.718
## [145] 0.719 0.720 0.721 0.722 0.723 0.724 0.725 0.726 0.727 0.728 0.729 0.730
## [157] 0.731 0.732 0.733 0.734 0.735 0.736 0.737 0.738 0.739 0.740 0.741 0.742
## [169] 0.743 0.744 0.745 0.746 0.747 0.748 0.749 0.750 0.751 0.752 0.753 0.754
## [181] 0.755 0.756 0.757 0.758 0.759 0.760 0.761 0.762 0.763 0.764 0.765 0.766
## [193] 0.767 0.768 0.769 0.770 0.771 0.772 0.773 0.774 0.775 0.776 0.777 0.778
## [205] 0.779 0.780 0.781 0.782 0.783 0.784 0.785 0.786 0.787 0.788 0.789 0.790
## [217] 0.791 0.792 0.793 0.794 0.795 0.796 0.797 0.798 0.799 0.800 0.801 0.802
## [229] 0.803 0.804 0.805 0.806 0.807 0.808 0.809 0.810 0.811 0.812 0.813 0.814
## [241] 0.815 0.816 0.817 0.818 0.819 0.820 0.821 0.822 0.823 0.824 0.825 0.826
## [253] 0.827 0.828 0.829 0.830 0.831 0.832 0.833 0.834 0.835 0.836 0.837 0.838
## [265] 0.839 0.840 0.841 0.842 0.843 0.844 0.845 0.846 0.847 0.848 0.849 0.850
## [277] 0.851 0.852 0.853 0.854 0.855 0.856 0.857 0.858 0.859 0.860 0.861 0.862
## [289] 0.863 0.864 0.865 0.866 0.867 0.868 0.869 0.870 0.871 0.872 0.873 0.874
## [301] 0.875 0.876 0.877 0.878 0.879 0.880 0.881 0.882 0.883 0.884 0.885 0.886
## [313] 0.887 0.888 0.889 0.890 0.891 0.892 0.893 0.894 0.895 0.896 0.897 0.898
## [325] 0.899 0.900 0.901 0.902 0.903 0.904 0.905 0.906 0.907 0.908 0.909 0.910
## [337] 0.911 0.912 0.913 0.914 0.915 0.916 0.917 0.918 0.919

Bagian 2

postrend2 <- postrend[101:200] |> ts()
mean(postrend2)
## [1] 48.66076
var(postrend2)
## [1] 120.9194

Plot Time Series

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

Plot ACF

acf(postrend2)

Uji ADF

adf.test(postrend2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  postrend2
## Dickey-Fuller = -3.5331, Lag order = 4, p-value = 0.04268
## alternative hypothesis: stationary

Plot Boxcox

index <- seq(1:100)
bc = boxcox(postrend2~index, lambda = seq(-1,1.2,by=0.001))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.407
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##   [1] -0.019 -0.018 -0.017 -0.016 -0.015 -0.014 -0.013 -0.012 -0.011 -0.010
##  [11] -0.009 -0.008 -0.007 -0.006 -0.005 -0.004 -0.003 -0.002 -0.001  0.000
##  [21]  0.001  0.002  0.003  0.004  0.005  0.006  0.007  0.008  0.009  0.010
##  [31]  0.011  0.012  0.013  0.014  0.015  0.016  0.017  0.018  0.019  0.020
##  [41]  0.021  0.022  0.023  0.024  0.025  0.026  0.027  0.028  0.029  0.030
##  [51]  0.031  0.032  0.033  0.034  0.035  0.036  0.037  0.038  0.039  0.040
##  [61]  0.041  0.042  0.043  0.044  0.045  0.046  0.047  0.048  0.049  0.050
##  [71]  0.051  0.052  0.053  0.054  0.055  0.056  0.057  0.058  0.059  0.060
##  [81]  0.061  0.062  0.063  0.064  0.065  0.066  0.067  0.068  0.069  0.070
##  [91]  0.071  0.072  0.073  0.074  0.075  0.076  0.077  0.078  0.079  0.080
## [101]  0.081  0.082  0.083  0.084  0.085  0.086  0.087  0.088  0.089  0.090
## [111]  0.091  0.092  0.093  0.094  0.095  0.096  0.097  0.098  0.099  0.100
## [121]  0.101  0.102  0.103  0.104  0.105  0.106  0.107  0.108  0.109  0.110
## [131]  0.111  0.112  0.113  0.114  0.115  0.116  0.117  0.118  0.119  0.120
## [141]  0.121  0.122  0.123  0.124  0.125  0.126  0.127  0.128  0.129  0.130
## [151]  0.131  0.132  0.133  0.134  0.135  0.136  0.137  0.138  0.139  0.140
## [161]  0.141  0.142  0.143  0.144  0.145  0.146  0.147  0.148  0.149  0.150
## [171]  0.151  0.152  0.153  0.154  0.155  0.156  0.157  0.158  0.159  0.160
## [181]  0.161  0.162  0.163  0.164  0.165  0.166  0.167  0.168  0.169  0.170
## [191]  0.171  0.172  0.173  0.174  0.175  0.176  0.177  0.178  0.179  0.180
## [201]  0.181  0.182  0.183  0.184  0.185  0.186  0.187  0.188  0.189  0.190
## [211]  0.191  0.192  0.193  0.194  0.195  0.196  0.197  0.198  0.199  0.200
## [221]  0.201  0.202  0.203  0.204  0.205  0.206  0.207  0.208  0.209  0.210
## [231]  0.211  0.212  0.213  0.214  0.215  0.216  0.217  0.218  0.219  0.220
## [241]  0.221  0.222  0.223  0.224  0.225  0.226  0.227  0.228  0.229  0.230
## [251]  0.231  0.232  0.233  0.234  0.235  0.236  0.237  0.238  0.239  0.240
## [261]  0.241  0.242  0.243  0.244  0.245  0.246  0.247  0.248  0.249  0.250
## [271]  0.251  0.252  0.253  0.254  0.255  0.256  0.257  0.258  0.259  0.260
## [281]  0.261  0.262  0.263  0.264  0.265  0.266  0.267  0.268  0.269  0.270
## [291]  0.271  0.272  0.273  0.274  0.275  0.276  0.277  0.278  0.279  0.280
## [301]  0.281  0.282  0.283  0.284  0.285  0.286  0.287  0.288  0.289  0.290
## [311]  0.291  0.292  0.293  0.294  0.295  0.296  0.297  0.298  0.299  0.300
## [321]  0.301  0.302  0.303  0.304  0.305  0.306  0.307  0.308  0.309  0.310
## [331]  0.311  0.312  0.313  0.314  0.315  0.316  0.317  0.318  0.319  0.320
## [341]  0.321  0.322  0.323  0.324  0.325  0.326  0.327  0.328  0.329  0.330
## [351]  0.331  0.332  0.333  0.334  0.335  0.336  0.337  0.338  0.339  0.340
## [361]  0.341  0.342  0.343  0.344  0.345  0.346  0.347  0.348  0.349  0.350
## [371]  0.351  0.352  0.353  0.354  0.355  0.356  0.357  0.358  0.359  0.360
## [381]  0.361  0.362  0.363  0.364  0.365  0.366  0.367  0.368  0.369  0.370
## [391]  0.371  0.372  0.373  0.374  0.375  0.376  0.377  0.378  0.379  0.380
## [401]  0.381  0.382  0.383  0.384  0.385  0.386  0.387  0.388  0.389  0.390
## [411]  0.391  0.392  0.393  0.394  0.395  0.396  0.397  0.398  0.399  0.400
## [421]  0.401  0.402  0.403  0.404  0.405  0.406  0.407  0.408  0.409  0.410
## [431]  0.411  0.412  0.413  0.414  0.415  0.416  0.417  0.418  0.419  0.420
## [441]  0.421  0.422  0.423  0.424  0.425  0.426  0.427  0.428  0.429  0.430
## [451]  0.431  0.432  0.433  0.434  0.435  0.436  0.437  0.438  0.439  0.440
## [461]  0.441  0.442  0.443  0.444  0.445  0.446  0.447  0.448  0.449  0.450
## [471]  0.451  0.452  0.453  0.454  0.455  0.456  0.457  0.458  0.459  0.460
## [481]  0.461  0.462  0.463  0.464  0.465  0.466  0.467  0.468  0.469  0.470
## [491]  0.471  0.472  0.473  0.474  0.475  0.476  0.477  0.478  0.479  0.480
## [501]  0.481  0.482  0.483  0.484  0.485  0.486  0.487  0.488  0.489  0.490
## [511]  0.491  0.492  0.493  0.494  0.495  0.496  0.497  0.498  0.499  0.500
## [521]  0.501  0.502  0.503  0.504  0.505  0.506  0.507  0.508  0.509  0.510
## [531]  0.511  0.512  0.513  0.514  0.515  0.516  0.517  0.518  0.519  0.520
## [541]  0.521  0.522  0.523  0.524  0.525  0.526  0.527  0.528  0.529  0.530
## [551]  0.531  0.532  0.533  0.534  0.535  0.536  0.537  0.538  0.539  0.540
## [561]  0.541  0.542  0.543  0.544  0.545  0.546  0.547  0.548  0.549  0.550
## [571]  0.551  0.552  0.553  0.554  0.555  0.556  0.557  0.558  0.559  0.560
## [581]  0.561  0.562  0.563  0.564  0.565  0.566  0.567  0.568  0.569  0.570
## [591]  0.571  0.572  0.573  0.574  0.575  0.576  0.577  0.578  0.579  0.580
## [601]  0.581  0.582  0.583  0.584  0.585  0.586  0.587  0.588  0.589  0.590
## [611]  0.591  0.592  0.593  0.594  0.595  0.596  0.597  0.598  0.599  0.600
## [621]  0.601  0.602  0.603  0.604  0.605  0.606  0.607  0.608  0.609  0.610
## [631]  0.611  0.612  0.613  0.614  0.615  0.616  0.617  0.618  0.619  0.620
## [641]  0.621  0.622  0.623  0.624  0.625  0.626  0.627  0.628  0.629  0.630
## [651]  0.631  0.632  0.633  0.634  0.635  0.636  0.637  0.638  0.639  0.640
## [661]  0.641  0.642  0.643  0.644  0.645  0.646  0.647  0.648  0.649  0.650
## [671]  0.651  0.652  0.653  0.654  0.655  0.656  0.657  0.658  0.659  0.660
## [681]  0.661  0.662  0.663  0.664  0.665  0.666  0.667  0.668  0.669  0.670
## [691]  0.671  0.672  0.673  0.674  0.675  0.676  0.677  0.678  0.679  0.680
## [701]  0.681  0.682  0.683  0.684  0.685  0.686  0.687  0.688  0.689  0.690
## [711]  0.691  0.692  0.693  0.694  0.695  0.696  0.697  0.698  0.699  0.700
## [721]  0.701  0.702  0.703  0.704  0.705  0.706  0.707  0.708  0.709  0.710
## [731]  0.711  0.712  0.713  0.714  0.715  0.716  0.717  0.718  0.719  0.720
## [741]  0.721  0.722  0.723  0.724  0.725  0.726  0.727  0.728  0.729  0.730
## [751]  0.731  0.732  0.733  0.734  0.735  0.736  0.737  0.738  0.739  0.740
## [761]  0.741  0.742  0.743  0.744  0.745  0.746  0.747  0.748  0.749  0.750
## [771]  0.751  0.752  0.753  0.754  0.755  0.756  0.757  0.758  0.759  0.760
## [781]  0.761  0.762  0.763  0.764  0.765  0.766  0.767  0.768  0.769  0.770
## [791]  0.771  0.772  0.773  0.774  0.775  0.776  0.777  0.778  0.779  0.780
## [801]  0.781  0.782  0.783  0.784  0.785  0.786  0.787  0.788  0.789  0.790
## [811]  0.791  0.792  0.793  0.794  0.795  0.796  0.797  0.798  0.799  0.800
## [821]  0.801  0.802  0.803  0.804  0.805  0.806  0.807  0.808  0.809  0.810
## [831]  0.811  0.812  0.813  0.814  0.815  0.816  0.817  0.818  0.819  0.820
## [841]  0.821  0.822

Tidak Stasioner dalam Ragam, Stasioner dalam Rataan

arima.sim memiliki parameter sd yang dapat di-set beda.

set.seed(9089)
sd1 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 1)
sd5 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 5)
dtgab <- c(sd1,sd5) |> ts()

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data stasioner dalam rataan, ditandai dengan tidak adanya trend ataupun musiman pada data, namun tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot

Plot ACF

acf(dtgab)

Berdasarkan plot ACF, terlihat bahwa data stasioner dalam rataan, ditandai dengan plot ACF yang tails off dan cenderung membentuk gelombang sinus

Uji ADF

adf.test(dtgab)
## Warning in adf.test(dtgab): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab
## Dickey-Fuller = -5.2106, Lag order = 5, p-value = 0.01
## 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.01 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Partisi Data

Bagian 1

dtgab1 <- dtgab[1:66] |> ts()
mean(dtgab1)
## [1] 0.06376099
var(dtgab1)
## [1] 0.9929488

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data cenderung stasioner dalam rataan, ditandain dengan tidak adanya trend dan musiman pada data, serta stasioner dalam ragam, ditandai dengan lebar pita yang cenderung sama pada plot tersebut

Plot ACF

acf(dtgab1)

Berdasarkan plot ACF, terlihat bahwa data cenderung stasioner dalam rataan ditandai dengan plot ACF yang tails off dan cenderung membentuk gelombang sinus

Uji ADF

adf.test(dtgab1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab1
## Dickey-Fuller = -3.9613, Lag order = 4, p-value = 0.01691
## 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.01691 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Plot Boxcox

Bagian 2

dtgab2 <- dtgab[1:132] |> ts()
mean(dtgab2)
## [1] -0.2346268
var(dtgab2)
## [1] 8.376508

Plot Time Series

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

Berdasarkan plot data deret waktu tersebut, terlihat bahwa data stasioner dalam rataan, ditandai dengan data yang tidak menunjukkan adanya trend ataupun musiman, serta tidak stasioner dalam ragam ditandai dengan lebar pita pada plot yang cenderung berbeda di beberapa periode waktunya

Plot ACF

acf(dtgab2)

Berdasarkan plot ACF tersebut, terlihat bahwa data stasioner dalam rataan ditandai dengan plot ACF yang cuts off pada lag ke 2

Uji ADF

adf.test(dtgab2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtgab2
## Dickey-Fuller = -3.951, Lag order = 5, p-value = 0.01383
## 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.01383 yang kurang dari taraf nyata 5% dan menandakan bahwa data stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Tidak Stasioner dalam Rataan dan Ragam

Hal ini dapat disimulasikan dengan membangkitkan data yang tidak stasioner dalam ragam lalu membentuk trend menggunakan data tersebut

set.seed(8990)
sd2 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 2)
sd6 <- arima.sim(n=100, list(order=c(1,0,1),ar=c(.2), ma=.2), sd = 6)
datagab <- c(sd2,sd6)
dt_rg <- startSpot + cumsum(datagab) |> ts() 

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan, ditandai dengan adanya trend pada data dan tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot

Plot ACF

acf(dt_rg)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg
## Dickey-Fuller = -1.8362, Lag order = 5, p-value = 0.6447
## 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.6447 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Partisi Data

Bagian 1

dt_rg1 <- dt_rg[1:66] |> ts()
mean(dt_rg1)
## [1] 1.244075
var(dt_rg1)
## [1] 118.5542

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, namun cenderung stasioner dalam ragam karena memiliki lebar pita yang cenderung sama

Plot ACF

acf(dt_rg1)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg1)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg1
## Dickey-Fuller = -1.7373, Lag order = 4, p-value = 0.6816
## 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.6816 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Bagian 2

dt_rg2 <- dt_rg[67:132] |> ts()
mean(dt_rg2)
## [1] -14.41959
var(dt_rg2)
## [1] 1124.704

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, dan tidak stasioner dalam ragam karena memiliki lebar pita yang cenderung tidak sama

Plot ACF

acf(dt_rg2)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly) yang menandakan data tidak stasioner dalam rataan

Uji ADF

adf.test(dt_rg2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg2
## Dickey-Fuller = -1.0695, Lag order = 4, p-value = 0.9202
## 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.9202 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF

Bagian 3

dt_rg3 <- dt_rg[133:200] |> ts()
mean(dt_rg3)
## [1] 20.12677
var(dt_rg3)
## [1] 797.5286

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data tidak stasioner dalam rataan karena masih terdapat tren pada data, namun cenderung stasioner dalam ragam karena memiliki lebar pita yang cenderung sama

Plot ACF

acf(dt_rg3)

Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut menurun secara perlahan (tails off slowly)yang menandakan data tidak stasioner dalam rataan

Uji ADF

tseries::adf.test(dt_rg3,k=5)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_rg3
## Dickey-Fuller = -3.1644, Lag order = 5, p-value = 0.1022
## 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.323 yang lebih besar dari taraf nyata 5% dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF