Anda di halaman 1dari 29

LAPORAN PRAKTIKUM KE-II

“Analisis Deret Waktu dengan Softwere R”


Disusun untuk Memenuhi Laporan Praktikum
Komputasi Statistika

Oleh:
NUR HAYATI
185090500111032

Asisten :

Gina Amalia Husna (17509050111010)


Rosi Dwi Lestari (175090501111004)
Fachira Haneinanda J (175090507111014)
Febrina Khairani (175090507111030)

LABORATORIUM
MATEMATIKA PROGRAM
STUDI SARJANA MATEMATIKA
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU
PENGETAHUAN ALAM
UNIVERSITAS BRAWIJAYA
MALANG
2020
BAB 1
METODOLOGI
2.1. Langkah-langkah
a. Buka Aplikasi R-Studio dengan cara klik dua kali

b. Untuk mebuat lembar kerja baru klik File -> New File -> R
Script. Atau bisa juga dengan menekan tombol Ctrl+Shift+N
secara bersamaan

c. Masukkan syntax yang akan kita gunakan dan tekan Ctrl+L


untuk menbersihkan Console
d. untuk melihat hasilnya, blok semua syntax lalu klik Run. Atau
bisa juga dengan menekan Ctrl+Enter dimulai dari syntax yang
paling awal.
e. Pilih file csv yang akan digunakan, disini saya memakai laprak
data3-6.csv
f. Hingga muncul Output pada Console sebagai berikut
2.1. Source Code dan Penjelasan
Source Code Keterangan
library(nortest) menyiapkan package nortest yang
digunakan untuk uji normalitas
menyiapkan package forecast yang
library(forecast) digunakan untuk peramalan
ARIMA atau SARIMA
library(tseries) menyiapkan package tseries yaitu
untuk data deret waktu
data=read.csv(file. pemanggilan data csv yang akan
choose(),header=TRU kita gunakan, dengan metode
E, sep=";") memilih file langsung
z=data$Konsumsi pendeskripsian z yang akan
menyimpan data konsumsi
head(z) menampilkan beberapa nilai dari z
#type plot note untuk menampilkan plot
#d=titik, p note untuk menampilkan plot
plot(z, type="c") memplotkan data z dengan type
plot c

#mengecek mendeskripsikan judul yaitu


stasioneritas ragam mengecek stasioneritas ragam
BoxCox.lambda(z)
#kalau nilai nya 1 menampilkan besar lambda dengan
berarti sudah metode boxcox
stasioner ragam
z1=BoxCox(z,0.81300 pendeskripisan zariabel z1 sebagai
52) boxcox dari data z dengan besar
lambda 0,81
plot(z1, type="b", menampilakn plot dari z1 dengan
col="blue") type b dan warna biru
BoxCox.lambda(z1) menampilkan besar lambda dengan
metode boxcox dari data z1

#cek stasoneritas mendeskripsikan judul yaitu cek


rata2 pakai ACF dan stasoneritas rata2 pakai ACF dan
uji normal uji normal
layout(matrix(c(1,1
,2,3),2,2,
byrow=TRUE))
plot(z1, type="l", menampilakn plot dari z1 dengan
col="blue") type b dan warna biru
acf(z1) #karena
grafiknya turun
males (lebih dari 3 menampilakn plot pacf dari z1
lag pertama perlu
didiff)
pacf(z1) menampilakn plot acf dari z2

pendeskripsian variabel z2 sebagai


z2=diff(z1) z1 yang telah dilakukan
differencing
plot(z2, type="l", menampilakn plot dari z2 dengan
col="blue") type b dan warna biru
acf(z2) #sudah
stasioner rata rata menampilakn plot pacf dari z2
pacf(z2) menampilakn plot acf dari z2

note yang digunakan untuk


#p itu adalah pacf, penatapan model yang yang
q=acf, d=diff diperoleh dari melihat plot acf dan
pacf z2
#menentukan model,
karena pacf maka
mulainya dari 1, note untuk penentuan model
kalau acf mulainya
dari nol, maka
#p=1, d=1, q=1 note model yang diperoleh
adf.test(z2) #harus
tolak h0, karena h0 adf.test digunakan untuk menguji
nya tidak stasioner stasioneritas rata-rata dari z2

adf.test(z1) adf.test digunakan untuk menguji


stasioneritas rata-rata dari z1

##model Tentativ mendeskripsikan judul yaitu model


