Contoh LBB TS

setup

read data

read data menggunakan fread(). fread() digunakan untuk data yang besar.

## Classes 'data.table' and 'data.frame':   6723202 obs. of  22 variables:
##  $ ID                  : int  10000092 10000094 10000095 10000096 10000097 10000098 10000099 10000100 10000101 10000104 ...
##  $ Case Number         : chr  "HY189866" "HY190059" "HY190052" "HY190054" ...
##  $ Date                : chr  "03/18/2015 07:44:00 PM" "03/18/2015 11:00:00 PM" "03/18/2015 10:45:00 PM" "03/18/2015 10:30:00 PM" ...
##  $ Block               : chr  "047XX W OHIO ST" "066XX S MARSHFIELD AVE" "044XX S LAKE PARK AVE" "051XX S MICHIGAN AVE" ...
##  $ IUCR                : chr  "041A" "4625" "0486" "0460" ...
##  $ Primary Type        : chr  "BATTERY" "OTHER OFFENSE" "BATTERY" "BATTERY" ...
##  $ Description         : chr  "AGGRAVATED: HANDGUN" "PAROLE VIOLATION" "DOMESTIC BATTERY SIMPLE" "SIMPLE" ...
##  $ Location Description: chr  "STREET" "STREET" "APARTMENT" "APARTMENT" ...
##  $ Arrest              : logi  FALSE TRUE FALSE FALSE FALSE FALSE ...
##  $ Domestic            : logi  FALSE FALSE TRUE FALSE FALSE FALSE ...
##  $ Beat                : int  1111 725 222 225 1113 223 733 213 912 511 ...
##  $ District            : int  11 7 2 2 11 2 7 2 9 5 ...
##  $ Ward                : int  28 15 4 3 28 4 17 3 11 6 ...
##  $ Community Area      : int  25 67 39 40 25 39 68 38 59 49 ...
##  $ FBI Code            : chr  "04B" "26" "08B" "08B" ...
##  $ X Coordinate        : int  1144606 1166468 1185075 1178033 1144920 1183018 1170859 1178746 1164279 1179637 ...
##  $ Y Coordinate        : int  1903566 1860715 1875622 1870804 1898709 1872537 1858210 1876914 1880656 1840444 ...
##  $ Year                : int  2015 2015 2015 2015 2015 2015 2015 2015 2015 2015 ...
##  $ Updated On          : chr  "02/10/2018 03:50:01 PM" "02/10/2018 03:50:01 PM" "02/10/2018 03:50:01 PM" "02/10/2018 03:50:01 PM" ...
##  $ Latitude            : num  41.9 41.8 41.8 41.8 41.9 ...
##  $ Longitude           : num  -87.7 -87.7 -87.6 -87.6 -87.7 ...
##  $ Location            : chr  "(41.891398861, -87.744384567)" "(41.773371528, -87.665319468)" "(41.81386068, -87.596642837)" "(41.800802415, -87.622619343)" ...
##  - attr(*, ".internal.selfref")=<externalptr>

cek nilai yang ada pada Priary type

##  [1] "BATTERY"                          
##  [2] "OTHER OFFENSE"                    
##  [3] "ROBBERY"                          
##  [4] "NARCOTICS"                        
##  [5] "CRIMINAL DAMAGE"                  
##  [6] "WEAPONS VIOLATION"                
##  [7] "THEFT"                            
##  [8] "BURGLARY"                         
##  [9] "MOTOR VEHICLE THEFT"              
## [10] "PUBLIC PEACE VIOLATION"           
## [11] "DECEPTIVE PRACTICE"               
## [12] "ASSAULT"                          
## [13] "CRIMINAL TRESPASS"                
## [14] "CRIM SEXUAL ASSAULT"              
## [15] "INTERFERENCE WITH PUBLIC OFFICER" 
## [16] "ARSON"                            
## [17] "LIQUOR LAW VIOLATION"             
## [18] "KIDNAPPING"                       
## [19] "SEX OFFENSE"                      
## [20] "OFFENSE INVOLVING CHILDREN"       
## [21] "PROSTITUTION"                     
## [22] "HOMICIDE"                         
## [23] "GAMBLING"                         
## [24] "INTIMIDATION"                     
## [25] "STALKING"                         
## [26] "OBSCENITY"                        
## [27] "PUBLIC INDECENCY"                 
## [28] "HUMAN TRAFFICKING"                
## [29] "CONCEALED CARRY LICENSE VIOLATION"
## [30] "OTHER NARCOTIC VIOLATION"         
## [31] "NON - CRIMINAL"                   
## [32] "NON-CRIMINAL"                     
## [33] "RITUALISM"                        
## [34] "NON-CRIMINAL (SUBJECT SPECIFIED)" 
## [35] "DOMESTIC VIOLENCE"

Preprocessing

Data Filtering

