pub struct LinearTermSpec {
pub name: String,
pub feature_col: usize,
pub feature_cols: Vec<usize>,
pub categorical_levels: Vec<(usize, u64)>,
pub double_penalty: bool,
pub coefficient_geometry: LinearCoefficientGeometry,
pub coefficient_min: Option<f64>,
pub coefficient_max: Option<f64>,
}Fields§
§name: String§feature_col: usizePrimary feature column index. For Wilkinson-Rogers : interaction
terms (a:b[:c...]) this is the first column in feature_cols; the
realized design column is the elementwise product across every entry
of feature_cols. Plain (non-interaction) linear terms set
feature_cols == vec![feature_col].
feature_cols: Vec<usize>Full list of columns whose elementwise product yields this term’s
design column. len() >= 1; len() == 1 is a plain linear effect.
categorical_levels: Vec<(usize, u64)>Categorical-level gates for a factor-aware : interaction.
Each (col, level_bits) multiplies the realized design column by the
indicator 1[data[row, col].to_bits() == level_bits]. This is how a
factor:x (or factor:factor) interaction is expanded: build_termspec
emits one LinearTermSpec per surviving cell of the categorical
operand(s) (treatment-coded, first level dropped per factor), each
carrying the numeric operands in feature_cols and the cell’s level
gate(s) here. Empty for a plain numeric : interaction or main effect,
in which case the realized column is exactly the numeric product.
double_penalty: boolOptional ridge (S = I, REML-selected λ) on this linear coefficient.
A parametric linear term carries no wiggliness, so it is unpenalized by
default — gam reports the MLE, matching mgcv/glm/survreg/VGAM (which
penalize parametric terms only under an explicit paraPen). Set true
to opt into an explicit shrinkage ridge (a zero-mean Gaussian prior
β ~ N(0, λ⁻¹)); doing so adds one outer REML smoothing coordinate.
coefficient_geometry: LinearCoefficientGeometry§coefficient_min: Option<f64>§coefficient_max: Option<f64>Implementations§
Source§impl LinearTermSpec
impl LinearTermSpec
Sourcepub fn effective_feature_cols(&self) -> Vec<usize>
pub fn effective_feature_cols(&self) -> Vec<usize>
Return the effective list of feature columns. Backfills from
feature_col for legacy specs that predate the multi-column field.
Sourcepub fn is_interaction(&self) -> bool
pub fn is_interaction(&self) -> bool
True when this term is a Wilkinson-Rogers : interaction (multi-col).
Sourcepub fn realized_design_column(
&self,
data: ArrayView2<'_, f64>,
) -> Result<Array1<f64>, String>
pub fn realized_design_column( &self, data: ArrayView2<'_, f64>, ) -> Result<Array1<f64>, String>
Realize this linear term’s (n,) design column from data.
The column is the elementwise product of every numeric feature column
(effective_feature_cols) gated by the categorical-level indicators in
categorical_levels: each (col, level_bits) multiplies the running
column by 1[data[row, col].to_bits() == level_bits]. A plain numeric
term (no categorical_levels) reduces to the bare product, matching the
historical behaviour. A pure categorical interaction (empty
feature_cols, non-empty categorical_levels) reduces to the cell
indicator. Bounds are validated here; the returned column has length
data.nrows().
Trait Implementations§
Source§impl Clone for LinearTermSpec
impl Clone for LinearTermSpec
Source§fn clone(&self) -> LinearTermSpec
fn clone(&self) -> LinearTermSpec
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 LinearTermSpec
impl Debug for LinearTermSpec
Source§impl<'de> Deserialize<'de> for LinearTermSpec
impl<'de> Deserialize<'de> for LinearTermSpec
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 LinearTermSpec
impl RefUnwindSafe for LinearTermSpec
impl Send for LinearTermSpec
impl Sync for LinearTermSpec
impl Unpin for LinearTermSpec
impl UnsafeUnpin for LinearTermSpec
impl UnwindSafe for LinearTermSpec
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.