Tentativ
m1=Arima(z1,
order=c(1,1,1))
#pakai z satu mendefinisikan m1 sebagai model
karena diff nya arima(1,1,1)
udah di tulis satu
m2=Arima(z1, mendefinisikan m2 sebagai model
order=c(0,1,1)) arima(0,1,1)
m3=Arima(z1, mendefinisikan m3 sebagai model
order=c(1,1,0)) arima(1,1,0)
m4=Arima(z1,
order=c(0,1,0)) mendefinisikan m4 sebagai model
#0,1,0 itu random arima(0,1,0)
walk

#Cek normalitas mendeskripsikan judul yaitu cek


Sisaan normalitas sisaan
lillie.test(m1$resi
duals)$p.value p-value uji normalitas terhadap
#agar normal maka residual bagi m1
harus terima h0
lillie.test(m2$resi p-value uji normalitas terhadap
duals)$p.value residual bagi m2
lillie.test(m3$resi p-value uji normalitas terhadap
duals)$p.value residual bagi m3
lillie.test(m4$resi p-value uji normalitas terhadap
duals)$p.value residual bagi m4

#cek autokorelasi,
arahnya ke galat mendeskripsikan judul yaitu cek
sudah white noise autokorelasi
apa blm, jika acf
ada yg keluar maka
buang model iu
checkresiduals(m1) menampilkan plot residual dari
model m1
checkresiduals(m2) menampilkan plot residual dari
model m2
checkresiduals(m3) menampilkan plot residual dari
model m3
checkresiduals(m4)# menampilkan plot residual dari
dibuang model m4, dibuang karena ada lag
yang keluar dari batas

#Penentuan model mendeskripsikan judul yaitu


terbaik, cari yang penentuan model terbaik, cari nilai
paling kecil, AIC model yang terkecil
#prof heni :kalau
misal keduanya
tidak berbeda
signifikan maka
pakai kedua duanya
AIC(m1) nilai AIC m1
AIC(m2) nilai AIC m2
AIC(m3) nilai AIC m3

m3 model m3 terpilih karena memiliki


nilai AIC terkecil
#karena tadi
ditransformasi maka
Z nya di pangkat
sebesar lambda,
0.8130052
summary(m3) menampilkan rangkuman yang
didapat dari model m3

ma=auto.arima(z, ma adalah variabel yang mana akan


d=2, max.p=3, secara otomatis akan didapati
max.q=3, model terbaik secara instant
lambda="auto")
##cara mencari
model terbaik
ma pemanggilan variabel ma

#forecasting mendeskripsikan judul yaitu


forecasting atau peramalan
par(mfrow=c(1,1))
forecast(ma) proses peramalan model terbaik
yang didapatkan pada ma
plot(forecast(ma))
#kenapa plot nya
mendekati rata rata
atau lurus, soalnya
modelnya itu hanya menyajikan hasil peramalan ma
mengandung ma, dan dalam plot grafik
kita tidak punya
data residual,
makanya pakai rata
rata
BAB 2
DATA DAN INTERPRETASI HASIL

3.1. Data
Data yang digunakan untuk peramalan adalah data yang saya
ambil dari Gretl data 3-6, Disposable income and
Consumption, Ramanathan

Year Konsumsi
1959 7876
1960 7926
1961 7954
1962 8220
1963 8434
1964 8817
1965 9257
1966 9674
1967 9854
1968 10313
1969 10593
1970 10717
1971 10975
1972 11508
1973 11950
1974 11756
1975 11899
1976 12446
1977 12846
1978 13258
1979 13417
1980 13216
1981 13245
1982 13270
1983 13829
1984 14415
1985 14954
1986 15409
1987 15740
1988 16211
1989 16430
1990 16532
1991 16249
1992 16520
1993 16810
1994 17152

3.2. Interpretasi

Plot di atas merupakan plot data deret waktu dari data


Konsumsi dari tahun 1959 hingga 1994
Berdasarkan plot di ataskonsumsi tiap tahunnya meningkat
terus menerus secara drastis sehingga terindikasi pola trend
Cek Stasioneritas Ragam
Pada output R didapati bahwa data konsumsi tersebut
memiliki lambda sebesar 0.8130052, dimana nilai tersebut < 1
sehingga data belum stasioner terhadap ragam. Maka dilakukan
tranformasi menggunakan BoxCox sehingga didapati lambda dari z1
sebesar 1.000142 yang berarti data sudah stasioner terhadap ragam.

Cek Stasioneritas Rata-rata


Setelah kita tahu bahwa data sudah stasioner terhadap ragam, kita
cek apakah data kita juga sudah stasioner terhadap rata-rata atau
belum. Kita lihat pada plot ACF dan PACF sebagai berikut :
pada plot ACF diatas bias kita lihat bahwa lebih dari 3 lag yang
keluar dari batas rata-rata yang menandakan bahwa data belum
stasioner terhadap rata-rata. Maka dilakukan differencing 1x dan
dilihat kembali plot ACF dan PACF nya.

