-
Notifications
You must be signed in to change notification settings - Fork 2
/
forecasts_CISSM.R
85 lines (60 loc) · 2.44 KB
/
forecasts_CISSM.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
setwd("~/code/R/CISSM-EDA")
library(forecast)
library(fpp2)
library(ggpubr)
library(janitor)
library(tidyverse)
library(tsibble)
library(TTR)
df <- read_csv("CISSM-export.csv")
evtType <- tabyl(df, evtDate, event_type)
df <- as_tibble(evtType)
# create all event tsibble
df |>
mutate(evtDate = yearmonth(evtDate)) |>
as_tsibble(index = evtDate) -> AllEvents
# create disruptive events tsibble
AllEvents |> select(evtDate,Disruptive) -> disruptive
# create exploitative events tsibble
AllEvents |> select(evtDate,Exploitative) -> exploitative
# model disruptive events
naive_model_disruptive <- naive(disruptive, h = 12) # RMSE = 22.6, MAE = 15.9
summary(naive_model_disruptive)
ses_model_disruptive <- ses(disruptive$Disruptive, h = 12) # RMSE = 19.5, MAE = 13.9
summary(ses_model_disruptive)
arima_model_disruptive <- auto.arima(disruptive) # RMSE = 18.3, MAE = 13.5
summary(arima_model_disruptive)
# model exploitative events
naive_model_exploitative <- naive(exploitative, h = 12) # RMSE = 20.5, MAE = 15.4
summary(naive_model_exploitative)
ses_model_exploitative <- ses(exploitative$Exploitative, h = 12) # RMSE = 18.8, MAE = 13.9
summary(ses_model_exploitative)
arima_model_exploitative <- auto.arima(exploitative) # RMSE = 18.2, MAE = 13.6
summary(arima_model_exploitative)
# plot
# plot all event types
autoplot(as.ts(AllEvents))
# plot disruptive events only
autoplot(as.ts(disruptive))
# forecast disruptive models with individual plots
forecast(naive_model_disruptive) %>% autoplot()
forecast(ses_model_disruptive) %>% autoplot()
forecast(arima_model_disruptive) %>% autoplot()
# forecast disruptive models with joined plot
naiveDIS = forecast(naive_model_disruptive) %>% autoplot()
sesDIS = forecast(ses_model_disruptive) %>% autoplot()
arimaDIS = forecast(arima_model_disruptive) %>% autoplot()
multi.pageDIS <- ggarrange(naiveDIS, sesDIS, arimaDIS, nrow = 3, ncol = 1)
multi.pageDIS
# plot exploitative events only
autoplot(as.ts(exploitative))
# forecast exploitative models with individual plots
forecast(naive_model_exploitative) %>% autoplot()
forecast(ses_model_exploitative) %>% autoplot()
forecast(arima_model_exploitative) %>% autoplot()
# forecast exploitative models with joined plot
naiveEXP = forecast(naive_model_exploitative) %>% autoplot()
sesEXP = forecast(ses_model_exploitative) %>% autoplot()
arimaEXP = forecast(arima_model_exploitative) %>% autoplot()
multi.pageEXP <- ggarrange(naiveEXP, sesEXP, arimaEXP, nrow = 3, ncol = 1)
multi.pageEXP