More clean up
This commit is contained in:
@@ -142,7 +142,9 @@ impl BinaryModel {
|
|||||||
elems.extend(self.process_items(team_2, -1.0));
|
elems.extend(self.process_items(team_2, -1.0));
|
||||||
|
|
||||||
let prob = match self.win_obs {
|
let prob = match self.win_obs {
|
||||||
BinaryModelObservation::Probit => probit_win_observation(&elems, t, 0.0, &self.storage),
|
BinaryModelObservation::Probit => {
|
||||||
|
ProbitWinObservation::probability(&self.storage, &elems, t, 0.0)
|
||||||
|
}
|
||||||
BinaryModelObservation::Logit => todo!(),
|
BinaryModelObservation::Logit => todo!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -169,14 +169,14 @@ impl TernaryModel {
|
|||||||
|
|
||||||
let prob_1 = match self.obs {
|
let prob_1 = match self.obs {
|
||||||
TernaryModelObservation::Probit => {
|
TernaryModelObservation::Probit => {
|
||||||
probit_win_observation(&elems, t, margin, &self.storage)
|
ProbitWinObservation::probability(&self.storage, &elems, t, margin)
|
||||||
}
|
}
|
||||||
TernaryModelObservation::Logit => unimplemented!(),
|
TernaryModelObservation::Logit => unimplemented!(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let prob_2 = match self.obs {
|
let prob_2 = match self.obs {
|
||||||
TernaryModelObservation::Probit => {
|
TernaryModelObservation::Probit => {
|
||||||
probit_tie_observation(&elems, t, margin, &self.storage)
|
ProbitTieObservation::probability(&self.storage, &elems, t, margin)
|
||||||
}
|
}
|
||||||
TernaryModelObservation::Logit => unimplemented!(),
|
TernaryModelObservation::Logit => unimplemented!(),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,18 +3,6 @@ use crate::utils::logphi;
|
|||||||
|
|
||||||
use super::{f_params, Core, Observation};
|
use super::{f_params, Core, Observation};
|
||||||
|
|
||||||
pub fn probit_win_observation(
|
|
||||||
elems: &[(usize, f64)],
|
|
||||||
t: f64,
|
|
||||||
margin: f64,
|
|
||||||
storage: &Storage,
|
|
||||||
) -> f64 {
|
|
||||||
let (m, v) = f_params(&elems, t, &storage);
|
|
||||||
let (logpart, _, _) = mm_probit_win(m - margin, v);
|
|
||||||
|
|
||||||
logpart.exp()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mm_probit_win(mean_cav: f64, cov_cav: f64) -> (f64, f64, f64) {
|
fn mm_probit_win(mean_cav: f64, cov_cav: f64) -> (f64, f64, f64) {
|
||||||
// Adapted from the GPML function `likErf.m`.
|
// Adapted from the GPML function `likErf.m`.
|
||||||
let z = mean_cav / (1.0 + cov_cav).sqrt();
|
let z = mean_cav / (1.0 + cov_cav).sqrt();
|
||||||
@@ -37,6 +25,13 @@ impl ProbitWinObservation {
|
|||||||
margin,
|
margin,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn probability(storage: &Storage, elems: &[(usize, f64)], t: f64, margin: f64) -> f64 {
|
||||||
|
let (m, v) = f_params(&elems, t, &storage);
|
||||||
|
let (logpart, _, _) = mm_probit_win(m - margin, v);
|
||||||
|
|
||||||
|
logpart.exp()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Observation for ProbitWinObservation {
|
impl Observation for ProbitWinObservation {
|
||||||
@@ -81,15 +76,6 @@ impl Observation for LogitWinObservation {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn probit_tie_observation(
|
|
||||||
_elems: &[(usize, f64)],
|
|
||||||
_t: f64,
|
|
||||||
_margin: f64,
|
|
||||||
_storage: &Storage,
|
|
||||||
) -> f64 {
|
|
||||||
unimplemented!();
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct ProbitTieObservation {
|
pub struct ProbitTieObservation {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
@@ -98,6 +84,10 @@ impl ProbitTieObservation {
|
|||||||
pub fn new(_storage: &mut Storage, _elems: &[(usize, f64)], _t: f64, _margin: f64) -> Self {
|
pub fn new(_storage: &mut Storage, _elems: &[(usize, f64)], _t: f64, _margin: f64) -> Self {
|
||||||
todo!();
|
todo!();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn probability(storage: &Storage, elems: &[(usize, f64)], t: f64, margin: f64) -> f64 {
|
||||||
|
todo!();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Observation for ProbitTieObservation {
|
impl Observation for ProbitTieObservation {
|
||||||
|
|||||||
Reference in New Issue
Block a user