pada kasus ini saya mengambil nilai THEFT sebagai amatan saya.

##                     Date Primary Type
## 1 03/18/2015 10:31:00 PM        THEFT
## 2 03/18/2015 09:00:00 PM        THEFT
## 3 03/18/2015 10:45:00 PM        THEFT
## 4 03/18/2015 10:00:00 PM        THEFT
## 5 03/18/2015 10:30:00 PM        THEFT
## 6 03/19/2015 02:00:00 AM        THEFT

Data Aggregate

lakukan praproses terhadap date dan grouping data berdasarkan Date untuk menghitung banyaknya kejadian theft dalam 1 hari

## # A tibble: 6 x 2
##   Date       count
##   <date>     <int>
## 1 2001-01-01   413
## 2 2001-01-02   221
## 3 2001-01-03   226
## 4 2001-01-04   243
## 5 2001-01-05   265
## 6 2001-01-06   246

Time series Object

create ts object and visualization

buat object time series menggunakan fungsi ts. frequency yang digunakan yaitu 365 (1 tahun). lalu lihat plot yang dihasilkan menggunakan fungsi autoplot

decompose

dari plot diatas bisa dilihat bahwa data mempunyai trend dan seasonal, namun untuk membuktikannya perlu dilakukan decompose

dari hasil plot diatas bisa diketahui yaitu 1. punya seasonal 2. punya trend 3. additive

split data train dan tes menggunakan window data train adalah data yang akan digunakan dalam pembentukan model dan data test adalah data yang dipakai untuk validasi

cross validation

buat model dan evaluasi dengan MAPE (bisa dengan nilai error lainnya)

Modeling

Holtwinters

pembuatan model dilakukan terhadap data train

## [1] 0.1133559

Forecasting

forecast melakukan prediksi untuk 365 data kedepan

plot antara hasil forecast dan data test. dari plot dibawah bisa dilihat bahwa model arima tidak menangkap seasonal, hal ini bisa dilihat dari hasil forecast yang datar. oleh sebab itu perlu dilakukan perbaikan model dengan cara stlm

perbaiki model arima yang dilakuan oleh stlm adalah mengeluarkan seasonal terlebih dahulu baru dilakukan arima pada datanya (trend dan error)

Evaluation

Error Checking

cek nilai MAPE pada data test

## [1] 0.1160077
## [1] 0.1033244

Assumption Checking

kalau ingin bermain dengan analisis time series (tidak melakukan forecating) itu asumsi wajib dipenuhi karena kita tidak ingin salah menginterpretasikan model (trend dan seasional)

tapi

kalau ingin melakukan forecasting yang dilihat adalah nilai error (RMSE,MAE,..) error dari prediksi vs actual (data test)

lakukan uji asumsi menyebar normal. karena shapiro test tidak bisa untuk data yang besar, maka pengujian hanya dilakukan lewat plot histogram saja.

lakukan uji autocol menggunakan box.test()

## 
##  Box-Ljung test
## 
## data:  model_arima2$residuals
## X-squared = 0.00287, df = 1, p-value = 0.9573

p-value lebih besar dari 0.5 berarti tidak ada autocol di error

diatas merupakan contoh tahapan - tahapan dalan time series. dalam lbb Time series ini diharapkan mengikuti workflow yang telah diberikan dan memberikan narasi lebih baik berdasarkan analisis yang ada.

Time Series Data

berikut beberapa sumber data time series selain data crime

wikipedia

bisa gunakan library pageviews

##     project language   article     access      agent granularity
## 1 wikipedia       en Indonesia all-access all-agents       daily
## 2 wikipedia       en Indonesia all-access all-agents       daily
## 3 wikipedia       en Indonesia all-access all-agents       daily
## 4 wikipedia       en Indonesia all-access all-agents       daily
## 5 wikipedia       en Indonesia all-access all-agents       daily
## 6 wikipedia       en Indonesia all-access all-agents       daily
##         date views
## 1 2018-01-01  8924
## 2 2018-01-02 10383
## 3 2018-01-03 10279
## 4 2018-01-04 10617
## 5 2018-01-05 10313
## 6 2018-01-06 10072

Stocks

library yang digunanakan yaitu tidyquant dengan fungsi tq_get()

## # A tibble: 6 x 7
##   date        open  high   low close   volume adjusted
##   <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl>
## 1 2009-01-02  51.3  54.5  51.1  54.4  7296400     54.4
## 2 2009-01-05  55.7  55.7  53.0  54.1  9509800     54.1
## 3 2009-01-06  54.5  58.2  53.8  57.4 11080100     57.4
## 4 2009-01-07  56.3  57.0  55.3  56.2  7942700     56.2
## 5 2009-01-08  55.0  57.3  54.6  57.2  6577900     57.2
## 6 2009-01-09  56.9  57    54.7  55.5  6684100     55.5

2019-06-15