def set_state(self, results): N, self.pdf = LLRcalc.results_to_pdf(results) if self.elo_model == "normalized": mu, var = LLRcalc.stats(self.pdf) # code duplication with LLRcalc if len(results) == 5: self.sigma_pg = (2 * var)**0.5 elif len(results) == 3: self.sigma_pg = var**0.5 else: assert False self.s0, self.s1 = [ self.elo_to_score(elo) for elo in (self.elo0, self.elo1) ] mu_LLR, var_LLR = self.LLR_drift_variance(self.pdf, self.s0, self.s1, None) # llr estimate self.llr = N * mu_LLR self.T = N # now normalize llr (if llr is not legal then the implications # of this are unclear) slope = self.llr / N if self.llr > 1.03 * self.b or self.llr < 1.03 * self.a: self.clamped = True if self.llr < self.a: self.T = self.a / slope self.llr = self.a elif self.llr > self.b: self.T = self.b / slope self.llr = self.b
def set_state(self, results): N, self.pdf = LLRcalc.results_to_pdf(results) mu_LLR, var_LLR = self.LLR_drift_variance(self.pdf, self.s0, self.s1, None) # llr estimate self.llr = N * mu_LLR self.T = N # now normalize llr (if llr is not legal then the implications # of this are unclear) slope = self.llr / N if self.llr > 1.03 * self.b or self.llr < 1.03 * self.a: self.clamped = True if self.llr < self.a: self.T = self.a / slope self.llr = self.a elif self.llr > self.b: self.T = self.b / slope self.llr = self.b