1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//! Высокоуровневый crate для Rust-native GAMLSS.
//!
//! `gamlss` реэкспортирует typed core, готовые distribution families,
//! spline/predictor building blocks и target transforms. Основной подход сейчас
//! — низкоуровневое typed API через [`core`], [`family`], [`spline`] и
//! [`transform`].
//!
//! При включённой feature `formula` также доступен [`formula`] namespace. Этот
//! слой является экспериментальным optional convenience API: он компилирует
//! curated high-level builder specifications в typed core models, но не является
//! основным API и не обещает покрывать все distributions, links и
//! parameterizations из низкоуровневых crate-ов.
//!
//! # Основные возможности
//!
//! - typed [`core::ParameterBlock`] для каждого параметра распределения;
//! - [`core::ParameterBlocks`] для автоматического layout offsets в общем
//! beta-векторе;
//! - unweighted и weighted модели через [`core::Gamlss::try_new`] и
//! [`core::Gamlss::try_new_weighted`];
//! - prediction API для training rows и совместимых prediction blocks;
//! - post-fit diagnostics namespace через [`diagnostics`];
//! - experimental formula builders через [`formula::ModelSpec`] при включённой
//! feature `formula`.
//!
//! # Example
//!
//! ```
//! use gamlss::prelude::*;
//!
//! let y = [0.0, 1.0, 2.0];
//! let weights = [1.0, 0.5, 1.0];
//!
//! let blocks = ParameterBlocks::new((
//! ParameterBlock::<Mu, Identity, _, _>::linear(
//! DenseDesign::from_rows(&[[1.0, 0.0], [1.0, 1.0], [1.0, 2.0]]),
//! NoPenalty,
//! 0,
//! ),
//! ParameterBlock::<Sigma, Log, _, _>::linear(
//! DenseDesign::intercept(y.len()),
//! NoPenalty,
//! 0,
//! ),
//! ));
//!
//! let model = Gamlss::try_new_weighted(
//! gamlss::family::DefaultNormal::new(),
//! blocks,
//! &y,
//! &weights,
//! )?;
//!
//! let theta = vec![0.0, 0.5, -0.2];
//! let fitted = model.predict_theta(&theta)?;
//! assert_eq!(fitted.len(), y.len());
//! # Ok::<_, gamlss::core::ModelError>(())
//! ```
//!
/// Типизированные базовые абстракции.
pub use gamlss_core as core;
/// Post-fit diagnostics utilities.
pub use gamlss_diagnostics as diagnostics;
/// Распределения и реализации likelihood.
pub use gamlss_family as family;
/// Spline-базисы и штрафы.
pub use gamlss_spline as spline;
/// Transform-слой для response/target preprocessing.
pub use gamlss_transform as transform;
/// Экспериментальный optional formula/builder слой.
pub use gamlss_formula as formula;
/// Наиболее часто используемые импорты.