P_weather = c(Good = 0.6, Bad = 0.4)
P_fertilizer = c(Yes = 0.7, No = 0.3)
P_yield = c(High = 0.5, Low = 0.5)
likelihoods = list(
  High = matrix(c(0.9, 0.7, 0.5, 0.2), nrow = 2, byrow = TRUE,
                dimnames = list(c("Good", "Bad"), c("Yes", "No"))),
  Low = matrix(c(0.1, 0.3, 0.5, 0.8), nrow = 2, byrow = TRUE,
               dimnames = list(c("Good", "Bad"), c("Yes", "No")))
)

weather_obs = "Good"
fertilizer_obs = "Yes"

joint_high = likelihoods$High[weather_obs, fertilizer_obs] * P_yield["High"]
joint_low = likelihoods$Low[weather_obs, fertilizer_obs] * P_yield["Low"]

evidence <- joint_high + joint_low

posterior_high = joint_high / evidence
posterior_low = joint_low / evidence

cat("Posterior probability of High Yield: ", round(posterior_high, 4), "\n")
## Posterior probability of High Yield:  0.9
cat("Posterior probability of Low Yield: ", round(posterior_low, 4), "\n")
## Posterior probability of Low Yield:  0.1