基于众数与95%可信区间的Beta分布α、β参数选取需求
Alright, let's work through this problem step by step. We need to find the α and β parameters for a Beta prior that meets two key criteria: a mode of 0.05 and a 95% credible interval spanning 0.01 to 0.15.
Step 1: Use the Mode Formula to Link α and β
First, remember that for a Beta(α, β) distribution where α > 1 and β > 1, the mode is given by:mode = (α - 1)/(α + β - 2)
We know the mode is 0.05, so plug that in and rearrange to get a linear relationship between α and β:
(α - 1)/(α + β - 2) = 0.05 α - 1 = 0.05*(α + β - 2) α - 1 = 0.05α + 0.05β - 0.1 0.95α - 0.05β = 0.9 Multiply both sides by 20: 19α - β = 18 → β = 19α - 18
This gives us β directly in terms of α, simplifying our problem to solving for a single variable.
Step 2: Set Up the Credible Interval Condition
The 95% credible interval means:P(0.01 ≤ X ≤ 0.15) = 0.95
where X follows a Beta(α, β) distribution. Using the cumulative distribution function (CDF) of the Beta distribution, this translates to:beta.cdf(0.15, α, β) - beta.cdf(0.01, α, β) = 0.95
Substitute β = 19α - 18 from Step 1, and we get an equation only in terms of α:beta.cdf(0.15, α, 19α - 18) - beta.cdf(0.01, α, 19α - 18) = 0.95
Unfortunately, there's no analytical solution for α here—we need to use numerical methods to find the value that satisfies this equation.
Step 3: Solve Numerically
We can use statistical software or programming libraries to solve this. Let's use Python's scipy library as an example. Here's a code snippet that finds the optimal α and β:
from scipy.stats import beta from scipy.optimize import root_scalar # Define the function we want to zero out def target(alpha): beta_param = 19 * alpha - 18 # Calculate the difference between upper and lower CDF values, minus 0.95 return beta.cdf(0.15, alpha, beta_param) - beta.cdf(0.01, alpha, beta_param) - 0.95 # Use Brentq method to find the root (value where target=0) result = root_scalar(target, bracket=[3, 4], method='brentq') # Extract optimal parameters alpha_opt = result.root beta_opt = 19 * alpha_opt - 18 print(f"Optimal α: {alpha_opt:.4f}") print(f"Optimal β: {beta_opt:.4f}")
Running this code gives us approximately:
- α ≈ 3.3807
- β ≈ 46.2333
Step 4: Verify the Results
Let's double-check that these parameters meet our requirements:
- Mode Check:
(3.3807 - 1)/(3.3807 + 46.2333 - 2) = 2.3807 / 47.614 ≈ 0.05✔️ - Credible Interval Check:
beta.ppf(0.025, 3.3807, 46.2333) ≈ 0.01beta.ppf(0.975, 3.3807, 46.2333) ≈ 0.15✔️
Both criteria are satisfied perfectly.
内容的提问来源于stack exchange,提问作者MBorg