Pada plot ACF dan PACF di atas dapat dilihat bahwa tidak
banyak lag yang keluar seperti sebelimnya, sehingga bisa
disimpulkan bahwa setelah dilakukan differencing 1x data sudah
stasioner terhadap rata-rata.

Penentuan model ARIMA


Ordo ARIMA didapati dari plot ACF dan PACF yang sudah
stasioner terhadap ragam dan rata-rata. Dapat dilihat pada plot PACF
lag yang signifikan hanya lag 1 sehingga p=1. Sedangkan pada plot
ACF lag signifikan juga hanya terdapat pada lag 1, maka ordo q=1.
Karena telah dilakukan differencing 1x maka ordo ARIMA(p,d,q)
menjadi ARIMA(1,1,1)

cek menggunakan ADF test.

pada hasil ADF test terhadap kedua data tersebut didapati p-value
lebih dari alpha = 0.05 yang artinya data belum stasioner.

Penentuan model ARIMA


Setelah didapati model ARIMA(1,1,1) selanjutnya adalah penentuan
model Tentatif yaitu model yang mungkin lebih baik dari model
yang didapat. Model tentatif yang didapat diantaranya
ARIMA(0,1,1) , ARIMA(1,1,0), ARIMA(0,1,0). Selanjutnya kita
akan cek residual dari model tantatif yang telat ditentukan. Jika
terdapat lag yang keluar dari batas maka buang model tersebut.

Uji asumsi untuk sisaan model tentative


1. Normalitas Sisaan
Dari semua model tentativ dicek normalitasnya dan didapatkan :

Dari hasil R diatas dapat disimpulkan bahwa semua model tentative


memiliki nilai p-value > 0.05 maka terima H0 yang berarti semua
model memiliki residual yang menyebar normal.
2. Autokorelasi (Apakah galat sudah white noise atau
belum)
Dari uji Ljung Box test m1, m2, m3, m4 semua terima H0 karena p-
value > 0.05
Plot residual :
Dari keempat plot model residual yang ada, terdapat lag yang keluar
batas pada model m4, sehingga buang model m4.

Penentuan model Terbaik


Penentuan model terbaik dilihat dari nilai AIC yang terkecil dari
model yang terpilih sebelumnya. Nilai AIC yang didapat sebagai
berikut :
Dari hasil tersebut didapati AIC terkecil adalah pada model m3,
sehinggal model terbaik yang diperoleh adalah ARIMA(1,1,0)

Ringkasan model m3:

Forecast
Dari model terbaik didapatkan hasil forecasting sebagai berikut :
BAB IV
PENUTUP

4.1. Kesimpulan
Analisis peramalan menggunakan Software Rstudio,
dapat diketahui melalui laporan ini analisis peramalan
konsumsi 10 tahun kedepan akan meningkat seperti
tahun-tahun sebelumnya.
4.2. Saran
Harus teliti saat mengin[put syntax, lebih baik di Run
setiap baris agar tahu error dibagian awal-awal, karena
itu akan berpengaruh terhadap proses selanjutnya.
LAMPIRAN

> library(nortest)
> library(forecast)
> library(tseries)
> data=read.csv(file.choose(),header=TRUE,
sep=";")
> z=data$Konsumsi
> head(z)
[1] 7876 7926 7954 8220 8434 8817
> #type plot
> #d=titik, p
> plot(z, type="c")

>
> #mengecek stasioneritas ragam
> BoxCox.lambda(z) #kalau nilai nya 1 berarti
sudah stasioner ragam
[1] 0.8130052
> z1=BoxCox(z,0.8130052)
> plot(z1, type="b", col="blue")
> BoxCox.lambda(z1)
LAMPIRAN
[1] 1.000142
>
> #cek stasoneritas rata2 pakai ACF dan uji
normal
> layout(matrix(c(1,1,2,3),2,2, byrow=TRUE))
> plot(z1, type="l", col="blue")

> acf(z1) #karena grafiknya turun males (lebih


dari 3 lag pertama perlu didiff)
> pacf(z1)

>
> z2=diff(z1)
> plot(z2, type="l", col="blue")
> acf(z2) #sudah stasioner rata rata
> pacf(z2)

>
LAMPIRAN
> #p itu adalah pacf, q=acf, d=diff
> #menentukan model, karena pacf maka mulainya
dari 1, kalau acf mulainya dari nol, maka
> #p=1, d=1, q=1

> adf.test(z2) #harus tolak h0, karena h0 nya


tidak stasioner

Augmented Dickey-Fuller Test

