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)
library("rio")
Data yang digunakan adalah data penumpang masuk menurut maskapai penerbangan. Data penumpang maskapai China Eastern Airlines tujuan ke China.
data1 = import("https://raw.githubusercontent.com/khenihikmah/praktikummpdw/main/Pertemuan1/Data%20Penumpang%20Pesawat.csv")
data1
## Month Passengers
## 1 1 13224
## 2 2 10789
## 3 3 6434
## 4 4 6433
## 5 5 4002
## 6 6 3540
## 7 7 7214
## 8 8 5294
## 9 9 4570
## 10 10 7315
## 11 11 7210
## 12 12 7801
## 13 13 10677
## 14 14 13367
## 15 15 8047
## 16 16 7286
## 17 17 5440
## 18 18 6423
## 19 19 10193
## 20 20 8830
## 21 21 8170
## 22 22 10606
## 23 23 9898
## 24 24 12807
## 25 25 18810
## 26 26 14584
## 27 27 8525
## 28 28 7987
## 29 29 7595
## 30 30 8146
## 31 31 14233
## 32 32 11762
## 33 33 10758
## 34 34 13648
## 35 35 11995
## 36 36 12600
## 37 37 16191
## 38 38 13642
## 39 39 14349
## 40 40 14261
## 41 41 12606
## 42 42 12565
## 43 43 15547
## 44 44 13013
## 45 45 12823
## 46 46 15167
## 47 47 17486
## 48 48 18651
## 49 49 21201
## 50 50 22568
## 51 51 19143
## 52 52 18401
## 53 53 15417
## 54 54 14021
## 55 55 17872
## 56 56 14866
## 57 57 16354
## 58 58 15542
## 59 59 15501
## 60 60 17671
## 61 61 28195
## 62 62 23112
## 63 63 15725
## 64 64 14801
## 65 65 13887
## 66 66 12924
## 67 67 17184
## 68 68 14702
## 69 69 13758
## 70 70 16287
## 71 71 14964
## 72 72 22199
## 73 73 27937
## 74 74 28596
## 75 75 19387
## 76 76 15145
## 77 77 14393
## 78 78 13101
## 79 79 16482
## 80 80 14852
## 81 81 16740
## 82 82 21313
## 83 83 20606
## 84 84 24804
## 85 85 35429
## 86 86 36264
## 87 87 23066
## 88 88 23386
## 89 89 17894
## 90 90 17799
## 91 91 22409
## 92 92 16729
## 93 93 17522
## 94 94 21301
## 95 95 24107
## 96 96 32365
## 97 97 45646
## 98 98 37151
## 99 99 29907
## 100 100 30467
## 101 101 24784
## 102 102 22659
## 103 103 33972
## 104 104 26180
## 105 105 23997
## 106 106 30318
## 107 107 26439
## 108 108 32959
## 109 109 43647
## 110 110 45129
## 111 111 33745
## 112 112 29896
## 113 113 22655
## 114 114 21210
## 115 115 32686
## 116 116 27857
## 117 117 23826
## 118 118 31235
## 119 119 30048
## 120 120 37872
## 121 121 50330
## 122 122 47541
## 123 123 31185
## 124 124 31263
## 125 125 32392
## 126 126 29729
## 127 127 36012
## 128 128 33170
## 129 129 30961
## 130 130 38057
## 131 131 37204
## 132 132 39130
data <- ts(data1$Passengers)
ts.plot(data, xlab="Time Period ", ylab="Penumpang China Eastern Airlines",
main = "Time Series Plot")
points(data)
mean(data)
## [1] 19937.08
plot_stas <- data |> as_tsibble() |>
ggplot(aes(x = index, y = value)) + geom_line() + theme_bw() +
xlab("Obs") + ylab("Nilai")
plot_stas
mean(data)
## [1] 19937.08
Plot deret waktu di atas menunjukkan bahwa data tidak stasioner dalam rataan, ditandai dengan data yang tidak menyebar di sekitar nilai tengahnya dan tidak stasioner dalam ragam, ditandai dengan lebar pita yang cenderung berbeda. Sehingga dapat dikatakan bahwa data AirPassengers tidak stasioner dan mengandung musiman.
acf(data)
Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off (meluruh menjadi nol secara asimptotik) yang mengindikasikan bahwa data tidak stasioner.
tseries::adf.test(data)
## Warning in tseries::adf.test(data): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -5.2488, 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 tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF. Jika menggunakan hasil eksplorasi menandakan data tidak stasioner dalam rataan karena data trend.
Kemudian dilanjutkan uji KPSS untuk uji statioer rataanya.
kpss.test(data,null="Level")
## Warning in kpss.test(data, null = "Level"): p-value smaller than printed
## p-value
##
## KPSS Test for Level Stationarity
##
## data: data
## KPSS Level = 2.3729, Truncation lag parameter = 4, p-value = 0.01
\(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.
Maka dari itu, harus dilakukan diferensiasi. Diferensiasi yang pertama adalah diferensiasi guna menghilangkan efek musiman pada data yang menyebabkan data menjadi tidak stasioner.
AP.dslog=diff(log(data),differences=1,lag=24)
adf.test(AP.dslog)
##
## Augmented Dickey-Fuller Test
##
## data: AP.dslog
## Dickey-Fuller = -2.9551, Lag order = 4, p-value = 0.1804
## 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.1804 yang lebih besar dari taraf nyata 5% sehingga terima \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.
index <- seq(1:132)
bc = boxcox(data~index, lambda = seq(-4,6, by=0.01))
#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.27
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
## [1] 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24
## [16] 0.25 0.26 0.27 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39
## [31] 0.40 0.41 0.42 0.43 0.44 0.45
Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 0.27 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0.10 dan batas atas 0.45. Selang tersebut tidak memuat nilai satu sehingga dapat dikatakan bahwa data bangkitan tidak stasioner dalam ragam.
dt_stas1 <- data[1:65] |> ts()
mean(dt_stas1)
## [1] 12566.02
var(dt_stas1)
## [1] 25077822
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 tidak stasioner dalam rataan, ditandai dengan data yang tidak menyebar di sekitar nilai tengahnya dan tidak stasioner dalam ragam, ditandai dengan lebar pita yang cenderung berbeda. # Plot ACF
acf(data)
Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off slowly dan membentuk gelombang sinus.
tseries::adf.test(data)
## Warning in tseries::adf.test(data): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -5.2488, 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 tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF. Jika menggunakan hasil eksplorasi menandakan data tidak stasioner dalam rataan karena data trend.
Kemudian dilanjutkan uji KPSS untuk uji statioer rataanya.
kpss.test(data,null="Level")
## Warning in kpss.test(data, null = "Level"): p-value smaller than printed
## p-value
##
## KPSS Test for Level Stationarity
##
## data: data
## KPSS Level = 2.3729, Truncation lag parameter = 4, p-value = 0.01
\(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.
Maka dari itu, harus dilakukan diferensiasi. Diferensiasi yang pertama adalah diferensiasi guna menghilangkan efek musiman pada data yang menyebabkan data menjadi tidak stasioner.
AP.dslog=diff(log(data),differences=1,lag=24)
adf.test(AP.dslog)
##
## Augmented Dickey-Fuller Test
##
## data: AP.dslog
## Dickey-Fuller = -2.9551, Lag order = 4, p-value = 0.1804
## 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.1804 yang lebih besar dari taraf nyata 5% sehingga terima \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.
index <- seq(1:65)
bc = boxcox(dt_stas1~index, lambda = seq(-4,7,by=1))
#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.4444444
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
## [1] 0.1111111 0.2222222 0.3333333 0.4444444 0.5555556 0.6666667 0.7777778
## [8] 0.8888889
Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 0.4444444 dan pada selang kepercayaan 95% nilai memiliki batas atas 0.8888889 dan batas bawah 0.1111111. Selang tersebut tidak memuat nilai satu sehingga tidak dapat dikatakan bahwa data bangkitan stasioner dalam ragam.
dt_stas2 <- data[1:114] |> ts()
mean(dt_stas2)
## [1] 17642.08
var(dt_stas2)
## [1] 79774344
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 tidak stasioner dalam rataan, ditandai dengan data yang tidak menyebar di sekitar nilai tengahnya dan tidak stasioner dalam ragam, ditandai dengan lebar pita yang cenderung berbeda.
acf(data)
Berdasarkan plot ACF, terlihat bahwa plot ACF pada data tersebut cenderung tails off slowly dan membentuk gelombang sinus.
tseries::adf.test(data)
## Warning in tseries::adf.test(data): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: data
## Dickey-Fuller = -5.2488, 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 tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF. Jika menggunakan hasil eksplorasi menandakan data tidak stasioner dalam rataan karena data trend.
Kemudian dilanjutkan uji KPSS untuk uji statioer rataanya.
kpss.test(data,null="Level")
## Warning in kpss.test(data, null = "Level"): p-value smaller than printed
## p-value
##
## KPSS Test for Level Stationarity
##
## data: data
## KPSS Level = 2.3729, Truncation lag parameter = 4, p-value = 0.01
\(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.
Maka dari itu, harus dilakukan diferensiasi. Diferensiasi yang pertama adalah diferensiasi guna menghilangkan efek musiman pada data yang menyebabkan data menjadi tidak stasioner.
AP.dslog=diff(log(data),differences=1,lag=24)
adf.test(AP.dslog)
##
## Augmented Dickey-Fuller Test
##
## data: AP.dslog
## Dickey-Fuller = -2.9551, Lag order = 4, p-value = 0.1804
## 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.1804 yang lebih besar dari taraf nyata 5% sehingga terima \(H_0\) dan menandakan bahwa data tidak stasioner dalam rataan. Hal ini sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.
index <- seq(1:114)
bc = boxcox(dt_stas2~index, lambda = seq(-4,5,by=1))
#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.1818182
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
## [1] 0.00000000 0.09090909 0.18181818 0.27272727 0.36363636
Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 0.1818182 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0.00000000 dan batas atas 0.36363636. Selang tersebut tidak memuat nilai satu sehingga tidak dapat dikatakan bahwa data bangkitan stasioner dalam ragam.