pub struct DuchonOperatorPenaltySpec {
pub mass: OperatorPenaltySpec,
pub tension: OperatorPenaltySpec,
pub stiffness: OperatorPenaltySpec,
}Fields§
§mass: OperatorPenaltySpec§tension: OperatorPenaltySpec§stiffness: OperatorPenaltySpecImplementations§
Source§impl DuchonOperatorPenaltySpec
impl DuchonOperatorPenaltySpec
pub fn all_disabled() -> Self
Sourcepub fn all_active() -> Self
pub fn all_active() -> Self
All three operator dials active — used by the Matérn collocation overlay.
Sourcepub fn matern_for_smoothness(nu: MaternNu, d: usize) -> Self
pub fn matern_for_smoothness(nu: MaternNu, d: usize) -> Self
Operator-penalty dials appropriate for a Matérn-ν kernel in dimension d.
The Matérn-ν RKHS is the Sobolev space H^m with m = ν + d/2: its
squared norm controls the order-j derivative in L2 exactly when
j ≤ m. The collocation overlay penalizes the squared L2 norms of the
value (mass, D0, j=0), gradient (tension, D1, j=1) and Hessian
(stiffness, D2, j=2). Activating a penalty whose derivative order
exceeds the RKHS smoothness (j > m) imposes a roughness constraint the
true kernel does NOT — it over-smooths the reduced-rank fit relative to
the exact GP (mgcv bs="gp", GpGp).
Concretely the roughest Matérn, ν=1/2 in d=1 (m = 1), is the
Ornstein–Uhlenbeck/exponential kernel: an H¹ process whose sample paths
are continuous but non-differentiable. Although ∫(f')² is finite on
its RKHS, the kernel itself already encodes the H¹ control; layering an
extra tension dial on top biases the reduced-rank fit toward the smooth
C¹ functions the kernel does not favour (and stiffness D2 toward
C²), collapsing held-out oscillation (#707). We therefore gate each
operator on j < m STRICTLY: mass (j=0) is always on, tension (j=1) is
on for m > 1, stiffness (j=2) is on for m > 2. For ν ≥ 3/2 (or any
d ≥ 2) every dial is active, recovering all_active; only the
genuinely rough ν=1/2 (d=1) kernel — where the Sobolev order sits
exactly on a derivative boundary — drops the higher operators.
Trait Implementations§
Source§impl Clone for DuchonOperatorPenaltySpec
impl Clone for DuchonOperatorPenaltySpec
Source§fn clone(&self) -> DuchonOperatorPenaltySpec
fn clone(&self) -> DuchonOperatorPenaltySpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DuchonOperatorPenaltySpec
impl Debug for DuchonOperatorPenaltySpec
Source§impl Default for DuchonOperatorPenaltySpec
impl Default for DuchonOperatorPenaltySpec
Source§impl<'de> Deserialize<'de> for DuchonOperatorPenaltySpec
impl<'de> Deserialize<'de> for DuchonOperatorPenaltySpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DuchonOperatorPenaltySpec
impl RefUnwindSafe for DuchonOperatorPenaltySpec
impl Send for DuchonOperatorPenaltySpec
impl Sync for DuchonOperatorPenaltySpec
impl Unpin for DuchonOperatorPenaltySpec
impl UnsafeUnpin for DuchonOperatorPenaltySpec
impl UnwindSafe for DuchonOperatorPenaltySpec
Blanket Implementations§
impl<T> Allocation for T
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.