Packages

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(tsibble)
## Warning: package 'tsibble' was built under R version 4.2.3
## 
## 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)
## Warning: package 'MASS' was built under R version 4.2.3

Impor Data

datalat5 <- rio::import("https://raw.githubusercontent.com/afhkaniase/praktikum-mpdw/main/Data/Data%20Temperatur%20Portugal%202023.csv")
str(datalat5)
## 'data.frame':    212 obs. of  2 variables:
##  $ Periode    : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Temperature: num  15.9 11.1 10.2 9.9 9.9 11 14.8 16.2 15.4 14.4 ...
head(datalat5)
##   Periode Temperature
## 1       1        15.9
## 2       2        11.1
## 3       3        10.2
## 4       4         9.9
## 5       5         9.9
## 6       6        11.0

Mengubah data agar terbaca sebagai data deret waktu dengan fungsi ts() .

datalat5.ts <- ts(datalat5$Temperature)
datalat5.ts
## Time Series:
## Start = 1 
## End = 212 
## Frequency = 1 
##   [1] 15.9 11.1 10.2  9.9  9.9 11.0 14.8 16.2 15.4 14.4 13.9 11.5 11.6 10.5 11.6
##  [16] 12.9 12.8  9.4  9.9 14.0 13.7 10.2  8.2  8.3  7.6  8.8  9.3  8.3  7.5  7.5
##  [31]  8.5  8.3  8.3 10.0 11.6 11.7 11.0  9.7  9.5 12.1 10.4  9.6 11.4 12.3 12.3
##  [46] 14.4 13.7 13.9 14.4 13.9 13.8 13.5 12.5  9.8  7.9  8.8 10.6  9.9  8.5  8.1
##  [61]  8.2  9.5 10.5 11.7 13.3 14.2 15.8 16.5 15.4 16.9 15.2 15.2 14.4 14.3 13.2
##  [76] 14.7 13.7 14.5 14.7 14.3 13.9 14.1 16.0 14.2 15.6 15.7 17.4 17.0 16.8 17.0
##  [91] 15.8 16.3 15.1 17.7 19.0 19.0 17.5 17.1 18.2 16.1 16.7 15.3 13.2 14.7 18.1
## [106] 20.2 22.9 21.4 19.2 16.2 14.4 15.8 16.7 18.7 18.6 20.2 23.7 21.6 18.8 19.0
## [121] 21.0 21.7 20.4 18.7 18.2 18.9 19.2 19.4 19.5 17.4 17.6 16.7 17.7 18.1 17.4
## [136] 19.8 21.6 20.0 19.5 19.3 18.2 18.1 19.2 20.2 21.8 17.7 18.8 18.5 18.2 19.0
## [151] 18.9 19.4 20.0 20.1 20.6 21.6 22.0 21.4 20.0 20.0 20.9 20.1 20.6 20.0 21.0
## [166] 24.0 24.4 22.1 21.3 20.5 20.4 19.9 21.7 26.0 27.4 25.1 24.7 23.7 23.6 21.5
## [181] 21.9 23.7 24.6 22.2 21.5 21.4 21.5 21.1 21.9 21.5 23.3 22.5 22.8 23.9 22.7
## [196] 21.7 20.3 22.0 22.2 21.8 21.3 21.2 21.6 20.9 21.4 20.6 22.4 20.5 22.2 23.3
## [211] 22.6 21.9

Plot Time Series

ts.plot(datalat5.ts, xlab="Periode", ylab="Temperatur", 
        main = "Time Series Plot")
points(datalat5.ts)

mean(datalat5.ts)
## [1] 16.825
var(datalat5.ts)
## [1] 22.60283

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(datalat5.ts)

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(datalat5.ts)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  datalat5.ts
## Dickey-Fuller = -3.7167, Lag order = 5, p-value = 0.02419
## 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.02419 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.

Plot Box-Cox

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

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 1.49
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.30 1.31 1.32 1.33
## [16] 1.34 1.35 1.36 1.37 1.38 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48
## [31] 1.49 1.50 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.60 1.61 1.62 1.63
## [46] 1.64 1.65 1.66 1.67 1.68 1.69 1.70 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78
## [61] 1.79 1.80

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

Partisi Data

Bagian 1

dt_stas1 <- datalat5.ts[1:123] |> ts()
mean(dt_stas1)
## [1] 13.82846
var(dt_stas1)
## [1] 14.44435

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data partisi bagian pertama tidak stasioner dalam rataan karena masih terdapat tren pada data dan tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot.

Plot ACF

acf(dt_stas1)

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

Uji ADF

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

Plot Boxcox

index <- seq(1:123)
bc = boxcox(dt_stas1~index, lambda = seq(-1,4,by=1))

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 0.8686869
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 0.3636364 0.4141414 0.4646465 0.5151515 0.5656566 0.6161616 0.6666667
##  [8] 0.7171717 0.7676768 0.8181818 0.8686869 0.9191919 0.9696970 1.0202020
## [15] 1.0707071 1.1212121 1.1717172 1.2222222 1.2727273 1.3232323

Gambar di atas menunjukkan nilai rounded value (\(\lambda\)) optimum sebesar 0.8686869 dan pada selang kepercayaan 95% nilai memiliki batas bawah 0.3636364 dan batas atas 1.3232323. Selang tersebut memuat nilai satu sehingga dapat dikatakan bahwa data partisi bagian pertama stasioner dalam ragam.

Bagian 2

dt_stas2 <- datalat5.ts[1:201] |> ts()
mean(dt_stas2)
## [1] 16.55871
var(dt_stas2)
## [1] 22.43354

Plot Time Series

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

Berdasarkan plot time series tersebut, terlihat bahwa data partisi bagian kedua tidak stasioner dalam rataan karena masih terdapat tren pada data dan tidak stasioner dalam ragam, ditandai dengan adanya perbedaan lebar pita pada plot.

Plot ACF

acf(dt_stas2)

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

Uji ADF

adf.test(dt_stas2)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dt_stas2
## Dickey-Fuller = -3.8037, Lag order = 5, p-value = 0.02004
## 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.02004 yang lebih kecil dari taraf nyata 5% sehingga tolak \(H_0\) dan menandakan bahwa data partisi bagian kedua stasioner dalam rataan. Hal ini tidak sesuai dengan hasil eksplorasi menggunakan plot time series dan plot ACF.

Plot Boxcox

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

#Nilai Rounded Lambda
lambda <- bc$x[which.max(bc$y)]
lambda
## [1] 1.414141
#SK
bc$x[bc$y > max(bc$y) - 1/2 * qchisq(.95,1)]
##  [1] 1.090909 1.131313 1.171717 1.212121 1.252525 1.292929 1.333333 1.373737
##  [9] 1.414141 1.454545 1.494949 1.535354 1.575758 1.616162 1.656566 1.696970

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