Mô hình Bayes về IQ của Zombie
Zombie thì ngu ngốc, và bạn cùng các đồng nghiệp tại National Zombie Research Laboratory muốn biết chúng ngu đến mức nào. Bạn có mô hình Normal chúng ta đã phát triển ở video trước, nhưng đã thay dữ liệu nhiệt độ bằng các điểm IQ của zombie mới từ phòng thí nghiệm. Điều chúng ta quan tâm là có thể học được bao nhiêu về giá trị trung bình của IQ zombie từ dữ liệu này. Mô hình đã hoàn chỉnh, chỉ còn thiếu việc tính probability cho từng tổ hợp tham số trong pars.
Bài tập này là một phần của khóa học
Những nền tảng của Phân tích dữ liệu Bayesian trong R
Hướng dẫn bài tập
- Dùng định lý Bayes để tính các xác suất này và gán vào
pars$probabilityđể hoàn thiện mô hình.
Đây là định lý Bayes:
$$P(\theta|D) = \frac{P(D|\theta) \times P(\theta)}{\sum P(D|\theta) \times P(\theta)}$$
Trong đó
- \(\theta\) là một tổ hợp tham số,
- \(D\) là dữ liệu,
- \(P(D|\theta)\) là likelihood
- \(P(\theta)\) là prior
- \(P(\theta|D)\) là xác suất của các giá trị tham số khác nhau khi đã quan sát dữ liệu. Đây chính là thứ chúng ta cần!
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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 <- ___