pub struct TransformationNormalFamily { /* private fields */ }Expand description
Conditional transformation model mapping Y|x to N(0,1).
Single-block CustomFamily. The block design is x_val (tensor product of
response value basis × covariate design). The family internally holds x_deriv
(tensor product of response derivative basis × covariate design) for the
Jacobian term in the likelihood.
Implementations§
Source§impl TransformationNormalFamily
impl TransformationNormalFamily
Sourcepub fn new(
response: &Array1<f64>,
weights: &Array1<f64>,
offset: &Array1<f64>,
covariate_design: DesignMatrix,
covariate_penalties: Vec<PenaltyMatrix>,
config: &TransformationNormalConfig,
warm_start: Option<&TransformationWarmStart>,
) -> Result<Self, String>
pub fn new( response: &Array1<f64>, weights: &Array1<f64>, offset: &Array1<f64>, covariate_design: DesignMatrix, covariate_penalties: Vec<PenaltyMatrix>, config: &TransformationNormalConfig, warm_start: Option<&TransformationWarmStart>, ) -> Result<Self, String>
Build a transformation model from response values and a pre-built covariate design operator with associated penalties.
§Arguments
response- The response variable y (n observations).covariate_design- Pre-built covariate-side design operator (n × p_cov).covariate_penalties- Penalty matrices for the covariate basis.config- Response-direction basis configuration.warm_start- Optional location/scale from a prior normalizer.
Sourcepub fn from_prebuilt_response_basis(
response: &Array1<f64>,
response_val_basis: Array2<f64>,
response_deriv_basis: Array2<f64>,
response_penalties: Vec<Array2<f64>>,
response_knots: Array1<f64>,
response_degree: usize,
response_transform: Array2<f64>,
weights: &Array1<f64>,
offset: &Array1<f64>,
covariate_design: DesignMatrix,
covariate_penalties: Vec<PenaltyMatrix>,
config: &TransformationNormalConfig,
warm_start: Option<&TransformationWarmStart>,
) -> Result<Self, String>
pub fn from_prebuilt_response_basis( response: &Array1<f64>, response_val_basis: Array2<f64>, response_deriv_basis: Array2<f64>, response_penalties: Vec<Array2<f64>>, response_knots: Array1<f64>, response_degree: usize, response_transform: Array2<f64>, weights: &Array1<f64>, offset: &Array1<f64>, covariate_design: DesignMatrix, covariate_penalties: Vec<PenaltyMatrix>, config: &TransformationNormalConfig, warm_start: Option<&TransformationWarmStart>, ) -> Result<Self, String>
Build from a prebuilt response basis, skipping response basis construction.
For the outer loop where the response basis is precomputed once and reused across κ iterations.
Sourcepub fn response_knots(&self) -> &Array1<f64>
pub fn response_knots(&self) -> &Array1<f64>
Response basis metadata for serialization/prediction.
pub fn response_transform(&self) -> &Array2<f64>
pub fn response_degree(&self) -> usize
pub fn response_median(&self) -> f64
Sourcepub fn block_spec(&self) -> ParameterBlockSpec
pub fn block_spec(&self) -> ParameterBlockSpec
Return the ParameterBlockSpec for this family (single block).
Trait Implementations§
Source§impl Clone for TransformationNormalFamily
impl Clone for TransformationNormalFamily
Source§fn clone(&self) -> TransformationNormalFamily
fn clone(&self) -> TransformationNormalFamily
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl CustomFamily for TransformationNormalFamily
impl CustomFamily for TransformationNormalFamily
Source§fn exact_newton_joint_gradient_evaluation(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
) -> Result<Option<ExactNewtonJointGradientEvaluation>, String>
fn exact_newton_joint_gradient_evaluation( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], ) -> Result<Option<ExactNewtonJointGradientEvaluation>, String>
Log-likelihood + flat joint gradient without building the dense Hessian.
The default trait implementation returns None, so the joint-Newton
inner solver falls back to evaluate() to obtain the gradient — and
that side-effects a full Θ(n p²) weighted_gram Hessian build at
every inner iteration. CTN’s gradient is structurally
∇ℓ = -X_val^T (w·h) + X_deriv^T (w/h'),
which is two transpose_muls through the existing Khatri-Rao operators
and one Θ(n) row reduction — Θ(n p) total. At large scale that is
~10⁷ FLOPs per call versus ~3·10¹⁰ for the full evaluate, so wiring
this override is the gating condition for routing CTN’s inner solve
through the matrix-free joint-Newton path without paying the dense H
tax on every gradient refresh.
Source§fn evaluate(
&self,
block_states: &[ParameterBlockState],
) -> Result<FamilyEvaluation, String>
fn evaluate( &self, block_states: &[ParameterBlockState], ) -> Result<FamilyEvaluation, String>
Source§fn log_likelihood_only(
&self,
block_states: &[ParameterBlockState],
) -> Result<f64, String>
fn log_likelihood_only( &self, block_states: &[ParameterBlockState], ) -> Result<f64, String>
Source§fn log_likelihood_only_with_options(
&self,
block_states: &[ParameterBlockState],
options: &BlockwiseFitOptions,
) -> Result<f64, String>
fn log_likelihood_only_with_options( &self, block_states: &[ParameterBlockState], options: &BlockwiseFitOptions, ) -> Result<f64, String>
Source§fn exact_newton_joint_hessian_beta_dependent(&self) -> bool
fn exact_newton_joint_hessian_beta_dependent(&self) -> bool
Source§fn joint_jeffreys_term_required(&self) -> bool
fn joint_jeffreys_term_required(&self) -> bool
H_Φ and score ∇Φ. Read moreSource§fn coefficient_hessian_cost(&self, specs: &[ParameterBlockSpec]) -> u64
fn coefficient_hessian_cost(&self, specs: &[ParameterBlockSpec]) -> u64
Source§fn coefficient_gradient_cost(&self, specs: &[ParameterBlockSpec]) -> u64
fn coefficient_gradient_cost(&self, specs: &[ParameterBlockSpec]) -> u64
Source§fn outer_derivative_policy(
&self,
specs: &[ParameterBlockSpec],
psi_dim: usize,
options: &BlockwiseFitOptions,
) -> OuterDerivativePolicy
fn outer_derivative_policy( &self, specs: &[ParameterBlockSpec], psi_dim: usize, options: &BlockwiseFitOptions, ) -> OuterDerivativePolicy
Source§fn outer_seed_config(&self, n_params: usize) -> SeedConfig
fn outer_seed_config(&self, n_params: usize) -> SeedConfig
Source§fn max_feasible_step_size(
&self,
block_states: &[ParameterBlockState],
block_index: usize,
delta: &Array1<f64>,
) -> Result<Option<f64>, String>
fn max_feasible_step_size( &self, block_states: &[ParameterBlockState], block_index: usize, delta: &Array1<f64>, ) -> Result<Option<f64>, String>
Source§fn block_linear_constraints(
&self,
_: &[ParameterBlockState],
block_index: usize,
block_spec: &ParameterBlockSpec,
) -> Result<Option<LinearInequalityConstraints>, String>
fn block_linear_constraints( &self, _: &[ParameterBlockState], block_index: usize, block_spec: &ParameterBlockSpec, ) -> Result<Option<LinearInequalityConstraints>, String>
A * beta_block >= b.Source§fn exact_newton_hessian_directional_derivative(
&self,
block_states: &[ParameterBlockState],
block_index: usize,
d_beta: &Array1<f64>,
) -> Result<Option<Array2<f64>>, String>
fn exact_newton_hessian_directional_derivative( &self, block_states: &[ParameterBlockState], block_index: usize, d_beta: &Array1<f64>, ) -> Result<Option<Array2<f64>>, String>
Source§fn exact_newton_joint_hessian(
&self,
block_states: &[ParameterBlockState],
) -> Result<Option<Array2<f64>>, String>
fn exact_newton_joint_hessian( &self, block_states: &[ParameterBlockState], ) -> Result<Option<Array2<f64>>, String>
Source§fn exact_newton_joint_hessian_directional_derivative(
&self,
block_states: &[ParameterBlockState],
d_beta_flat: &Array1<f64>,
) -> Result<Option<Array2<f64>>, String>
fn exact_newton_joint_hessian_directional_derivative( &self, block_states: &[ParameterBlockState], d_beta_flat: &Array1<f64>, ) -> Result<Option<Array2<f64>>, String>
Source§fn exact_newton_joint_hessiansecond_directional_derivative(
&self,
block_states: &[ParameterBlockState],
d_beta_u_flat: &Array1<f64>,
d_beta_v_flat: &Array1<f64>,
) -> Result<Option<Array2<f64>>, String>
fn exact_newton_joint_hessiansecond_directional_derivative( &self, block_states: &[ParameterBlockState], d_beta_u_flat: &Array1<f64>, d_beta_v_flat: &Array1<f64>, ) -> Result<Option<Array2<f64>>, String>
Source§fn exact_newton_joint_psi_terms(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>],
psi_index: usize,
) -> Result<Option<ExactNewtonJointPsiTerms>, String>
fn exact_newton_joint_psi_terms( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>], psi_index: usize, ) -> Result<Option<ExactNewtonJointPsiTerms>, String>
Source§fn exact_newton_joint_psisecond_order_terms(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>],
psi_i: usize,
psi_j: usize,
) -> Result<Option<ExactNewtonJointPsiSecondOrderTerms>, String>
fn exact_newton_joint_psisecond_order_terms( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>], psi_i: usize, psi_j: usize, ) -> Result<Option<ExactNewtonJointPsiSecondOrderTerms>, String>
Source§fn exact_newton_joint_psihessian_directional_derivative(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>],
psi_index: usize,
d_beta_flat: &Array1<f64>,
) -> Result<Option<Array2<f64>>, String>
fn exact_newton_joint_psihessian_directional_derivative( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], psi_derivs: &[Vec<CustomFamilyBlockPsiDerivative>], psi_index: usize, d_beta_flat: &Array1<f64>, ) -> Result<Option<Array2<f64>>, String>
Source§fn exact_newton_joint_hessian_workspace(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, String>
fn exact_newton_joint_hessian_workspace( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], ) -> Result<Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, String>
Source§fn exact_newton_joint_psi_workspace(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>],
) -> Result<Option<Arc<dyn ExactNewtonJointPsiWorkspace>>, String>
fn exact_newton_joint_psi_workspace( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>], ) -> Result<Option<Arc<dyn ExactNewtonJointPsiWorkspace>>, String>
Source§fn exact_newton_joint_hessian_workspace_with_options(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
options: &BlockwiseFitOptions,
) -> Result<Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, String>
fn exact_newton_joint_hessian_workspace_with_options( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], options: &BlockwiseFitOptions, ) -> Result<Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, String>
exact_newton_joint_hessian_workspace. Read moreSource§fn exact_newton_joint_psi_workspace_with_options(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>],
options: &BlockwiseFitOptions,
) -> Result<Option<Arc<dyn ExactNewtonJointPsiWorkspace>>, String>
fn exact_newton_joint_psi_workspace_with_options( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>], options: &BlockwiseFitOptions, ) -> Result<Option<Arc<dyn ExactNewtonJointPsiWorkspace>>, String>
exact_newton_joint_psi_workspace. Read moreSource§fn exact_newton_joint_psi_workspace_for_first_order_terms(&self) -> bool
fn exact_newton_joint_psi_workspace_for_first_order_terms(&self) -> bool
Source§fn inner_coefficient_hessian_hvp_available(
&self,
specs: &[ParameterBlockSpec],
) -> bool
fn inner_coefficient_hessian_hvp_available( &self, specs: &[ParameterBlockSpec], ) -> bool
Source§fn outer_hyper_hessian_hvp_available(
&self,
specs: &[ParameterBlockSpec],
) -> bool
fn outer_hyper_hessian_hvp_available( &self, specs: &[ParameterBlockSpec], ) -> bool
Source§fn outer_hyper_hessian_dense_available(
&self,
specs: &[ParameterBlockSpec],
) -> bool
fn outer_hyper_hessian_dense_available( &self, specs: &[ParameterBlockSpec], ) -> bool
Source§fn persistent_warm_start_fingerprint(
&self,
specs: &[ParameterBlockSpec],
options: &BlockwiseFitOptions,
) -> Option<String>
fn persistent_warm_start_fingerprint( &self, specs: &[ParameterBlockSpec], options: &BlockwiseFitOptions, ) -> Option<String>
Source§fn supports_log_likelihood_early_exit(&self) -> bool
fn supports_log_likelihood_early_exit(&self) -> bool
log_likelihood_only_with_options can use
BlockwiseFitOptions::early_exit_threshold to reject line-search trials
without computing the full log-likelihood.Source§fn exact_newton_outerobjective(&self) -> ExactNewtonOuterObjective
fn exact_newton_outerobjective(&self) -> ExactNewtonOuterObjective
Source§fn use_projected_penalty_logdet(&self) -> bool
fn use_projected_penalty_logdet(&self) -> bool
½ log|H + Sλ| and its analytic
trace gradient ½ tr((H+Sλ)⁺ ∂Sλ) are evaluated over the FULL
identifiable subspace range(H + Sλ) (mgcv’s generalized determinant,
gam#752) rather than the penalty-range subspace range(Sλ). Read moreSource§fn exact_outer_derivative_order(
&self,
specs: &[ParameterBlockSpec],
_: &BlockwiseFitOptions,
) -> ExactOuterDerivativeOrder
fn exact_outer_derivative_order( &self, specs: &[ParameterBlockSpec], _: &BlockwiseFitOptions, ) -> ExactOuterDerivativeOrder
Source§fn outer_derivative_subsample_capable(&self) -> bool
fn outer_derivative_subsample_capable(&self) -> bool
options.outer_score_subsample. Read moreSource§fn requires_joint_outer_hyper_path(&self) -> bool
fn requires_joint_outer_hyper_path(&self) -> bool
Source§fn output_channel_assignment(
&self,
specs: &[ParameterBlockSpec],
) -> Option<Vec<usize>>
fn output_channel_assignment( &self, specs: &[ParameterBlockSpec], ) -> Option<Vec<usize>>
Source§fn block_geometry(
&self,
_: &[ParameterBlockState],
spec: &ParameterBlockSpec,
) -> Result<(DesignMatrix, ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>), String>
fn block_geometry( &self, _: &[ParameterBlockState], spec: &ParameterBlockSpec, ) -> Result<(DesignMatrix, ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>), String>
Source§fn block_geometry_is_dynamic(&self) -> bool
fn block_geometry_is_dynamic(&self) -> bool
block_geometry(...) can change with the current block state. Read moreSource§fn block_geometry_directional_derivative(
&self,
_: &[ParameterBlockState],
_: usize,
block_spec: &ParameterBlockSpec,
arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<BlockGeometryDirectionalDerivative>, String>
fn block_geometry_directional_derivative( &self, _: &[ParameterBlockState], _: usize, block_spec: &ParameterBlockSpec, arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<BlockGeometryDirectionalDerivative>, String>
Source§fn post_update_block_beta(
&self,
_: &[ParameterBlockState],
_: usize,
block_spec: &ParameterBlockSpec,
beta: ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, String>
fn post_update_block_beta( &self, _: &[ParameterBlockState], _: usize, block_spec: &ParameterBlockSpec, beta: ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, String>
Source§fn joint_trust_metric_block_floor(
&self,
_: &[ParameterBlockState],
_: &[ParameterBlockSpec],
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
fn joint_trust_metric_block_floor( &self, _: &[ParameterBlockState], _: &[ParameterBlockSpec], ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
D. Read moreSource§fn exact_newton_hessian_second_directional_derivative(
&self,
_: &[ParameterBlockState],
_: usize,
arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
arr2: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_hessian_second_directional_derivative( &self, _: &[ParameterBlockState], _: usize, arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, arr2: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn exact_newton_joint_loglik_gradient(
&self,
_: &[ParameterBlockState],
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
fn exact_newton_joint_loglik_gradient( &self, _: &[ParameterBlockState], ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
g = nabla l(theta)
assembled from the SAME single source of truth as
Self::exact_newton_joint_hessian (e.g. a per-row jet-tower kernel), so
the damped Newton H delta = g is solved on a consistent (objective,
gradient, Hessian) triple. The default returns None, leaving the caller
on its legacy hand-assembled gradient.Source§fn batched_outer_gradient_terms(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>],
rho: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
options: &BlockwiseFitOptions,
hessian_workspace: Option<Arc<dyn ExactNewtonJointHessianWorkspace>>,
) -> Result<Option<BatchedOuterGradientTerms>, String>
fn batched_outer_gradient_terms( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>], rho: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, options: &BlockwiseFitOptions, hessian_workspace: Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, ) -> Result<Option<BatchedOuterGradientTerms>, String>
Source§fn batched_outer_hessian_terms(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>],
rho: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
hessian_workspace: Option<Arc<dyn ExactNewtonJointHessianWorkspace>>,
) -> Result<Option<BatchedOuterHessianTerms>, String>
fn batched_outer_hessian_terms( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], derivative_blocks: &[Vec<CustomFamilyBlockPsiDerivative>], rho: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, hessian_workspace: Option<Arc<dyn ExactNewtonJointHessianWorkspace>>, ) -> Result<Option<BatchedOuterHessianTerms>, String>
fn inner_joint_workspace_gradient_available( &self, specs: &[ParameterBlockSpec], ) -> bool
Source§fn prefers_matrix_free_inner_joint(
&self,
specs: &[ParameterBlockSpec],
_: &[ParameterBlockState],
) -> bool
fn prefers_matrix_free_inner_joint( &self, specs: &[ParameterBlockSpec], _: &[ParameterBlockState], ) -> bool
use_joint_matrix_free_path heuristic. Read morefn inner_joint_workspace_log_likelihood_available( &self, specs: &[ParameterBlockSpec], ) -> bool
Source§fn outer_hyper_hessian_operator(
&self,
specs: &[ParameterBlockSpec],
) -> Option<Arc<dyn OuterHessianOperator>>
fn outer_hyper_hessian_operator( &self, specs: &[ParameterBlockSpec], ) -> Option<Arc<dyn OuterHessianOperator>>
Source§fn exact_newton_joint_hessian_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_joint_hessian_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_hessian_is_structurally_coupled(
&self,
block_states: &[ParameterBlockState],
) -> Result<bool, String>
fn joint_hessian_is_structurally_coupled( &self, block_states: &[ParameterBlockState], ) -> Result<bool, String>
_with_specs joint dispatch
gates: is the family’s exact_newton_joint_hessian a genuinely coupled
matrix (nonzero off-diagonal blocks), as opposed to the trait’s
block-diagonal default? This is the marker-free signal that lets the
engine trust a coupled multi-block family that overrode the joint
Hessian without hand-setting has_explicit_joint_hessian(). Returns
false when no joint Hessian is available or it is block-diagonal.Source§fn likelihood_blocks_uncoupled(&self) -> bool
fn likelihood_blocks_uncoupled(&self) -> bool
∂²L/∂β_a∂β_b = 0 for every pair of
distinct blocks a ≠ b. Default false (assume coupling, the safe
answer); families whose blocks share no η/W coupling override to
true to opt into the default working-set joint-Hessian assembly for
multi-block specs.Source§fn has_explicit_joint_hessian(&self) -> bool
fn has_explicit_joint_hessian(&self) -> bool
exact_newton_joint_hessian
(or its _with_specs variant) that returns the true coupled joint
Hessian rather than the trait’s block-diagonal default. Read moreSource§fn joint_penalty_specs(&self) -> Result<Vec<JointPenaltySpec>, String>
fn joint_penalty_specs(&self) -> Result<Vec<JointPenaltySpec>, String>
Σ_b p_b_raw. Read moreSource§fn joint_jeffreys_information_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_jeffreys_information_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_jeffreys_information_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_jeffreys_information_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Self::joint_jeffreys_information_with_specs.Source§fn joint_jeffreys_information_directional_derivative_all_axes_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>>, String>where
Self: Sync,
fn joint_jeffreys_information_directional_derivative_all_axes_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>>, String>where
Self: Sync,
Self::joint_jeffreys_information_with_specs: with the direction
sweeping every canonical axis e_a, return the p dense matrices
{Hdot[e_a]}_{a=0..p}. Read moreSource§fn joint_jeffreys_information_second_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_jeffreys_information_second_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Self::joint_jeffreys_information_with_specs.Source§fn joint_jeffreys_information_second_directional_all_axes_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>>, String>
fn joint_jeffreys_information_second_directional_all_axes_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<Vec<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>>, String>
Self::joint_jeffreys_information_with_specs: with d_beta_u fixed and
the second direction sweeping every canonical axis e_a, return the p
dense matrices {H²dot[d_beta_u, e_a]}_{a=0..p}. Read moreSource§fn exact_newton_joint_contracted_trace_hessian(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
weight: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_joint_contracted_trace_hessian( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], weight: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_jeffreys_information_contracted_trace_hessian_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
weight: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_jeffreys_information_contracted_trace_hessian_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], weight: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Self::joint_jeffreys_information_with_specs: Read moreSource§fn joint_jeffreys_information_contracted_trace_hessian_available(&self) -> bool
fn joint_jeffreys_information_contracted_trace_hessian_available(&self) -> bool
Self::joint_jeffreys_information_contracted_trace_hessian_with_specs
can supply the wide-p Jeffreys completion without the pairwise H''
fallback. Default false preserves the historical width cap exactly.Source§fn joint_jeffreys_information_matches_observed_hessian(&self) -> bool
fn joint_jeffreys_information_matches_observed_hessian(&self) -> bool
Self::joint_jeffreys_information_with_specs is the SAME
object as the observed joint Newton Hessian
(exact_newton_joint_hessian_with_specs). Read moreSource§fn levenberg_on_ill_conditioning(&self) -> bool
fn levenberg_on_ill_conditioning(&self) -> bool
μ on a FULL-RANK-but-ILL-CONDITIONED
penalized Hessian (cond > COND_NEWTON_SAFETY), not only on a
rank-deficient one (nullity > 0). Default false (binary / AFT /
others byte-identical). Survival marginal-slope overrides to true
(#808: full-rank but cond ≈ 5.8e6; the self-vanishing μ shapes only the
trajectory, so the converged β is unbiased and the log-slope target is
preserved). Survival-local by trait override so the shared spectral-range
solver stays byte-identical for every other family — in particular AFT
(survival_location_scale), whose intercept-only-scale fits can be
high-cond and which a shared (unconditional) gate would regress (#735/#736).Source§fn outer_default_trustworthy_for_joint_hessian(
&self,
specs: &[ParameterBlockSpec],
) -> bool
fn outer_default_trustworthy_for_joint_hessian( &self, specs: &[ParameterBlockSpec], ) -> bool
_with_specs defaults trust the
inner-fit’s block-diagonal-from-blocks output for this family? Read moreSource§fn exact_newton_outer_curvature(
&self,
_: &[ParameterBlockState],
) -> Result<Option<ExactNewtonOuterCurvature>, String>
fn exact_newton_outer_curvature( &self, _: &[ParameterBlockState], ) -> Result<Option<ExactNewtonOuterCurvature>, String>
Source§fn exact_newton_outer_curvature_directional_derivative(
&self,
block_states: &[ParameterBlockState],
d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_outer_curvature_directional_derivative( &self, block_states: &[ParameterBlockState], d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
exact_newton_outer_curvature.Source§fn exact_newton_outer_curvature_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_outer_curvature_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
exact_newton_outer_curvature_directional_derivative.Source§fn exact_newton_outer_curvature_second_directional_derivative(
&self,
block_states: &[ParameterBlockState],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
d_beta_v_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_outer_curvature_second_directional_derivative( &self, block_states: &[ParameterBlockState], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, d_beta_v_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
exact_newton_outer_curvature.Source§fn exact_newton_outer_curvature_second_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
_: &[ParameterBlockSpec],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
d_beta_v_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_outer_curvature_second_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], _: &[ParameterBlockSpec], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, d_beta_v_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
exact_newton_outer_curvature_second_directional_derivative.Source§fn exact_newton_joint_hessian_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_joint_hessian_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn exact_newton_joint_hessian_second_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn exact_newton_joint_hessian_second_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_outer_hyper_surrogate_hessian_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_outer_hyper_surrogate_hessian_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_outer_hyper_surrogate_hessian_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_outer_hyper_surrogate_hessian_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn joint_outer_hyper_surrogate_hessian_second_directional_derivative_with_specs(
&self,
block_states: &[ParameterBlockState],
specs: &[ParameterBlockSpec],
d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
fn joint_outer_hyper_surrogate_hessian_second_directional_derivative_with_specs( &self, block_states: &[ParameterBlockState], specs: &[ParameterBlockSpec], d_beta_u_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, d_betav_flat: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 2]>>>, String>
Source§fn diagonalworking_weights_directional_derivative(
&self,
_: &[ParameterBlockState],
_: usize,
arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
fn diagonalworking_weights_directional_derivative( &self, _: &[ParameterBlockState], _: usize, arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
d_eta for BlockWorkingSet::Diagonal. Read moreSource§fn diagonalworking_weights_second_directional_derivative(
&self,
_: &[ParameterBlockState],
_: usize,
arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
arr2: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
fn diagonalworking_weights_second_directional_derivative( &self, _: &[ParameterBlockState], _: usize, arr: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, arr2: &ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>, ) -> Result<Option<ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>>, String>
Source§fn pseudo_logdet_mode(&self) -> PseudoLogdetMode
fn pseudo_logdet_mode(&self) -> PseudoLogdetMode
Auto Trait Implementations§
impl !RefUnwindSafe for TransformationNormalFamily
impl !UnwindSafe for TransformationNormalFamily
impl Freeze for TransformationNormalFamily
impl Send for TransformationNormalFamily
impl Sync for TransformationNormalFamily
impl Unpin for TransformationNormalFamily
impl UnsafeUnpin for TransformationNormalFamily
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.