@@ -34,7 +34,7 @@ mutable struct Parameters{AT<:Real,QT<:Real,RT<:Real}
34
34
r:: RT
35
35
end
36
36
37
- struct GaussianPrior <: SSMProblems.StatePrior
37
+ struct GaussianPrior{ΣT <: Real } <: SSMProblems.StatePrior
38
38
σ:: ΣT
39
39
end
40
40
@@ -43,7 +43,7 @@ struct LinearGaussianDynamics{AT<:Real,QT<:Real} <: SSMProblems.LatentDynamics
43
43
q:: QT
44
44
end
45
45
46
- function SSMProblems. distribution (dyn :: GaussianPrior ; kwargs... )
46
+ function SSMProblems. distribution (prior :: GaussianPrior ; kwargs... )
47
47
return Normal (0 , prior. σ)
48
48
end
49
49
@@ -65,7 +65,7 @@ function LinearGaussianStateSpaceModel(θ::Parameters)
65
65
prior = GaussianPrior (sqrt (θ. q^ 2 / (1 - θ. a^ 2 )))
66
66
dyn = LinearGaussianDynamics (θ. a, θ. q)
67
67
obs = LinearGaussianObservation (θ. r)
68
- return SSMProblems. StateSpaceModel (dyn, obs)
68
+ return SSMProblems. StateSpaceModel (prior, dyn, obs)
69
69
end
70
70
71
71
# Everything is now ready to simulate some data.
@@ -81,7 +81,7 @@ plot!(y; seriestype=:scatter, label="y", xlabel="t", mc=:red, ms=2, ma=0.5)
81
81
# `AdvancedPS` subscribes to the `AbstractMCMC` API. To sample we just need to define a Particle Gibbs kernel
82
82
# and a model interface.
83
83
pgas = AdvancedPS. PGAS (20 )
84
- chains = sample (rng, true_model ( y), pgas, 500 ; progress= false );
84
+ chains = sample (rng, AdvancedPS . TracedSSM (true_model, y), pgas, 500 ; progress= false );
85
85
# md nothing #hide
86
86
87
87
#
0 commit comments