def _calculate_confidence_interval(self, x, observations, model, rx, rmodel, confidence=95): alpha = 1.0 - confidence / 100.0 n = len(observations) if n > 2: xm = x.mean() observations = array(observations) model = array(model) # syx = math.sqrt(1. / (n - 2) * ((observations - model) ** 2).sum()) # ssx = ((x - xm) ** 2).sum() # ssx = sum([(xi - xm) ** 2 for xi in x]) ti = tinv(alpha, n - 2) syx = self.syx ssx = self.ssx # for i, xi in enumerate(rx): def _calc_interval(xi): d = 1.0 / n + (xi - xm) ** 2 / ssx return ti * syx * math.sqrt(d) cors = [_calc_interval(xi) for xi in rx] return cors
def calculate_CI(values): count = len(values) average = numpy.mean(values) variance = numpy.var(values) std_err = math.sqrt(float(variance) / float(count)) degs_freedom = count - 1 t_value = tinv.tinv(1 - confidence_alpha, degs_freedom) margin_error = std_err * t_value #margin_error = std_err #??? return (average - margin_error, average, average + margin_error)
def _calculate_confidence_interval(self, x, observations, rx, confidence=95): alpha = 1.0 - confidence / 100.0 n = len(observations) if n > 2: xm = x.mean() ti = tinv(alpha, n - 1) syx = self.get_syx() ssx = self.get_ssx(xm) d = n**-1 + (rx - xm)**2 / ssx cors = ti * syx * d**0.5 # print rx, cors[0] return cors
def _calculate_confidence_interval(self, x, observations, rx, confidence=95): alpha = 1.0 - confidence / 100.0 n = len(observations) if n > 2: xm = x.mean() ti = tinv(alpha, n - 2) syx = self.get_syx() ssx = self.get_ssx(xm) d = n ** -1 + (rx - xm) ** 2 / ssx cors = ti * syx * d ** 0.5 return cors
def calc_confidence_interval(self, confidence, x, observations, model, rx, rmodel): ''' http://people.stfx.ca/bliengme/ExcelTips/RegressionAnalysisConfidence2.htm ''' alpha = 1.0 - confidence / 100.0 lower = [] upper = [] n = len(observations) if n > 2: xm = x.mean() observations = array(observations) model = array(model) syx = math.sqrt(1. / (n - 2) * ((observations - model) ** 2).sum()) ssx = ((x - xm) ** 2).sum() # ssx = sum([(xi - xm) ** 2 for xi in x]) ti = tinv(alpha, n - 2) for i, xi in enumerate(rx): d = 1.0 / n + (xi - xm) ** 2 / ssx cor = ti * syx * math.sqrt(d) lower.append(rmodel[i] - cor) upper.append(rmodel[i] + cor) # see http://mathworld.wolfram.com/LeastSquaresFitting.html # error_a = syx * ((1.0 / n + xm ** 2 / ssx)) ** 0.5 # error_b = syx / (ssx) ** 0.5 return array(lower), array(upper)