use polyfit::{
assert_r_squared, basis_select,
error::Error,
score::Aic,
statistics::{CvStrategy, DegreeBound},
LogarithmicFit,
};
fn main() -> Result<(), Error> {
let data = include_str!("sample_data.json");
let data: Vec<(f64, f64)> = serde_json::from_str(data).unwrap();
basis_select!(&data, DegreeBound::Relaxed, &Aic);
let fit = LogarithmicFit::new_kfold_cross_validated(
&data,
CvStrategy::MinimizeVariance,
DegreeBound::Relaxed,
&Aic,
)?;
println!("\n\n");
assert_r_squared!(fit);
println!("Fitted Logarithmic Polynomial:\n {fit}");
Ok(())
}