Mode of Marginal K Distribution
mode_K_marginal.RdComputes the mode (most likely value) of the marginal distribution of \(K_J\).
Usage
mode_K_marginal(
J,
a,
b,
logS,
M = .QUAD_NODES_DEFAULT,
M_verify = NULL,
abs_tol = 1e-10,
rel_tol = 1e-08,
strict = FALSE
)Arguments
- J
Integer; sample size.
- a
Numeric; shape parameter of Gamma prior (> 0).
- b
Numeric; rate parameter of Gamma prior (> 0).
- logS
Matrix; pre-computed log-Stirling matrix.
- M
Integer; number of quadrature nodes (default: 80).
- M_verify
Optional independent order satisfying the package verification rule (at least
max(2*M, M+40)).- abs_tol, rel_tol
Non-negative selected-versus-verification tolerances.
- strict
Logical; require successful higher-order verification.
Value
Integer; the value \(k\) that maximizes \(P(K_J = k \mid a, b)\),
carrying the PMF's "marginal_metadata" attribute.
Details
The mode is always >= 1 since \(P(K_J = 0) = 0\).
When M_verify is supplied, the selected and verification modes must
be identical for converged mode metadata. Disagreement is explicit and
never causes substitution of the verification-order mode.
Examples
logS <- compute_log_stirling(50)
mode_K_marginal(50, 1.5, 0.5, logS)
#> [1] 6
#> attr(,"marginal_metadata")
#> attr(,"marginal_metadata")$schema_version
#> [1] 1
#>
#> attr(,"marginal_metadata")$engine
#> [1] "gauss-laguerre-log-mixture"
#>
#> attr(,"marginal_metadata")$status
#> [1] "approximate"
#>
#> attr(,"marginal_metadata")$reason
#> [1] "fixed_order_unverified"
#>
#> attr(,"marginal_metadata")$support
#> lower upper
#> 1 50
#>
#> attr(,"marginal_metadata")$returned_support
#> lower upper
#> 0 50
#>
#> attr(,"marginal_metadata")$normalization
#> attr(,"marginal_metadata")$normalization$log_constant
#> [1] 0
#>
#> attr(,"marginal_metadata")$normalization$probability_sum
#> [1] 1
#>
#> attr(,"marginal_metadata")$normalization$underflow_zero_count
#> [1] 0
#>
#> attr(,"marginal_metadata")$normalization$pre_rescale_probability_sum
#> [1] 1
#>
#> attr(,"marginal_metadata")$normalization$linear_rescale
#> [1] 0
#>
#>
#> attr(,"marginal_metadata")$truncation
#> attr(,"marginal_metadata")$truncation$truncated
#> [1] FALSE
#>
#> attr(,"marginal_metadata")$truncation$requested_mass
#> [1] 1
#>
#> attr(,"marginal_metadata")$truncation$achieved_mass
#> [1] 1
#>
#> attr(,"marginal_metadata")$truncation$omitted_mass
#> [1] 0
#>
#>
#> attr(,"marginal_metadata")$verification
#> attr(,"marginal_metadata")$verification$performed
#> [1] FALSE
#>
#> attr(,"marginal_metadata")$verification$passed
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$M_selected
#> [1] 80
#>
#> attr(,"marginal_metadata")$verification$M_verification_required
#> [1] 160
#>
#> attr(,"marginal_metadata")$verification$verification_available
#> [1] TRUE
#>
#> attr(,"marginal_metadata")$verification$M_verification
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$l1_difference
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$max_difference
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$tolerance
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$l1_passed
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$moment_consistency
#> attr(,"marginal_metadata")$verification$moment_consistency$passed
#> [1] NA
#>
#> attr(,"marginal_metadata")$verification$moment_consistency$selected
#> NULL
#>
#> attr(,"marginal_metadata")$verification$moment_consistency$verification
#> NULL
#>
#>
#> attr(,"marginal_metadata")$verification$absolute_tolerance
#> [1] 1e-10
#>
#> attr(,"marginal_metadata")$verification$relative_tolerance
#> [1] 1e-08
#>
#>
#> attr(,"marginal_metadata")$selected
#> attr(,"marginal_metadata")$selected$schema_version
#> [1] 1
#>
#> attr(,"marginal_metadata")$selected$distribution
#> [1] "Gamma(shape, rate)"
#>
#> attr(,"marginal_metadata")$selected$shape
#> [1] 1.5
#>
#> attr(,"marginal_metadata")$selected$rate
#> [1] 0.5
#>
#> attr(,"marginal_metadata")$selected$M_selected
#> [1] 80
#>
#> attr(,"marginal_metadata")$selected$M_verification
#> [1] NA
#>
#> attr(,"marginal_metadata")$selected$normalization
#> [1] "log-sum-exp"
#>
#> attr(,"marginal_metadata")$selected$normalized_weight_sum
#> [1] 1
#>
#> attr(,"marginal_metadata")$selected$node_rule
#> attr(,"marginal_metadata")$selected$node_rule$schema_version
#> [1] 1
#>
#> attr(,"marginal_metadata")$selected$node_rule$engine
#> [1] "golub-welsch-dense-eigen"
#>
#> attr(,"marginal_metadata")$selected$node_rule$M_selected
#> [1] 80
#>
#> attr(,"marginal_metadata")$selected$node_rule$alpha_param
#> [1] 0.5
#>
#> attr(,"marginal_metadata")$selected$node_rule$cache_key
#> [1] "M=80|alpha=0.5"
#>
#> attr(,"marginal_metadata")$selected$node_rule$cache_hit
#> [1] TRUE
#>
#> attr(,"marginal_metadata")$selected$node_rule$zero_normalized_weights
#> [1] 29
#>
#> attr(,"marginal_metadata")$selected$node_rule$normalized_weight_sum
#> [1] 1
#>
#>
#>
#> attr(,"marginal_metadata")$verification_rule
#> NULL
#>
#> attr(,"marginal_metadata")$discrete_verification
#> attr(,"marginal_metadata")$discrete_verification$mode
#> attr(,"marginal_metadata")$discrete_verification$mode$performed
#> [1] FALSE
#>
#> attr(,"marginal_metadata")$discrete_verification$mode$passed
#> [1] NA
#>
#> attr(,"marginal_metadata")$discrete_verification$mode$probabilities
#> NULL
#>
#> attr(,"marginal_metadata")$discrete_verification$mode$selected
#> [1] 6
#>
#> attr(,"marginal_metadata")$discrete_verification$mode$verification
#> NULL
#>
#>
#>