Ekonometrik
Tugas 5
| Kontak | : \(\downarrow\) |
| yosia.yosia@student.matanauniversity.ac.id | |
| yyosia | |
| RPubs | https://rpubs.com/yosia/ |
Introduction
Time series adalah data yang dikumpulkan untuk satu entitas dari waktu ke waktu.jadi data secara berurutan selama beberapa waktu. Grafik deret waktu dapat digunakan untuk memvisualisasikan tren dalam jumlah atau nilai numerik dari waktu ke waktu. Karena informasi tanggal dan waktu adalah data kategorikal berkelanjutan (dinyatakan sebagai rentang nilai), titik diplot sepanjang sumbu x dan dihubungkan oleh garis kontinu. Data yang hilang ditampilkan dengan garis putus-putus.
Data deret waktu adalah kumpulan pengamatan yang diperoleh melalui pengukuran berulang sepanjang waktu. Plot titik-titik pada grafik, dan salah satu sumbu Anda akan selalu menjadi waktu.
Data deret waktu ada di mana-mana, karena waktu adalah konstituen dari segala sesuatu yang dapat diamati. Saat dunia kita semakin terinstrumentasi, sensor dan sistem terus-menerus memancarkan aliran data deret waktu tanpa henti. Data tersebut memiliki banyak aplikasi di berbagai industri. Mari kita letakkan ini dalam konteks melalui beberapa contoh.
Time Series Object
Time series object ini adalah urutan angka yang dikumpulkan dari informasi, dan angkanya berurutan.
| Year | Observation |
|---|---|
| 2007 | 30 |
| 2008 | 60 |
| 2009 | 90 |
| 2010 | 120 |
| 2011 | 150 |
| 2012 | 180 |
| 2013 | 210 |
| 2014 | 240 |
| 2015 | 270 |
| 2016 | 300 |
| 2017 | 330 |
| 2018 | 360 |
| 2019 | 390 |
| 2020 | 420 |
Kita pakai object ts() digunakan untuk membuat time
series object
dt <- ts(c(30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330,360,390, 420), start=2007)
dt## Time Series:
## Start = 2007
## End = 2020
## Frequency = 1
## [1] 30 60 90 120 150 180 210 240 270 300 330 360 390 420
Lalu kita melihat jika dalam per tahun, maka kita melihat dalam setiap bulan.
y <- ts(dt, start=2020, frequency=12)
y## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2020 30 60 90 120 150 180 210 240 270 300 330 360
## 2021 390 420
untuk menganalisa kita harus mendasarkan dengan fungsi
ts()
Time Plots
di sesi ini kita ingin mengamati time series dalam plot, jadi kita memvisulisasikan nya dengan plot. dan kita juga bisa mengambil kesimpulan dari plot yang di visualisasikan dari data kita.
library(fpp) # Data for "Forecasting: principles and practice"
library (DT)
datatable(melsyd,
caption = htmltools::tags$caption(
style = 'caption-side: bottom; text-align: center;',
htmltools::em('Table 1: Passengers: Melbourne-Sydney')),
options = list (dom='t'))library(ggplot2)
autoplot(melsyd[, "Economy.Class"]) +
ggtitle("Figure 1: Economy class passengers: Melbourne-Sydney")+
xlab ("Year") +
ylab ("Thousands")Dari plot diatas kita melihat bahwa pada tahun 1989 tidak ada penumpang yang menaiki pesawat dan di tahun 1991 adalah penumpang tertinggi pada tahun itu.
setah itu kita akan menggunakan fungsi autoplot() maka
secara otomatis menghasilkan plot yang sesuai dari apa pun yang ada di
argumen pertama.
autoplot(a10)+
ggtitle("Figure 2: Antidiabetic drug sales")+
ylab("$ million")+
xlab ("Year")dari plot diatas kita melihat bahwa setiap tahun penghasilan dari penjualan obat terus meningkat, namun terjadi penurunan disebabkan oleh skema subsidi pemerintah yang membuat pasien hemat biaya untuk menimbun obat di akhir tahun.
Time Series Pattern
Time series ini memresprentasikan grafis dari hubungan waktu dengan variabel yang perlu kita ramalkan atau prediksi. ada beberapa pattern dalam time series:
Trend
Biasanya, data deret waktu menunjukkan fluktuasi acak. plot ini dapat menunjukkan pergeseran atau pergerakan bertahap ke nilai yang lebih tinggi atau lebih rendah selama suatu periode. hal tersebut menunjukkan pola tren yang tersedia dalam data. Pada plot sebelumnya telah menunjukan tren data penjualan obat antidiabetes.
Seasonal
Pola musiman dikenali dengan mengamati pola yang berulang selama periode yang berurutan. Musiman adalah jumlah langkah waktu yang diperlukan untuk siklus data penuh, setelah itu siklus berulang sepanjang deret waktu. jadi bisa hitungan hari, bulan, minggu,dll
Cyclic
Pola siklis terjadi jika plot deret waktu menunjukkan urutan titik-titik di atas dan di bawah garis tren yang berlangsung selama lebih dari satu tahun secara bergantian. Berbagai rangkaian waktu ekonomi menunjukkan perilaku siklus dengan pengamatan yang teratur di bawah dan di atas garis tren. Contoh gambar dari Cyclic pattern
Penjualan perumahan bulanan (plot pertama) menunjukkan musim yang kuat dalam setiap tahun, serta beberapa perilaku siklus yang kuat dengan jangka waktu sekitar 6-10 tahun. Tidak ada tren yang jelas dalam data selama periode ini.
Kontrak treasury bill AS (plot kedua) menunjukkan hasil dari pasar Chicago selama 100 hari perdagangan berturut-turut pada tahun 1981. Di sini tidak ada musim namun tren mengalami penurunan yang jelas.Pada plot ini hanya dalam 100 hari, maka tren tersebut tampaknya menjadi tren.
Produksi listrik triwulanan Australia (plot ketiga) menunjukkan tren peningkatan yang kuat, dengan musim yang kuat. Tidak ada bukti perilaku siklik di sini.
Perubahan harian pada harga saham penutupan Google (plot keempat) tidak memiliki tren, musiman, atau perilaku siklus. Ada fluktuasi acak yang tampaknya tidak dapat diprediksi, dan tidak ada pola kuat yang akan membantu mengembangkan model peramalan.
Seasonal Plots
Seasonal Plots mirip dengan Time Series Plot biasa, yang berbeda adalah di sumbu x menunjukkan data dari dalam setiap musim. Jenis plot ini memungkinkan pola musiman yang mendasarinya terlihat lebih jelas, dan sangat berguna dalam mengidentifikasi tahun-tahun di mana pola tersebut berubah.
ggseasonplot(a10, year.labels=TRUE, year.labels.left=TRUE)+
ylab ("$ million")+
ggtitle("Figure 4: Seasonal plot antidiabetic drug sales")Dari plot diatas dapat dilihat dengan jelas bahwa terjadi lonjakan penjualan yang besar di bulan Januari setiap tahunnya. Sebenarnya, ini mungkin penjualan pada akhir Desember sebagai persediaan pelanggan sebelum akhir tahun kalender, tetapi penjualan tidak terdaftar di pemerintah sampai satu atau dua minggu kemudian. Grafik juga menunjukkan bahwa ada jumlah penjualan yang sangat kecil di bulan Maret 2008. Sedikitnya jumlah penjualan pada bulan Juni 2008 kemungkinan disebabkan karena belum lengkapnya penghitungan penjualan pada saat pendataan.
Plot diatas terlihat sangat tumpang tindih dan sedikit kurang jelas jika kita ingin melihat lebih spesifik di tahun tertentu.plot selanjutnya lingkaran memungkinkan kita untuk melihat lebih jelas di setiap tahunnya
ggseasonplot (a10, polar=TRUE)+
ylab ("$ million")+
ggtitle("Figure 5: Polar seasonal plot 2 antidiabetic drug sales")Seasonal Subseries Plots
Plot alternatif yang menekankan pola musiman adalah dimana data untuk setiap musim dikumpulkan bersama dalam plot waktu mini yang terpisah. jadi plot ini memvisualisasikan dan mendeteksi musin dan time seriesnya.
ggsubseriesplot(a10)+
ylab("$ million")+
ggtitle("Figure 6: Seasonal subseries plot antidiabetic drug sales")terlihat bahwa garis garis ini membuat kita mudah melihat bahwa ada perubahannya setiap tahun.
Scatterplots
Grafik yang dibahas sejauh ini berguna untuk memvisualisasikan deret waktu individual. Hal ini juga berguna untuk mengeksplorasi hubungan antara deret waktu.
Figure 7 shows two time series: half-hourly electricity demand (in Gigawatts) and temperature (in degrees Celsius), for 2014 in Victoria, Australia. The temperatures are for Melbourne, the largest city in Victoria, while the demand values are for the entire state
library(fpp2)
autoplot(elecdemand[,c("Demand","Temperature")], facets=TRUE)+
xlab ("Year: 2014") + ylab("") +
ggtitle("Figure 7: Half-hourly electricity demand ~ Victoria, Australia")
plot diatas terlihat rumit, maka selanjutnya kita akan membuat 2 sumbu
garis yaitu demand dan temperature.
qplot (Temperature, Demand, data=as.data.frame(elecdemand)) +
ylab ("Demand (GW)") + xlab ("Temperature (Celsius)")Scatterplot matrices
Ketika ada beberapa variabel prediktor potensial, akan berguna untuk memplot setiap variabel terhadap satu sama lain variabel. Perhatikan lima rangkaian waktu yang ditunjukkan di bawah ini, yang menunjukkan jumlah pengunjung triwulanan untuk lima wilayah New South Wales, Australia.
autoplot(visnights[,1:5], facets=TRUE) +
ylab ("Number of visitor nights each quarter (millions)")setelah kita melihat setiap hubungan dari kelima time series diatas maka kita membuat matriks scatterplot untuk mengaturnya.
GGally::ggpairs(as.data.frame(visnights[,1:5]))Untuk setiap panel, variabel pada sumbu vertikal diberikan oleh nama variabel pada baris tersebut, dan variabel pada sumbu horizontal diberikan oleh nama variabel pada kolom tersebut. Ada banyak pilihan yang tersedia untuk menghasilkan plot yang berbeda dalam setiap panel. Dalam versi default, korelasi ditampilkan di bagian kanan atas plot, sedangkan scatterplot ditampilkan di bagian bawah. Pada diagonal ditampilkan plot kepadatan.
Nilai dari matriks scatterplot adalah memungkinkan tampilan cepat dari hubungan antara semua pasangan variabel. Dalam contoh ini, plot kolom kedua menunjukkan ada hubungan positif yang kuat antara pengunjung pantai utara NSW dan pengunjung pantai selatan NSW, tetapi tidak ada hubungan yang terdeteksi antara pengunjung pantai utara NSW dan pengunjung ke pedalaman selatan NSW. Pencilan juga bisa terlihat.
Lag Plots
gambar selanjutnya kita akan melihat scatterplot produksi beer Australia selama triwulanan, dimana sumbu horizontal menunjukan nilai Lag dari time series. setap grafik menunjukan \(y_t\) diplot terhadap \(y_{t-k}\) untuk nilai k yang berbeda.
library(tsibbledata)
library(tsibble)
library(stats)
library(dplyr)
library(feasts)
library(fabletools)
library(lubridate)
recent_production <- aus_production %>%
filter (year(Quarter) >= 2000)
recent_production %>%
gg_lag(Beer, geom= "point")dilihat dari gambar diatas bahwa ada 4 titik Q1-Q4 yaitu musim dalam setahun, dari tabel-table diatas terlihat bahwa Log 4 dan Log 8 kuat karena datanya menyebar tidak jauh dari garis prediksi. tapi Lag 2 dan Lag 6 terlihat bahwa hubungannya lemah karena dari setiap titik tidak berhubungan satu sama lain.
Autocorrelation
Sama seperti korelasi mengukur sejauh mana hubungan linier antara dua variabel, autokorelasi mengukur hubungan linier antara nilai-nilai tertinggal dari deret waktu.
Ada beberapa koefisien autokorelasi, sesuai dengan setiap panel di plot lag. Misalnya, \(r_1\) mengukur hubungan antara \(y_t\) dan \(y_{t-1},r_2\) mengukur hubungan antara \(y_t\) dan \(y_{t-2}\) dan seterusnya.
nilai rk dapat ditulis sebagai berikut
\[\begin{align} \tag{1} r_k={\sum^T_{t=k+1}(y_t−\bar{y})(y_{t−k}−\bar{y}) \over \sum^T_{t=1}(y_t−\bar{y})^2}, \end{align}\]
dimana \(T\) adalah time series yang panjang
9 autokorelasi
| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | r9 |
|---|---|---|---|---|---|---|---|---|
| -0.1 | 02 -0.6 | 57 -0.0 | 60 0.86 | 9 -0.08 | 9 -0.63 | 5 -0.05 | 4 0.832 | -0.108 |
These correspond to the nine scatterplots. autokorelasi diplot untuk menunjukkan fungsi autokorelasi atau ACF.
recent_production %>% ACF (Beer, lag_max = 9)nilai dalam kolom acf adalah \(r_1 ..., r_9,\) yang sesuai dengan sembilan scatterplot pada Gambar di bawah. Bbiasanya memplot ACF untuk melihat bagaimana korelasi berubah dengan Lag \(k\). Plot kadang-kadang dikenal sebagai correlogram.
recent_production %>%
ACF (Beer) %>%
autoplot()+labs (title="Australian beer production")dalam grafik ini:
- \(r_4\) lebih tinggi daripada lag lainnya. Hal ini disebabkan pola musiman dalam data: puncak cenderung terpisah empat perempat dan palung cenderung terpisah empat perempat.
- \(r_2\) lebih negatif daripada kelambatan lainnya karena palung cenderung dua perempat di belakang puncak.
- Garis putus-putus berwarna biru menunjukkan apakah korelasi berbeda nyata dari nol. Ini dijelaskan di bagian berikutnya (White Noise).
Saat data sedang tren dan musiman, Anda melihat kombinasi dari efek ini. Rangkaian permintaan listrik bulanan Australia yang diplot pada Gambar selanjutnya menunjukkan tren dan musiman. ACF-nya ditunjukkan pada Gambar di bawah ini:
aelec <- window(elec, start=1980)
autoplot (aelec) + xlab ("Year") + ylab ("GWh")ggAcf(aelec, lag=48)White Noise
kondisi dimana time series yang tidak menunjukan autokorelasi. contoh:
set.seed (30)
y <- ts(rnorm(50))
autoplot(y)+ ggtitle("White noise")ggAcf(y)untuk bagian ini, kita berharap bahwa autokorelasi mendekati nol. dan tidak sama dengan nol karena variansi nya menyebar. kita memperkirakan 95% lonjakan di ACF terletak di dalam \(\pm2/\sqrt{T}\) di mana T adalah panjang deret waktu.umum untuk memplot batas-batas ini pada grafik ACF (garis putus-putus biru di atas). Jika satu atau lebih paku besar berada di luar batas ini, atau jika secara substansial lebih dari 5% paku berada di luar batas ini, maka rangkaian tersebut mungkin bukan white noise.
Dalam contoh ini, T=50 dan batasnya berada di \(\pm 2/\sqrt{50}=\pm 0.28\) Semua koefisien autokorelasi berada dalam batas-batas ini, mengkonfirmasikan bahwa datanya adalah white noise.