-
Notifications
You must be signed in to change notification settings - Fork 0
/
pseudo_measurement.jl
51 lines (40 loc) · 1.5 KB
/
pseudo_measurement.jl
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
"""
```
pseudo_measurement(m::XGabaix{T},
TTT::Matrix{T}, RRR::Matrix{T}, CCC::Vector{T}) where {T<:AbstractFloat}
```
Assign pseudo-measurement equation (a linear combination of states):
```
x_t = ZZ_pseudo*s_t + DD_pseudo
```
"""
function pseudo_measurement(m::XGabaix{T},
TTT::Matrix{T},
RRR::Matrix{T},
CCC::Vector{T}) where {T<:AbstractFloat}
endo = m.endogenous_states
pseudo = m.pseudo_observables
_n_states = n_states_augmented(m)
_n_pseudo = n_pseudo_observables(m)
# Initialize pseudo ZZ and DD matrices
ZZ_pseudo = zeros(_n_pseudo, _n_states)
DD_pseudo = zeros(_n_pseudo)
##########################################################
## PSEUDO-OBSERVABLE EQUATIONS
##########################################################
## Output
ZZ_pseudo[pseudo[:x_t],endo[:x_t]] = 1.
## π_t
ZZ_pseudo[pseudo[:π_t],endo[:π_t]] = 1.
DD_pseudo[pseudo[:π_t]] = 100*(m[:π_star]-1);
## z_t
ZZ_pseudo[pseudo[:η_m_t], endo[:η_m_t]] = 1.
## Nominal FFR
ZZ_pseudo[pseudo[:NominalFFR], endo[:i_t]] = 1.
DD_pseudo[pseudo[:NominalFFR]] = m[:π_star] + m[:rA] + 4.0*m[:γ_Q]
## Real FFR
ZZ_pseudo[pseudo[:RealFFR], endo[:i_t]] = 1.
ZZ_pseudo[pseudo[:RealFFR], endo[:π_t]] = -4.
DD_pseudo[pseudo[:RealFFR]] = m[:π_star] + m[:rA] + 4.0*m[:γ_Q] - 4.0*(100. * (m[:π_star] - 1.))
return PseudoMeasurement(ZZ_pseudo, DD_pseudo)
end