extern crate openblas_src; use kickscore as ks; fn main() { let mut model = ks::BinaryModel::new(ks::BinaryModelObservation::Probit); for player in &["A", "B", "C", "D", "E", "F"] { let kernel: Vec> = vec![ Box::new(ks::kernel::Constant::new(1.0)), Box::new(ks::kernel::Matern52::new(0.5, 1.0)), ]; model.add_item(player, Box::new(kernel)); } model.observe(&["A"], &["B"], 0.0); model.fit(); for player in &["A", "B", "C", "D", "E", "F"] { let (mu, sigma) = model.item_score(player, 1.25); println!("{}: mu={} sigma={}", player, mu, sigma); } model.observe(&["C"], &["D"], 0.25); model.fit(); for player in &["A", "B", "C", "D", "E", "F"] { let (mu, sigma) = model.item_score(player, 1.25); println!("{}: mu={} sigma={}", player, mu, sigma); } model.observe(&["E"], &["F"], 0.50); model.fit(); for player in &["A", "B", "C", "D", "E", "F"] { let (mu, sigma) = model.item_score(player, 1.25); println!("{}: mu={} sigma={}", player, mu, sigma); } model.observe(&["B"], &["C"], 0.75); model.fit(); for player in &["A", "B", "C", "D", "E", "F"] { let (mu, sigma) = model.item_score(player, 1.25); println!("{}: mu={} sigma={}", player, mu, sigma); } model.observe(&["D"], &["E"], 1.00); model.fit(); for player in &["A", "B", "C", "D", "E", "F"] { let (mu, sigma) = model.item_score(player, 1.25); println!("{}: mu={} sigma={}", player, mu, sigma); } }