@@ -34,21 +34,112 @@ include("metrics.jl")
3434include (" evaluate_model.jl" )
3535include (" prepare_data.jl" )
3636
37- complete_dict_vec = Dict (" M" => build_train_test_dict (df_train, df_test;name= " M" ),
38- " D" => build_train_test_dict (df_train_daily, df_test_daily;name= " D" ),
39- " Q" => build_train_test_dict (df_train_quarterly, df_test_quarterly;name= " Q" ),
40- " H" => build_train_test_dict (df_train_hourly, df_test_hourly;name= " H" ),
41- " W" => build_train_test_dict (df_train_weekly, df_test_weekly;name= " W" ),
42- " Y" => build_train_test_dict (df_train_yearly, df_test_yearly;name= " Y" ),
37+ complete_dict_vec = Dict (
38+ " M" => build_train_test_dict (df_train, df_test; name= " M" ),
39+ " D" => build_train_test_dict (df_train_daily, df_test_daily; name= " D" ),
40+ " Q" => build_train_test_dict (df_train_quarterly, df_test_quarterly; name= " Q" ),
41+ " H" => build_train_test_dict (df_train_hourly, df_test_hourly; name= " H" ),
42+ " W" => build_train_test_dict (df_train_weekly, df_test_weekly; name= " W" ),
43+ " Y" => build_train_test_dict (df_train_yearly, df_test_yearly; name= " Y" ),
4344)
4445
4546parameters_dict = Dict (
46- " M" => Dict (" freq_seasonal" => 12 , " cycle_period" => 0 , " m" => 12 , " ξ_threshold" => 1 , " ζ_threshold" => 12 , " ω_threshold" => 12 , " ϕ_threshold" => 0 , " seasonal" => " stochastic" , " cycle" => " none" , " sample_size" => 60 , " name" => " MONTH" , " H" => 18 , " NAIVE_sMAPE" => 14.427 , " NAIVE_MASE" => 1.063 ),
47- " Q" => Dict (" freq_seasonal" => 4 , " cycle_period" => 0 , " m" => 4 , " ξ_threshold" => 1 , " ζ_threshold" => 4 , " ω_threshold" => 4 , " ϕ_threshold" => 0 , " seasonal" => " stochastic" , " cycle" => " none" , " sample_size" => " all" , " name" => " QUARTERLY" , " H" => 8 , " NAIVE_sMAPE" => 11.012 , " NAIVE_MASE" => 1.371 ),
48- " D" => Dict (" freq_seasonal" => 1 , " cycle_period" => 0 , " m" => 1 , " ξ_threshold" => 1 , " ζ_threshold" => 7 , " ω_threshold" => 1 , " ϕ_threshold" => 0 , " seasonal" => " none" , " cycle" => " none" , " sample_size" => 90 , " name" => " DAILY" , " H" => 14 , " NAIVE_sMAPE" => 3.045 , " NAIVE_MASE" => 3.278 ),
49- " W" => Dict (" freq_seasonal" => 1 , " cycle_period" => 0 , " m" => 1 , " ξ_threshold" => 1 , " ζ_threshold" => 4 , " ω_threshold" => 1 , " ϕ_threshold" => 0 , " seasonal" => " none" , " cycle" => " none" , " sample_size" => 104 , " name" => " WEEKLY" , " H" => 13 , " NAIVE_sMAPE" => 9.161 , " NAIVE_MASE" => 2.777 ),
50- " Y" => Dict (" freq_seasonal" => 1 , " cycle_period" => 0 , " m" => 1 , " ξ_threshold" => 1 , " ζ_threshold" => 2 , " ω_threshold" => 1 , " ϕ_threshold" => 0 , " seasonal" => " none" , " cycle" => " none" , " sample_size" => " all" , " name" => " YEARLY" , " H" => 6 , " NAIVE_sMAPE" => 16.342 , " NAIVE_MASE" => 3.974 ),
51- " H" => Dict (" freq_seasonal" => 168 , " cycle_period" => [24 ], " m" => 24 , " ξ_threshold" => 1 , " ζ_threshold" => 168 , " ω_threshold" => 168 , " ϕ_threshold" => 12 , " seasonal" => " stochastic" , " cycle" => " stochastic" , " sample_size" => 720 , " name" => " HOURLY" , " H" => 48 , " NAIVE_sMAPE" => 18.383 , " NAIVE_MASE" => 2.395 ),
47+ " M" => Dict (
48+ " freq_seasonal" => 12 ,
49+ " cycle_period" => 0 ,
50+ " m" => 12 ,
51+ " ξ_threshold" => 1 ,
52+ " ζ_threshold" => 12 ,
53+ " ω_threshold" => 12 ,
54+ " ϕ_threshold" => 0 ,
55+ " seasonal" => " stochastic" ,
56+ " cycle" => " none" ,
57+ " sample_size" => 60 ,
58+ " name" => " MONTH" ,
59+ " H" => 18 ,
60+ " NAIVE_sMAPE" => 14.427 ,
61+ " NAIVE_MASE" => 1.063 ,
62+ ),
63+ " Q" => Dict (
64+ " freq_seasonal" => 4 ,
65+ " cycle_period" => 0 ,
66+ " m" => 4 ,
67+ " ξ_threshold" => 1 ,
68+ " ζ_threshold" => 4 ,
69+ " ω_threshold" => 4 ,
70+ " ϕ_threshold" => 0 ,
71+ " seasonal" => " stochastic" ,
72+ " cycle" => " none" ,
73+ " sample_size" => " all" ,
74+ " name" => " QUARTERLY" ,
75+ " H" => 8 ,
76+ " NAIVE_sMAPE" => 11.012 ,
77+ " NAIVE_MASE" => 1.371 ,
78+ ),
79+ " D" => Dict (
80+ " freq_seasonal" => 1 ,
81+ " cycle_period" => 0 ,
82+ " m" => 1 ,
83+ " ξ_threshold" => 1 ,
84+ " ζ_threshold" => 7 ,
85+ " ω_threshold" => 1 ,
86+ " ϕ_threshold" => 0 ,
87+ " seasonal" => " none" ,
88+ " cycle" => " none" ,
89+ " sample_size" => 90 ,
90+ " name" => " DAILY" ,
91+ " H" => 14 ,
92+ " NAIVE_sMAPE" => 3.045 ,
93+ " NAIVE_MASE" => 3.278 ,
94+ ),
95+ " W" => Dict (
96+ " freq_seasonal" => 1 ,
97+ " cycle_period" => 0 ,
98+ " m" => 1 ,
99+ " ξ_threshold" => 1 ,
100+ " ζ_threshold" => 4 ,
101+ " ω_threshold" => 1 ,
102+ " ϕ_threshold" => 0 ,
103+ " seasonal" => " none" ,
104+ " cycle" => " none" ,
105+ " sample_size" => 104 ,
106+ " name" => " WEEKLY" ,
107+ " H" => 13 ,
108+ " NAIVE_sMAPE" => 9.161 ,
109+ " NAIVE_MASE" => 2.777 ,
110+ ),
111+ " Y" => Dict (
112+ " freq_seasonal" => 1 ,
113+ " cycle_period" => 0 ,
114+ " m" => 1 ,
115+ " ξ_threshold" => 1 ,
116+ " ζ_threshold" => 2 ,
117+ " ω_threshold" => 1 ,
118+ " ϕ_threshold" => 0 ,
119+ " seasonal" => " none" ,
120+ " cycle" => " none" ,
121+ " sample_size" => " all" ,
122+ " name" => " YEARLY" ,
123+ " H" => 6 ,
124+ " NAIVE_sMAPE" => 16.342 ,
125+ " NAIVE_MASE" => 3.974 ,
126+ ),
127+ " H" => Dict (
128+ " freq_seasonal" => 168 ,
129+ " cycle_period" => [24 ],
130+ " m" => 24 ,
131+ " ξ_threshold" => 1 ,
132+ " ζ_threshold" => 168 ,
133+ " ω_threshold" => 168 ,
134+ " ϕ_threshold" => 12 ,
135+ " seasonal" => " stochastic" ,
136+ " cycle" => " stochastic" ,
137+ " sample_size" => 720 ,
138+ " name" => " HOURLY" ,
139+ " H" => 48 ,
140+ " NAIVE_sMAPE" => 18.383 ,
141+ " NAIVE_MASE" => 2.395 ,
142+ ),
52143)
53144
54145# Function to append results to CSV file
@@ -70,7 +161,7 @@ function run_config(
70161 selection:: String ,
71162 information_criteria:: String ,
72163 α:: AbstractFloat ,
73- param:: Dict
164+ param:: Dict ,
74165)
75166 results_df = DataFrame ()
76167 initialization_df = DataFrame ()
@@ -93,7 +184,7 @@ function run_config(
93184 α,
94185 selection,
95186 information_criteria,
96- param
187+ param,
97188 )
98189
99190 if i % clear_df_number == 0 || i == length (dict_vec)
@@ -177,7 +268,10 @@ function run_benchmark_model(dict_vec::Vector, param::Dict)
177268 " CRPS" => [crps],
178269 " Median CRPS" => [median_crps],
179270 )
180- CSV. write (" paper_tests/m4_test/metrics_results/BENCHMARK_$(param[" name" ]) _SUMMARY.csv" , summary_df)
271+ CSV. write (
272+ " paper_tests/m4_test/metrics_results/BENCHMARK_$(param[" name" ]) _SUMMARY.csv" ,
273+ summary_df,
274+ )
181275 return results_df
182276end
183277
@@ -189,21 +283,30 @@ function main()
189283 for selection in [" split" , " fixed_alpha" ]
190284 if selection == " fixed_alpha"
191285 information_criteria = " aic"
192- alpha_set = [0.1 , 0.3 , 0.5 , 0.7 , 0.9 , 1.0 ]
193- else
286+ alpha_set = [0.1 , 0.3 , 0.5 , 0.7 , 0.9 , 1.0 ]
287+ else
194288 information_criteria = " aic"
195289 alpha_set = [- 1.0 ]
196290 end
197291 for α in alpha_set
198292 @info " Running configuration: Param=$(gran) , Outlier=$(outlier) , IC=$(information_criteria) , α=$(α) "
199293 results_table = run_config (
200- complete_dict_vec[gran], results_table, outlier, selection, information_criteria, α, parameters_dict[gran]
294+ complete_dict_vec[gran],
295+ results_table,
296+ outlier,
297+ selection,
298+ information_criteria,
299+ α,
300+ parameters_dict[gran],
201301 )
202302 end
203303 end
204304 end
205305 filename = parameters_dict[gran][" name" ]
206- CSV. write (" paper_tests/m4_test/metrics_results/SSL_$(filename) _METRICS_RESULTS.csv" , results_table)
306+ CSV. write (
307+ " paper_tests/m4_test/metrics_results/SSL_$(filename) _METRICS_RESULTS.csv" ,
308+ results_table,
309+ )
207310 @info " Running benchmark model for $(parameters_dict[gran][" name" ]) "
208311 run_benchmark_model (complete_dict_vec[gran], parameters_dict[gran])
209312 end
0 commit comments