Skip to content

Commit 58349c3

Browse files
fix initial params extra allocations (#46)
* fix initial params extra allocations * fix simulate
1 parent ed12e23 commit 58349c3

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

src/gas/initial_params.jl

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,42 @@ export stationary_initial_params_tilde, stationary_initial_params, dynamic_initi
22

33
"""
44
stationary_initial_param_tilde(gas::GAS{D, T}) where {D, T}
5+
6+
#TODO
57
"""
68
function stationary_initial_params_tilde(gas::GAS{D, T}) where {D, T}
79
biggest_lag = number_of_lags(gas)
810
n_params = num_params(D)
911
initial_params_tilde = Matrix{T}(undef, biggest_lag, n_params)
10-
for t in 1:biggest_lag
11-
initial_params_tilde[t, :] = gas.ω./diag(I - gas.B[1])
12+
for t in 1:biggest_lag, p in 1:n_params
13+
# ω/(1 - sum(B[p, p]))
14+
initial_params_tilde[t, p] = gas.ω[p]/(1 - sum(v[p, p] for (k, v) in gas.B))
1215
end
1316
return initial_params_tilde
1417
end
1518

1619
"""
1720
stationary_initial_params(gas::GAS{D, T}) where {D, T}
21+
22+
#TODO
1823
"""
1924
function stationary_initial_params(gas::GAS{D, T}) where {D, T}
2025
biggest_lag = number_of_lags(gas)
2126
n_params = num_params(D)
2227
initial_params_tilde = Matrix{T}(undef, biggest_lag, n_params)
2328
initial_params = Matrix{T}(undef, biggest_lag, n_params)
24-
for t in 1:biggest_lag
25-
initial_params_tilde[t, :] = gas.ω./diag(I - gas.B[1])
29+
for t in 1:biggest_lag, p in 1:n_params
30+
# ω/(1 - sum(B[p, p]))
31+
initial_params_tilde[t, p] = gas.ω[p]/(1 - sum(v[p, p] for (k, v) in gas.B))
2632
unlink!(initial_params, D, initial_params_tilde, t)
2733
end
2834
return initial_params
2935
end
3036

3137
"""
3238
dynamic_initial_params
39+
40+
#TODO This is an heuristic! only seen in some phd thesis.
3341
"""
3442
function dynamic_initial_params(obs::Vector{T}, gas::GAS{D, T}) where {D, T}
3543
# Take the biggest lag

src/gas/simulate.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function simulate(serie::Vector{T}, gas::GAS{D, T}, N::Int, S::Int;
1616
params_simulation = params[(end - biggest_lag):(end - 1), :]
1717
# Create scenarios matrix
1818
scenarios = Matrix{T}(undef, N, S)
19-
for scenario in 1:s
19+
for scenario in 1:S
2020
sim, param = simulate_recursion(gas, N + biggest_lag; initial_params = params_simulation)
2121
scenarios[:, scenario] = sim[biggest_lag + 1:end]
2222
end

test/test_initial_params.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212

1313
gas_1_2 = GAS(1, 2, Normal, 0.0)
1414
gas_1_2.ω = [1; 1]
15-
gas_1_2.B[1] = [0.8 0;0 0.5]
15+
gas_1_2.B[1] = [0.4 0;0 0.25]
16+
gas_1_2.B[2] = [0.4 0;0 0.25]
1617
initial_params_tilde = stationary_initial_params_tilde(gas_1_2)
1718
initial_params = stationary_initial_params(gas_1_2)
1819
@test initial_params_tilde[1, 1] 5 atol = 1e-2 rtol = 1e-2

0 commit comments

Comments
 (0)