Exercise 7.4 Solution Example - Hoff, A First Course in Bayesian Statistical Methods
標準ベイズ統計学 演習問題 7.4 解答例
a)
Answer
自分のイメージでは、アメリカの平均的な夫婦の年齢は 50 歳くらいで、やや女性の方が若いと思うので、\(\mu_h = 51, \mu_h = 49\) とする。また、95%くらいで、25 歳から 75 歳くらいまでの範囲に収まると思うので、 \(\sigma_h = \sigma_w = 12.5\) とする。夫婦の年齢の相関はかなり大きいイメージなので、0.9 になるように、
\begin{align*} &0.9 = \frac{\sigma_{hw}}{\sigma_h \sigma_w} = \frac{\sigma_{hw}}{12.5^2} \\ \iff &\sigma_{hw} = 0.9 \times 12.5^2 = 140.625 \end{align*}と設定する。まとめると、私の prior は以下のようになる。
\begin{align*} \boldsymbol{\mu}_0 &= (51, 49)^T \\ \Lambda_0 &= \begin{pmatrix} 12.5^2 & 140.625 \\ 140.625 & 12.5^2 \end{pmatrix} \\ \end{align*}b)
Answer
μ₀ = [51, 49] Λ₀ = [ 12.5^2 140.625 140.625 12.5^2 ] # %% n = 100 prior_dist = MvNormal(μ₀, Λ₀) dataset1 = rand(prior_dist, n) dataset2 = rand(prior_dist, n) dataset3 = rand(prior_dist, n)
- 割とイメージ通りかなあ
c)
Answer
joint posterior distribution of \(\theta_h\) and \(\theta_w\)
agehw = readdlm("../../Exercises/agehw.dat", skipstart=1) p = size(agehw,2) S = 10000 Σ_init = cov(agehw) S₀ = Λ₀ ν₀ = p+2 THETA, SIGMA = bivariate_gibbs(S, Σ_init, μ₀, Λ₀, S₀, ν₀, agehw) COR = get_pos_cor(SIGMA, p, S)
marginal posterior density of the correlation between \(Y_h\) and \(Y_w\)
95% posterior confidence intervals for \(\theta_h\), \(\theta_w\), and the correlation coefficient
quantile(THETA[:, 1], [0.025, 0.975]) quantile(THETA[:, 2], [0.025, 0.975]) quantile(COR[1, 2, :], [0.025, 0.975])
2-element Vector{Float64}: 41.82793288516493 47.10559872633597 2-element Vector{Float64}: 38.46175689329701 43.44815317601299 2-element Vector{Float64}: 0.8602554314182437 0.9340079518830947
d)
Answer
Jeffreys’ prior
THETA_J = Matrix{Float64}(undef, S, 2) SIGMA_J = Matrix{Float64}(undef, S, 4) n = size(agehw, 1) ȳ = mean(agehw, dims=1) |> vec # Gibbs sampler Σ = cov(agehw) # use the sample covariance matrix as initial value for s in 1:S # update θ θ = rand(MvNormal(ȳ, Symmetric(Σ ./ n))) # update Σ S_θ = (agehw' .- θ) * (agehw' .- θ)' Σ = rand(InverseWishart(n+1, S_θ)) # save results THETA_J[s, :] = vec(θ) SIGMA_J[s, :] = vec(Σ) end COR_J = get_pos_cor(SIGMA_J, p, S) # 95% credible interval quantile(THETA_J[:, 1], [0.025, 0.975]) quantile(THETA_J[:, 2], [0.025, 0.975]) quantile(COR_J[1, 2, :], [0.025, 0.975])
julia> quantile(THETA_J[:, 1], [0.025, 0.975]) 2-element Vector{Float64}: 41.68056977372846 47.14646200233917 julia> quantile(THETA_J[:, 2], [0.025, 0.975]) 2-element Vector{Float64}: 38.3145806498635 43.44817143945637 julia> quantile(COR_J[1, 2, :], [0.025, 0.975]) 2-element Vector{Float64}: 0.861004578540727 0.9345565686407257
the unit information prior
S_y = (agehw' .- ȳ) * (agehw' .- ȳ)' ./ n THETA_U = Matrix{Float64}(undef, S, 2) SIGMA_U = Matrix{Float64}(undef, S, 4) for s in 1:S # sample Σ Σ = rand(InverseWishart(n-p-1, S_y .* (n+1))) # sample θ θ = rand(MvNormal(ȳ, Symmetric(Σ ./ (n+1)))) # save results THETA_U[s, :] = vec(θ) SIGMA_U[s, :] = vec(Σ) end COR_U = get_pos_cor(SIGMA_U, p, S) # 95% credible interval quantile(THETA_U[:, 1], [0.025, 0.975]) quantile(THETA_U[:, 2], [0.025, 0.975]) quantile(COR_U[1, 2, :], [0.025, 0.975])
julia> quantile(THETA_U[:, 1], [0.025, 0.975]) 2-element Vector{Float64}: 41.72596492912597 47.1866768937701 julia> quantile(THETA_U[:, 2], [0.025, 0.975]) 2-element Vector{Float64}: 38.33626197183087 43.4809122415242 julia> quantile(COR_U[1, 2, :], [0.025, 0.975]) 2-element Vector{Float64}: 0.8600180341629133 0.9358050299774748
diffuse prior
μ₀ = zeros(p) Λ₀ = 10^5 .* Matrix{Float64}(I, p, p) S₀ = 1000 .* Matrix{Float64}(I, p, p) ν₀ = 3 Σ_init = cov(agehw) THETA_D, SIGMA_D = bivariate_gibbs(S, Σ_init, μ₀, Λ₀, S₀, ν₀, agehw) COR_D = get_pos_cor(SIGMA_D, p, S) # 95% credible interval quantile(THETA_D[:, 1], [0.025, 0.975]) quantile(THETA_D[:, 2], [0.025, 0.975]) quantile(COR_D[1, 2, :], [0.025, 0.975])
julia> quantile(THETA_D[:, 1], [0.025, 0.975]) 2-element Vector{Float64}: 41.716486213023344 47.116138763264516 julia> quantile(THETA_D[:, 2], [0.025, 0.975]) 2-element Vector{Float64}: 38.335596688123054 43.49771322728793 julia> quantile(COR_D[1, 2, :], [0.025, 0.975]) 2-element Vector{Float64}: 0.7916370487843212 0.9002008981233564
e)
Answer
Comparison of 95% Credible Intervals of couple age
Comparison of 95% Credible Intervals of correlation coefficient
Discussion
日本語
サンプルサイズが大きい場合\((n=100)\)、事前の情報は事後分布にほとんど影響を与えなていない。一方で、サンプルサイズが小さいと\((n=25)\)、相関係数の信用区間のプロットからもわかるように、事前の情報が事後分布に与える影響が大きくなるので、事前の情報が重要になる。
English
When the sample size is large (n=100
), the prior information has almost no influence on the posterior distribution.
On the other hand, when the sample size is small (n=25
), as can also be seen from the plot of the credible interval for the correlation coefficient, the influence of the prior information on the posterior distribution becomes larger, making the prior information important.