<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MCMC |</title><link>https://chaeniverse.github.io/tags/mcmc/</link><atom:link href="https://chaeniverse.github.io/tags/mcmc/index.xml" rel="self" type="application/rss+xml"/><description>MCMC</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sat, 07 Sep 2024 00:00:00 +0000</lastBuildDate><image><url>https://chaeniverse.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>MCMC</title><link>https://chaeniverse.github.io/tags/mcmc/</link></image><item><title>MCMC (Metropolis-Hastings)</title><link>https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/</link><pubDate>Sat, 07 Sep 2024 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/</guid><description>&lt;h2 id="markov-chain-monte-carlo"&gt;Markov Chain Monte Carlo&lt;/h2&gt;
&lt;p&gt;간단히 말하면,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Markov chain&lt;/strong&gt; 은 그 전에 몇 번 시행했든 간에 &lt;strong&gt;바로 이전 시행에 대해서만&lt;/strong&gt; 영향을 받는다는 거고,&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monte Carlo&lt;/strong&gt; 는 이상한 pdf의 분포를 구하기 어려울 때, 해당하는 pdf의 $x$ 를 많이 sampling해서 근사화시켜 표본 평균과 표본 분산을 구하는 과정을 말한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="동기"&gt;동기&lt;/h2&gt;
&lt;p&gt;가령, $f(x)$ 라는 분포의 기댓값, 분산을 알고 싶다고 하자.&lt;/p&gt;
&lt;p&gt;이때 이 분포의 모양이 특이하면 (봉우리가 여러 개 있는 등), 적분하기 상당히 까다로울 것이다. 이럴 때 정규분포를 따르는 $h(x)$ 를 하나 씌워서 여기서 data point를 무작위로 뽑아 근사시켜 표본 평균·표본 분산을 구하는 식으로 기댓값과 분산을 유추할 수 있다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Target distribution f(x) is multimodal; proposal h(x) is normal"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step0-setup_hu_1519216ad54f4539.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step0-setup_hu_f0640173b2f7c82f.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step0-setup_hu_1c783460b75b48e2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step0-setup_hu_1519216ad54f4539.webp"
width="760"
height="275"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;위 그림에서 파란색이 우리가 알고 싶은 복잡한 분포 $f(x)$ (두 봉우리), 빨간색이 우리가 sampling에 쓸 proposal 분포 $h(x)$ (정규분포).&lt;/p&gt;
&lt;h2 id="알고리즘--acceptance-rejection-반복"&gt;알고리즘 — Acceptance-Rejection 반복&lt;/h2&gt;
&lt;h3 id="step-1-reject--첫-시도가-실패하는-경우"&gt;Step 1. Reject — 첫 시도가 실패하는 경우&lt;/h3&gt;
&lt;p&gt;정규분포를 따르는 $h(x)$ 에서 한 data point를 뽑았는데 우연히 이 위치가 뽑혔다고 가정하자.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Sampled point where f(x) &amp;lt; h(x): reject"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step1-reject_hu_764706206b79ad5f.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step1-reject_hu_24dd43d88b20fccd.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step1-reject_hu_82d2c0555e086f6.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step1-reject_hu_764706206b79ad5f.webp"
width="760"
height="251"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이때 $f(x) &lt; h(x)$ (&amp;ldquo;하트가 음수&amp;rdquo;) 이면 해당 data point는 &lt;strong&gt;reject&lt;/strong&gt; 하고, 같은 정규분포에서 data를 다시 추출한다.&lt;/p&gt;
&lt;h3 id="step-2-accept"&gt;Step 2. Accept&lt;/h3&gt;
&lt;p&gt;새로 추출한 data point에서 $f(x) &gt; h(x)$ 이므로 &lt;strong&gt;accept&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Sampled point where f(x) &amp;gt; h(x): accept"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step2-accept-prep_hu_1c053be3b3c1788c.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step2-accept-prep_hu_e7a0f5fc326b7264.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step2-accept-prep_hu_eaf74a7241167b2e.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step2-accept-prep_hu_1c053be3b3c1788c.webp"
width="760"
height="267"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="step-3-proposal-이동"&gt;Step 3. Proposal 이동&lt;/h3&gt;
&lt;p&gt;Accept하면 해당 data point를 중심으로 정규분포 $h(x)$ 를 다시 가정한다 (현재 위치로 proposal을 옮긴다).&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Move h(x) to the accepted point"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step3-shift_hu_2f47627e2795e2a3.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step3-shift_hu_97207ce6cd76a957.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step3-shift_hu_a2437b4e8a3581cf.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step3-shift_hu_2f47627e2795e2a3.webp"
width="760"
height="223"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="step-4-반복--random-walk"&gt;Step 4. 반복 — Random Walk&lt;/h3&gt;
&lt;p&gt;새로 가정한 정규분포에서 위와 같이 data point를 다시 무작위로 뽑는다.&lt;/p&gt;
&lt;p&gt;그런데 $f(x) &gt; h(x)$ 이면 해당 data를 accept하고 다시 그 지점으로 이동해 새 정규분포를 가정한다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Walk along the chain, accumulating accepted points"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step4-walk_hu_d4414c27f959774f.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step4-walk_hu_604ec4fc25bc7e49.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step4-walk_hu_99a80589654ba2e9.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step4-walk_hu_d4414c27f959774f.webp"
width="760"
height="215"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="step-5-다른-봉우리로-이동"&gt;Step 5. 다른 봉우리로 이동&lt;/h3&gt;
&lt;p&gt;이런 식으로 acceptance-rejection을 반복하면서 accept된 data point들을 차곡차곡 모아 놓는다. 그러다 보면, 처음에 있던 오른쪽 봉우리뿐 아니라 &lt;strong&gt;왼쪽 봉우리에서도 data point가 추출&lt;/strong&gt;될 수 있다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Chain crosses to the other mode of f(x)"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step5-cross-mode_hu_71f61bdf36d68c8f.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step5-cross-mode_hu_c2454a80e4a86f3b.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step5-cross-mode_hu_3c1b9ac206db94c2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step5-cross-mode_hu_71f61bdf36d68c8f.webp"
width="760"
height="201"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="step-6-양쪽-봉우리-모두-탐험"&gt;Step 6. 양쪽 봉우리 모두 탐험&lt;/h3&gt;
&lt;p&gt;왼쪽 봉우리에서도 같은 acceptance-rejection을 반복한다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Both modes get sampled over time"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step6-many-samples_hu_1dd7bb6d2bb5aed6.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step6-many-samples_hu_92f60f7f4363119.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step6-many-samples_hu_d5679dab51ef6ca3.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step6-many-samples_hu_1dd7bb6d2bb5aed6.webp"
width="760"
height="213"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="결과"&gt;결과&lt;/h2&gt;
&lt;p&gt;이런 식으로 알고리즘을 충분히 반복한 후 추출된 data point들의 히스토그램을 그리면 다음과 같은 모양을 띈다 — &lt;strong&gt;원래 $f(x)$ 의 분포와 흡사&lt;/strong&gt;하다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Histogram of accepted samples approximates f(x)"
srcset="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step7-histogram_hu_ac42b481c77ba57a.webp 320w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step7-histogram_hu_798fda3cd4801473.webp 480w, https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step7-histogram_hu_2f2c110255f9341b.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/blog/mcmc-metropolis-hastings/step7-histogram_hu_ac42b481c77ba57a.webp"
width="760"
height="314"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 data point들의 평균을 구하면 $f(x)$ 의 표본 평균과 표본 분산을 얻을 수 있다.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="보충-정확한-metropolis-hastings-채택-확률"&gt;보충: 정확한 Metropolis-Hastings 채택 확률&lt;/h2&gt;
&lt;p&gt;위 설명은 직관 중심이다. 실제 Metropolis-Hastings 알고리즘에서 &lt;strong&gt;새 점 $x'$ 을 채택할 확률&lt;/strong&gt;은 다음과 같다.&lt;/p&gt;
$$\alpha(x' \mid x) \;=\; \min\!\left\{1,\; \frac{f(x')\, q(x \mid x')}{f(x)\, q(x' \mid x)}\right\}$$&lt;p&gt;여기서&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$f(\cdot)$ : 목표 분포 (target)&lt;/li&gt;
&lt;li&gt;$q(x' \mid x)$ : 현재 위치 $x$ 에서 다음 후보 $x'$ 을 제안하는 proposal density&lt;/li&gt;
&lt;li&gt;proposal이 대칭이면 ($q(x'\mid x) = q(x \mid x')$, 예: 평균이 현재 점에 있는 정규분포) &lt;strong&gt;Metropolis&lt;/strong&gt; 알고리즘이 되어 비율이 $f(x')/f(x)$ 로 단순해진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;즉, &amp;ldquo;$f$ 가 큰 곳으로 이동하면 무조건 accept, $f$ 가 작은 곳으로 이동하면 비율만큼의 확률로 accept&amp;rdquo;. 위 직관 설명의 &amp;ldquo;f &amp;gt; h → accept, f &amp;lt; h → reject&amp;quot;는 이 채택 확률의 단순한 시각적 비유로 보면 된다.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;원문:
&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>MCMC (Gibbs Sampling)</title><link>https://chaeniverse.github.io/blog/mcmc-gibbs-sampling/</link><pubDate>Mon, 18 Dec 2023 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/mcmc-gibbs-sampling/</guid><description>&lt;h2 id="bayes-theorem-기초"&gt;Bayes&amp;rsquo; Theorem 기초&lt;/h2&gt;
$$P(a|b) = \frac{P(a \cap b)}{P(b)}$$$$P(b|a) = \frac{P(a \cap b)}{P(a)}$$$$P(a \cap b) = P(a)P(b|a)$$$$P(a|b) = \frac{P(a)P(b|a)}{P(b)} \quad (\text{where } P(b) \text{ is constant})$$$$P(a|b) \propto P(a)P(b|a) \quad (\text{using } \pi \text{ instead of } P)$$$$\pi(a|b) \propto \pi(a)\pi(b|a) \quad (\text{*이 식 알아두면 유용하다})$$&lt;h2 id="when-to-use-gibbs-sampling"&gt;When to Use Gibbs Sampling&lt;/h2&gt;
&lt;p&gt;그럼 이 Gibbs sampling이라는 게 언제 사용하는 건지 알아보자.&lt;/p&gt;
$$y_i|\mu,\sigma^2 \sim N(\mu,\sigma^2), \quad i=1,\dots,n$$&lt;p&gt;위의 분포에서 $\mu, \sigma^2$ 는 unknown parameter이고,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;frequentist 관점에서는 $\mu, \sigma^2$ 를 MLE로 고정시킨다.&lt;/li&gt;
&lt;li&gt;반면 베이지안들은 이 unknown parameter에 분포를 걸어놓고 생각한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이때 사용하는 게 Gibbs sampling이다.&lt;/p&gt;
&lt;h2 id="posterior-distribution"&gt;Posterior Distribution&lt;/h2&gt;
&lt;p&gt;이 unknown parameter의 분포를 구하기 위해서는 다음과 같은 과정이 필요하다.&lt;/p&gt;
$$y_i|\mu,\sigma^2 \sim N(\mu,\sigma^2), \quad i=1,\dots,n$$$$P(\mu,\sigma^2|y_1,\dots,y_n) \propto P(y_1,\dots,y_n|\mu,\sigma^2)P(\mu,\sigma^2)$$$$P(\mu,\sigma^2|y_1,\dots,y_n) \propto P(y_1,\dots,y_n|\mu,\sigma^2)P(\mu)P(\sigma^2) \quad (\mu \perp \sigma^2)$$$$\propto P(y_1,\dots,y_n|\mu,\sigma^2)P(\mu) \quad (P(\sigma^2) \text{ known이므로 constant 취급})$$&lt;p&gt;이때 $P(\mu,\sigma^2|y_1,\dots,y_n)$ 는 posterior, $P(y_1,\dots,y_n|\mu,\sigma^2)$ 는 likelihood, $P(\mu)$ 는 prior 가 된다.&lt;/p&gt;
&lt;p&gt;여기서 보통 $P(\mu) \sim N(\mu_0, \sigma^2_0)$, $P(\sigma^2) \sim IG(a,b)$ 로 둔다. $\mu_0, \sigma^2_0, a, b$ 는 hyperparameter이고 내가 정하는 것이므로 prior라고 한다.&lt;/p&gt;
&lt;h2 id="의-조건부-분포-유도"&gt;$\mu$ 의 조건부 분포 유도&lt;/h2&gt;
$$P(y_1,\dots,y_n|\mu,\sigma^2)P(\mu)$$$$= \left(\frac{1}{\sqrt{2\pi\sigma^2}}\right)^n\prod_{i=1}^{n}\exp\left(-\frac{1}{2\sigma^2}(y_i-\mu)^2\right) \times \frac{1}{\sqrt{2\pi\sigma^2_0}}\exp\left(-\frac{1}{2\sigma^2_0}(\mu-\mu_0)^2\right)$$&lt;p&gt;여기서 $\mu$ 만 변수이므로, $\mu$ 에 대한 거 아니면 모두 날아간다.&lt;/p&gt;
$$= \exp\left(-\frac{1}{2\sigma^2}\sum (y_i-\mu)^2-\frac{1}{2\sigma^2_0}(\mu-\mu_0)^2\right)$$$$= \exp\left(-\frac{1}{2\sigma^2}\left(\sum y^2_i-2n\bar{y}\mu+n\mu^2\right)-\frac{1}{2\sigma^2_0}(\mu-\mu_0)^2\right)$$$$= \exp\left(-\frac{1}{2}\left(\frac{\sum y_i^2-2n\bar{y}\mu+n\mu^2}{\sigma^2}+\frac{\mu^2-2\mu\mu_0+\mu^2_0}{\sigma_0^2}\right)\right)$$$$= \exp\left(-\frac{1}{2}\cdot\frac{\sigma^2_0n\mu^2+\sigma^2\mu^2-2\sigma^2_0n\bar{y}\mu-2\sigma^2\mu_0\mu}{\sigma^2\sigma^2_0}\right)$$&lt;p&gt;(이걸 $N(\circ,\square)$ 꼴로 만들어야 한다.)&lt;/p&gt;
$$= \exp\left(-\frac{1}{2}\cdot\frac{1}{\sigma^2\sigma^2_0}(\sigma^2_0n\mu^2+\sigma^2\mu^2-2(\sigma^2_0n\bar{y}+\sigma^2\mu_0)\mu)\right)$$$$= \exp\left(-\frac{1}{2}\cdot\frac{1}{\sigma^2\sigma^2_0}((\sigma^2_0n+\sigma^2)\mu^2-2(\sigma^2_0n\bar{y}+\sigma^2\mu_0)\mu)\right)$$$$= \exp\left(-\frac{1}{2}\cdot\frac{\sigma^2_0n+\sigma^2}{\sigma^2\sigma^2_0}\left(\mu^2-2\left(\frac{\sigma^2_0n\bar{y}+\sigma^2\mu_0}{\sigma^2_0n+\sigma^2}\right)\mu\right)\right)$$&lt;p&gt;따라서&lt;/p&gt;
$$\mathbf{E}(\mu|\sigma^2,\vec{y}) = \frac{\sigma^2_0n\bar{y}+\sigma^2\mu_0}{\sigma^2_0n+\sigma^2} = \frac{\dfrac{n\bar{y}}{\sigma^2}+\dfrac{\mu_0}{\sigma^2_0}}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}}$$$$\mathrm{Var}(\mu|\sigma^2,\vec{y}) = \frac{\sigma^2\sigma^2_0}{\sigma^2_0n+\sigma^2} = \frac{1}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}}$$&lt;p&gt;따라서&lt;/p&gt;
$$\pi(\mu|\sigma^2,y) \sim N\left(\frac{\dfrac{n\bar{y}}{\sigma^2}+\dfrac{\mu_0}{\sigma^2_0}}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}},\ \frac{1}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}}\right)$$&lt;h2 id="의-조건부-분포-유도-1"&gt;$\sigma^2$ 의 조건부 분포 유도&lt;/h2&gt;
&lt;p&gt;마찬가지로, $\sigma^2$ 에 대한 posterior를 계산한다.&lt;/p&gt;
$$P(\sigma^2|\mu,y_1,\dots,y_n) \propto P(y_1,\dots,y_n|\mu,\sigma^2)P(\mu)P(\sigma^2) \quad (\mu \perp \sigma^2)$$$$\propto P(y_1,\dots,y_n|\mu,\sigma^2)P(\sigma^2) \quad (P(\mu) \text{ known} \to \text{상수 취급})$$&lt;p&gt;$P(\sigma^2) \sim IG(a,b)$ 이므로 다음과 같이 쓸 수 있다.&lt;/p&gt;
$$P(y_1,\dots,y_n|\mu,\sigma^2)P(\sigma^2) = \left(\frac{1}{\sqrt{2\pi\sigma^2}}\right)^n\prod_{i=1}^{n}\exp\left(-\frac{1}{2\sigma^2}(y_i-\mu)^2\right) \times (\sigma^2)^{-(a+1)}\exp\left(-\frac{b}{\sigma^2}\right)$$&lt;p&gt;(여기서 $\sigma^2$ 만 변수이므로, $\sigma^2$ 에 대한 거 아니면 모두 날아간다.)&lt;/p&gt;
$$= (2\pi\sigma^2)^{-\frac{n}{2}}\cdot (\sigma^2)^{-(a+1)}\cdot\exp\left(-\frac{1}{2\sigma^2}\sum(y_i-\mu)^2-\frac{b}{\sigma^2}\right)$$$$= (2\pi)^{-\frac{n}{2}}\cdot(\sigma^2)^{-\frac{n}{2}}\cdot(\sigma^2)^{-(a+1)}\cdot\exp\left(-\frac{1}{\sigma^2}\left(\frac{\sum(y_i-\mu)^2}{2}+b\right)\right)$$&lt;p&gt;(이걸 $IG(\circ,\square)$ 꼴로 만든다.)&lt;/p&gt;
$$= (\sigma^2)^{-(a+\frac{n}{2}+1)}\cdot\exp\left(-\frac{\dfrac{\sum(y_i-\mu)^2}{2}+b}{\sigma^2}\right)$$&lt;p&gt;따라서&lt;/p&gt;
$$\pi(\sigma^2|\mu,\vec{y}) \sim IG\left(a+\frac{n}{2},\ b+\frac{\sum(y_i-\mu)^2}{2}\right)$$&lt;h2 id="사후-분포-정리"&gt;사후 분포 정리&lt;/h2&gt;
&lt;p&gt;이런 식으로 $\mu, \sigma^2$ 에 대한 posterior를 구하면 아래와 같다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
$$\pi(\mu|\sigma^2,\vec{y})\sim N\left(\frac{\dfrac{n\bar{y}}{\sigma^2}+\dfrac{\mu_0}{\sigma^2_0}}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}},\ \frac{1}{\dfrac{n}{\sigma^2}+\dfrac{1}{\sigma^2_0}}\right)$$&lt;p&gt;($\sigma^2$ 은 모르니까 처음에는 1을 넣어준다.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
$$\pi(\sigma^2|\mu,\vec{y})\sim IG\left(a+\frac{n}{2},\ b+\frac{\sum(y_i-\mu)^2}{2}\right)$$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;여기서 $\mu_0, \sigma^2_0, a, b$ 는 hyperparameter다.&lt;/p&gt;
&lt;h2 id="gibbs-sampling-알고리즘"&gt;Gibbs Sampling 알고리즘&lt;/h2&gt;
&lt;p&gt;이제 1에서 $\mu$ 하나 뽑는다 ($\to \mu^{(1)}$ 추출).&lt;/p&gt;
&lt;p&gt;그리고 나서, 2에 $\mu^{(1)}$ 을 넣어 $\sigma^2$ 을 뽑는다 ($\to \sigma^{2(1)}$).&lt;/p&gt;
&lt;p&gt;그 다음에, 1에 $\sigma^{2(1)}$ 을 넣어 $\mu^{(2)}$ 를 뽑는다.&lt;/p&gt;
&lt;p&gt;다시 2에 $\mu^{(2)}$ 를 넣고 $\sigma^{2(2)}$ 을 뽑는다.&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;이런 식으로 총 2만 번 sampling한다.&lt;/p&gt;
&lt;p&gt;초기값의 영향을 받을 수 있기 때문에 그 중 앞의 만 개는 버리고, 뒤의 만 개를 갖고 근사화된 분포를 구한다. 그러면 원래 joint distribution과 비슷한 분포를 얻게 된다.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;원문:
&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>