高校数学の質問スレ(医者・東大卒専用) Part438 (882レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

857: 2025/05/31(土) 05:25:02.62 ID:jzcOJBMt(1)調 AAS
#' @title ベイズ事後確率計算関数
#' @description 帰無仮説と対立仮説の事後確率を計算
#' @param s 観測成功数(1の目が出た回数)
#' @param n 総試行回数
#' @param p0 帰無仮説の確率(例: 1/6)
#' @param prior 帰無仮説の事前確率(0~1)
#' @param alpha 対立仮説のベータ分布αパラメータ
#' @param beta 対立仮説のベータ分布βパラメータ
#' @return list(bf01=ベイズファクター, post=事後確率, method=使用手法)
calculate_posterior <- function(s, n, p0, prior, alpha, beta) {

# 入力検証
stopifnot(
s >= 0, n > 0,
p0 > 0 && p0 < 1,
prior >= 0 && prior <= 1,
alpha > 0, beta > 0
)

# 帰無仮説の尤度計算
m0 <- dbinom(s, n, p0)

# 対立仮説の周辺尤度計算(extraDistr有無で自動切替)
if (requireNamespace("extraDistr", quietly = TRUE)) {
m1 <- extraDistr::dbbinom(s, n, alpha, beta)
method <- "extraDistr::dbbinom()"
} else {
integrand <- function(p) dbinom(s, n, p) * dbeta(p, alpha, beta)
m1 <- integrate(integrand, 0, 1)$value
method <- "数値積分"
}

# ベイズファクターと事後確率計算(指定された式を使用)
bf01 <- m0 / m1
post <- m0 * prior / (m0 * prior + (1 - prior) * m1)

# 結果をリストで返す
list(
bf01 = bf01,
post = post,
method = method,
inputs = list(s = s, n = n, p0 = p0, prior = prior, alpha = alpha, beta = beta),
likelihoods = list(m0 = m0, m1 = m1)
)
}
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 1.175s*