data: z2
Dickey-Fuller = -3.4952, Lag order = 3, p-
value = 0.05995
alternative hypothesis: stationary

> adf.test(z1)

Augmented Dickey-Fuller Test

data: z1
Dickey-Fuller = -2.9253, Lag order = 3, p-
value = 0.2131
alternative hypothesis: stationary
>
> ##model Tentativ
> m1=Arima(z1, order=c(1,1,1)) #pakai z satu
karena diff nya udah di tulis satu
> m2=Arima(z1, order=c(0,1,1))
> m3=Arima(z1, order=c(1,1,0))
> m4=Arima(z1, order=c(0,1,0)) #0,1,0 itu
random walk
>
> #Cek normalitas Sisaan
> lillie.test(m1$residuals)$p.value #agar
normal maka harus terima h0
[1] 0.4613519
> lillie.test(m2$residuals)$p.value
[1] 0.502327
> lillie.test(m3$residuals)$p.value
LAMPIRAN
[1] 0.5287275
> lillie.test(m4$residuals)$p.value
[1] 0.1852677
>
> #cek autokorelasi, arahnya ke galat sudah
white noise apa blm, jika acf ada yg keluar
maka buang model iu

> checkresiduals(m1)

Ljung-Box test

data: Residuals from ARIMA(1,1,1)


Q* = 4.4097, df = 5, p-value = 0.4921

Model df: 2. Total lags used: 7

> checkresiduals(m2)

Ljung-Box test

data: Residuals from ARIMA(0,1,1)


Q* = 6.1823, df = 6, p-value = 0.4031

Model df: 1. Total lags used: 7


LAMPIRAN

> checkresiduals(m3)

Ljung-Box test

data: Residuals from ARIMA(1,1,0)


Q* = 4.2176, df = 6, p-value = 0.6473

Model df: 1. Total lags used: 7


LAMPIRAN
> checkresiduals(m4)#dibuang

Ljung-Box test

data: Residuals from ARIMA(0,1,0)


Q* = 12.663, df = 7, p-value = 0.08076

Model df: 0. Total lags used: 7

>
> #Penentuan model terbaik, cari yang paling
kecil,
> #prof heni :kalau misal keduanya tidak
berbeda signifikan maka pakai kedua duanya
> AIC(m1)
[1] 364.4758
> AIC(m2)
[1] 371.8553
> AIC(m3)
[1] 362.5175
>
> m3
Series: z1
ARIMA(1,1,0)
Coefficients: LAMPIRAN
ar1
0.7244
s.e. 0.1112

sigma^2 estimated as 1658: log likelihood=-


179.26
AIC=362.52 AICc=362.89 BIC=365.63
> #karena tadi ditransformasi maka Z nya di
pangkat sebesar lambda, 0.8130052
> summary(m3)
Series: z1
ARIMA(1,1,0)

Coefficients:
ar1
0.7244
s.e. 0.1112

sigma^2 estimated as 1658: log likelihood=-


179.26
AIC=362.52 AICc=362.89 BIC=365.63

Training set error measures:


ME RMSE MAE
MPE MAPE MASE ACF1
Training set 13.31207 39.56932 30.06462
0.5361607 1.156467 0.5765572 -0.1241294
>
> ma=auto.arima(z, d=2, max.p=3, max.q=3,
lambda="auto") #
#cara mencari model terbaik
> ma
Series: z
ARIMA(0,2,0)
Box Cox transformation: lambda= 0.8130052

sigma^2 estimated as 1885: log likelihood=-


176.45
AIC=354.9 AICc=355.03 BIC=356.43
> LAMPIRAN
> #forecasting
> par(mfrow=c(1,1))
> forecast(ma)
Point Forecast Lo 80 Hi 80 Lo 95
Hi 95
37 17495.28 17150.15 17841.69 16967.97
18025.58
38 17839.82 17067.01 18618.95 16660.52
19033.89
39 18185.62 16891.32 19497.38 16213.51
20198.61
40 18532.64 16637.16 20465.14 15649.60
21502.35
41 18880.89 16314.27 21514.61 14984.90
22934.15
42 19230.34 15929.96 22640.58 14231.88
24486.56

43 19580.99 15490.05 23839.23 13400.88


26154.25
44 19932.81 14999.38 25107.67 12500.93
27933.21
45 20285.79 14462.16 26443.63 11540.31
29820.29
46 20639.93 13882.15 27845.27 10526.87
31812.97
> plot(forecast(ma)) #kenapa plot nya
mendekati rata rata atau lurus, soalnya
modelnya itu hanya mengandung ma, dan kita
tidak punya data residual, makanya pakai rata
rata

Anda mungkin juga menyukai