始める無料で始める

ゾンビのIQのベイズモデル

ゾンビは知能が低いことで知られており、あなたと国立ゾンビ研究所の同僚たちは、どの程度低いのかを調べています。前の動画で構築した正規分布モデルを使いますが、気温データの代わりに研究所から採取したゾンビのIQデータを使います。このデータから、ゾンビのIQの平均についてどれだけのことがわかるかを探っていきましょう。モデルはほぼ完成していますが、pars 内の各パラメータの組み合わせに対する probability(確率)を計算する必要があります。

この演習はコースの一部です

RによるベイズデータAnalysisの基礎

コースを見る

演習の手順

  • ベイズの定理を使って確率を計算し、pars$probability に代入してモデルを完成させましょう。

ベイズの定理は次の通りです。

$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$

ここで、

  • \(\theta\) はパラメータの組み合わせ、
  • \(D\) はデータ、
  • \(P(D|\theta)\) は尤度(ゆうど)
  • \(P(\theta)\) は事前確率
  • \(P(\theta|D)\) はデータが与えられたときの各パラメータ値の確率(事後確率)であり、これが求めたい値です。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# The IQ of a bunch of zombies
iq <- c(55, 44, 34, 18, 51, 40, 40, 49, 48, 46)
# Defining the parameter grid
pars <- expand.grid(mu = seq(0, 150, length.out = 100), 
                    sigma = seq(0.1, 50, length.out = 100))
# Defining and calculating the prior density for each parameter combination
pars$mu_prior <- dnorm(pars$mu, mean = 100, sd = 100)
pars$sigma_prior <- dunif(pars$sigma, min = 0.1, max = 50)
pars$prior <- pars$mu_prior * pars$sigma_prior
# Calculating the likelihood for each parameter combination
for(i in 1:nrow(pars)) {
  likelihoods <- dnorm(iq, pars$mu[i], pars$sigma[i])
  pars$likelihood[i] <- prod(likelihoods)
}
# Calculate the probability of each parameter combination
pars$probability <- ___
コードを編集して実行