Skip to content

Commit edc4297

Browse files
Merge pull request #36 from LAMPSPUC/add_seasonal_sim
Add Seasonal Simulation and Multivariate Innovation Simulation Features
2 parents 46f2b79 + 01f070c commit edc4297

20 files changed

+790
-188
lines changed

.github/dependabot.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
2+
version: 2
3+
updates:
4+
- package-ecosystem: "github-actions"
5+
directory: "/" # Location of package manifests
6+
schedule:
7+
interval: "weekly"

.gitignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ local_test/
55
paper_tests/m4_test/metrics_results/
66
paper_tests/m4_test/results_ARIMA/
77
paper_tests/m4_test/results_SSL/
8+
paper_tests/m4_test/init_SSL/
9+
810
paper_tests/simulation_test/results_simulation_raw/
11+
paper_tests/mv_probabilistic_forecast/
912

10-
docs/build
13+
docs/build
14+
longhorizon/
15+
test.jl

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "StateSpaceLearning"
22
uuid = "971c4b7c-2c4e-4bac-8525-e842df3cde7b"
33
authors = ["andreramosfc <[email protected]>"]
4-
version = "1.0.2"
4+
version = "1.1.0"
55

66
[deps]
77
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ using Plots
153153
airp = CSV.File(StateSpaceLearning.AIR_PASSENGERS) |> DataFrame
154154
log_air_passengers = log.(airp.passengers)
155155

156-
airpassengers = Float64.(airp.passengers)
156+
airpassengers = AbstractFloat.(airp.passengers)
157157
log_air_passengers[60:72] .= NaN
158158

159159
model = StructuralModel(log_air_passengers)

docs/src/manual.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ using Plots
149149
airp = CSV.File(StateSpaceLearning.AIR_PASSENGERS) |> DataFrame
150150
log_air_passengers = log.(airp.passengers)
151151

152-
airpassengers = Float64.(airp.passengers)
152+
airpassengers = AbstractFloat.(airp.passengers)
153153
log_air_passengers[60:72] .= NaN
154154

155155
model = StructuralModel(log_air_passengers)

paper_tests/m4_test/evaluate_model.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ function evaluate_SSL(
33
results_df::DataFrame,
44
input::Dict,
55
outlier::Bool,
6-
α::Float64,
7-
H::Int64,
8-
sample_size::Int64,
6+
α::AbstractFloat,
7+
H::Int,
8+
sample_size::Int,
99
information_criteria::String,
1010
)
1111
normalized_y = input["normalized_train"]

paper_tests/m4_test/m4_test.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ function run_config(
3333
results_table::DataFrame,
3434
outlier::Bool,
3535
information_criteria::String,
36-
α::Float64,
36+
α::AbstractFloat,
3737
save_init::Bool,
38-
sample_size::Int64,
38+
sample_size::Int,
3939
)
4040
NAIVE_sMAPE = 14.427 #M4 Paper
4141
NAIVE_MASE = 1.063 #M4 Paper
@@ -98,9 +98,9 @@ end
9898
# Main script
9999
function main()
100100
results_table = DataFrame()
101-
for outlier in [true, false]
102-
for information_criteria in ["aic", "bic"]
103-
for α in vcat([0.0], collect(0.1:0.2:0.9), [1.0])
101+
for outlier in [true]
102+
for information_criteria in ["aic"]
103+
for α in [0.1]
104104
@info "Running SSL with outlier = $outlier, information_criteria = $information_criteria, α = "
105105
results_table = run_config(
106106
results_table, outlier, information_criteria, α, false, 60
@@ -140,4 +140,4 @@ create_dirs()
140140

141141
main()
142142

143-
run_config(DataFrame(), false, "aic", 0.1, true, 2794)#max sample size
143+
#run_config(DataFrame(), false, "aic", 0.1, true, 2794)#max sample size

paper_tests/m4_test/metrics.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ function sMAPE(y_test::Vector, prediction::Vector)
55
return (200 / H) * sum(abs(y_test[i] - prediction[i]) / (denominator[i]) for i in 1:H)
66
end
77

8-
function MASE(y_train::Vector, y_test::Vector, prediction::Vector; m::Int64=12)
8+
function MASE(y_train::Vector, y_test::Vector, prediction::Vector; m::Int=12)
99
T = length(y_train)
1010
H = length(y_test)
1111

paper_tests/m4_test/prepare_data.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
function normalize(y::Vector, max_y::Float64, min_y::Float64)
1+
function normalize(y::Vector, max_y::AbstractFloat, min_y::AbstractFloat)
22
return (y .- min_y) ./ (max_y - min_y)
33
end
44

5-
function de_normalize(y::Vector, max_y::Float64, min_y::Float64)
5+
function de_normalize(y::Vector, max_y::AbstractFloat, min_y::AbstractFloat)
66
return (y .* (max_y - min_y)) .+ min_y
77
end
88

paper_tests/simulation_test/evaluate_models.jl

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ function get_confusion_matrix(selected, true_features, false_features)
88
end
99

1010
function get_SSL_results(
11-
y_train::Vector{Float64},
12-
true_features::Vector{Int64},
13-
false_features::Vector{Int64},
14-
X_train::Matrix{Float64},
11+
y_train::Vector{Fl},
12+
true_features::Vector{Int},
13+
false_features::Vector{Int},
14+
X_train::Matrix{Fl},
1515
inf_criteria::String,
16-
true_β::Vector{Float64},
17-
)
16+
true_β::Vector{Fl},
17+
) where {Fl<:AbstractFloat}
1818
series_result = nothing
1919

2020
model = StateSpaceLearning.StructuralModel(
@@ -72,13 +72,13 @@ function get_SSL_results(
7272
end
7373

7474
function get_SS_res_results(
75-
y_train::Vector{Float64},
76-
true_features::Vector{Int64},
77-
false_features::Vector{Int64},
78-
X_train::Matrix{Float64},
75+
y_train::Vector{Fl},
76+
true_features::Vector{Int},
77+
false_features::Vector{Int},
78+
X_train::Matrix{Fl},
7979
inf_criteria::String,
80-
true_β::Vector{Float64},
81-
)
80+
true_β::Vector{Fl},
81+
) where {Fl<:AbstractFloat}
8282
py"""
8383
import math
8484
import statsmodels.api as sm
@@ -141,7 +141,9 @@ function get_SS_res_results(
141141
return series_result, converged
142142
end
143143

144-
function get_exogenous_ss_inf_criteria(y_train::Vector{Float64}, X_train::Matrix{Float64})
144+
function get_exogenous_ss_inf_criteria(
145+
y_train::Vector{Fl}, X_train::Matrix{Fl}
146+
) where {Fl<:AbstractFloat}
145147
py"""
146148
import math
147149
import statsmodels.api as sm
@@ -160,13 +162,13 @@ function get_exogenous_ss_inf_criteria(y_train::Vector{Float64}, X_train::Matrix
160162
end
161163

162164
function get_forward_ss(
163-
y_train::Vector{Float64},
164-
true_features::Vector{Int64},
165-
false_features::Vector{Int64},
166-
X_train::Matrix{Float64},
165+
y_train::Vector{Fl},
166+
true_features::Vector{Int},
167+
false_features::Vector{Int},
168+
X_train::Matrix{Fl},
167169
inf_criteria::String,
168-
true_β::Vector{Float64},
169-
)
170+
true_β::Vector{Fl},
171+
) where {Fl<:AbstractFloat}
170172
best_inf_crit = Inf
171173
current_inf_crit = 0
172174
coefs = nothing

0 commit comments

Comments
 (0)