def pearson_r(x, y): assert len(x) == len(y) x_bar = average(x) y_bar = average(y) s_x = sqrt(s_2(x)) s_y = sqrt(s_2(y)) tmp = 0.0 for i in range(0, len(x)): tmp += ((x[i] - x_bar) * (y[i] - y_bar) / s_x / s_y) return tmp / (len(x) - 1)
def min_2(x, y): assert len(x) == len(y) x_bar = average(x) y_bar = average(y) lxy_1 = 0.0 for i in range(0, len(x)): lxy_1 += (x[i] * y[i]) lxy = lxy_1 - sum(x) * sum(y) / len(x) l_xx = sum(a ** 2 for a in x) - sum(x) ** 2 / len(x) b = lxy / l_xx a = y_bar - b * x_bar r = pearson_r.pearson_r(x, y) print('{}: y = {} + {}*x'.format(r, a, b)) return [r, a, b]
def infer_by_t(l1, l2, alpha=0.01, sigma=0): n1 = len(l1) n2 = len(l2) x_aver = average(l1) y_aver = average(l2) s_1sq = s_2(l1) s_2sq = s_2(l2) s_w2 = ((n1 - 1) * s_1sq + (n2 - 1) * s_2sq) / (n1 + n2 - 2) tv = ((x_aver - y_aver) - sigma) / sqrt(s_w2 * (1 / n1 + 1 / n2)) t_a = t.ppf(alpha, n1 + n2 - 2) print('tv {} t_a {}'.format(tv, t_a)) if tv < t_a: print('mu1 < mu2') else: print('mu1 >= mu2')
def t_check(l, mu, alpha=0.05): aver = average(l) n = len(l) ss = s_2(l) tt = (aver - mu) * sqrt(n) / sqrt(ss) l, r = t.interval(1 - alpha, n - 1) if tt > r or tt < l: print('reject') else: print('accept')
def infer_ks_test_goodness(l1): # l = np.histogram(l1) # n = len(l) mean = average(l1) sigma = std(l1) res = kstest(l1, 'norm', [mean, sigma]) if res[1] < 0.01: print('reject') else: print('accept') print(res)