|
|
|
|
|
using Turing, StatsFuns
|
|
|
using Distributions, StatsPlots
|
|
|
|
|
|
using FillArrays
|
|
|
|
|
|
begin #creating synthetic data
|
|
|
βs = [1 2 3]'
|
|
|
x = Matrix([1:10 1:2:20 1:3:30])
|
|
|
X = (x .- mean(x,dims=1)) ./ std(x,dims=1)
|
|
|
t = [x for x=1:0.5:5.5]
|
|
|
s = rand([1,2],10)
|
|
|
σ= [2 3]
|
|
|
rand_draw1 = randn(10)
|
|
|
|
|
|
y = x*βs .+ σ[s]
|
|
|
end
|
|
|
|
|
|
@model function JointDurationStateModel(
|
|
|
DeviationFromExpectedDuration,
|
|
|
ConclusionStatus,
|
|
|
SnapshotState,
|
|
|
CurrentDuration,
|
|
|
)
|
|
|
# get dimensions
|
|
|
n,k = size(SnapshotState)
|
|
|
|
|
|
#hyperpriors priors
|
|
|
|
|
|
#Heirarchal parameters
|
|
|
#β ~ MvNormal(Fill(0,k),2)
|
|
|
η ~ MvNormal(Fill(0,k),2)
|
|
|
|
|
|
#Direct Priors
|
|
|
#σ_DFED ~ filldist(Exponential(1),2) #TODO: check implication of this form
|
|
|
|
|
|
#model
|
|
|
#μ = SnapshotState * β
|
|
|
p = StatsFuns.logistic.(SnapshotState * η)
|
|
|
|
|
|
#estimate ConclusionStatus model
|
|
|
ConclusionStatus .~ Bernoulli(p)
|
|
|
#Estimate DFED model
|
|
|
#=
|
|
|
for i in eachindex(ConclusionStatus)
|
|
|
DeviationFromExpectedDuration ~ Normal(
|
|
|
μ[ConclusionStatus[i]],
|
|
|
σ_DFED[ConclusionStatus[i]]
|
|
|
)
|
|
|
end
|
|
|
=#
|
|
|
end
|
|
|
|
|
|
model = JointDurationStateModel(y,s,X,t)
|
|
|
prior = JointDurationStateModel(fill(missing,size(y)),fill(missing,size(s)),X,t)
|
|
|
|
|
|
chain = sample(model,NUTS(0.85),2000)
|
|
|
|
|
|
|
|
|
|
|
|
plot(chain)
|
|
|
|