根据众数和 95% 可信区间为 beta 分布选择 alpha 和 beta 参数

机器算法验证 r 贝叶斯 事先的 贝塔分布
2022-03-26 10:46:10

我想同时使用两种模式和 95% 的可信区间来选择 alpha 和 beta 值。我可以使用指定的 95% 可信区间或与 beta 结合的模式来选择 alpha 和 beta,但同时使用众数和 95% 可信区间将有助于进一步完善我的 beta 分布。

我追求一个 95% 可信区间从 0.01 到 0.15 且众数为 0.05 的 beta 分布,以建立先验分布。

我可以使用带有此 R 代码的 95% CI 模式选择参数:

library(LearnBayes)
quantile1=list(p=.025, x=0.01)     # 2.5% quantile should be 0.01
quantile2=list(p=.975, x=0.15)      # 97.5% quantile should be 0.15
beta.select(quantile1, quantile2)
[1]  2.44 38.21

我可以为给定的模式和 beta 选择 alpha,使用以下 R 代码,通过重新组织方程模式 = (α - 1) / (α + β - 2):

# Select beta and mode - does not work if alpha + beta = 2
beta <- 38.21
mod <- 0.05
alpha <- beta * mod / (1 - mod) + (-2 * mod + 1) / (1 - mod)
alpha
[1] 2.958421

注意 alpha 值的变化,因为 alpha = 2.44 和 beta = 38.21 的模式不是 0.05(它是 0.037257439)。

1个回答

这是一个将分布与 3 个参数匹配的优化问题:2 个分位数和众数。

事实上,即使您之前使用的函数也会从优化中返回估计值。如果您从那些计算分位数值α,β它给你的参数,你会发现它们不完全匹配:

> qbeta(p=c(0.025, 0.975), shape1=2.44, shape2=38.21)
[1] 0.01004775 0.14983899

我们将定义一个目标函数,用于计算已知和优化的分位数值与模式之间的平方误差,对于给定的参数集α,β分布的(编码在params向量中):

objective.function <- function(params) {
  alpha <- params[1]
  beta <- params[2]

  intended.quantiles <- c(0.01, 0.15)
  calculated.quantiles <- qbeta(p=c(0.025, 0.975), shape1=alpha, shape2=beta)
  squared.error.quantiles <- sum((intended.quantiles - calculated.quantiles)^2)

  intended.mode <- 0.05
  calculated.mode <- calculate.mode(alpha, beta)
  squared.error.mode <- (intended.mode - calculated.mode)^2

  return(squared.error.quantiles + squared.error.mode)
}

calculate.mode <- function(alpha, beta) {
  return((alpha-1) / (alpha+beta-2))
}

你已经有了一些好的起始值α,β,所以让我们准备好这些:

starting.params <- c(2.44, 38.21)

顺便说一句,这就是使用这些初始估计参数化的 Beta 分布的 PDF 的样子。红线是实际的分位数和模式,蓝线是您要匹配的。正如您所建议的,分位数看起来不错,但模式已关闭:

在此处输入图像描述

现在我们使用nlm优化函数来估计最优值α,β,从那些初始值开始。算法收敛:

nlm.result <- nlm(f = objective.function, p = starting.params)
optimal.alpha <- nlm.result$estimate[1]
optimal.beta <- nlm.result$estimate[2]

所以优化后的估计是:

α=3.174725

β=44.94454

而这些最优参数对应的分位数和众数分别为:

> qbeta(p=c(0.025, 0.975), shape1=optimal.alpha, shape2=optimal.beta)
[1] 0.01499578 0.15042877
> calculate.mode(optimal.alpha, optimal.beta)
[1] 0.04715437

重新创建 Beta PDF 的绘图,这次使用新参数,我们可以看到模式匹配得更好,但代价是更低的2.5%分位数:

在此处输入图像描述

可能的增强功能:

  • 这是一种快速实现,可能无法很好地处理极端值和数值问题。仅在 2 个分位数的情况下查看此答案以获得更好的代码。
  • 研究受约束的优化包,其中问题将被表述为估计 2 个参数 (α,β) 受约束α1α+β2=0.05