def test_corr(self): np.random.seed(43) sigma = np.array([[1,0.5],[0.5,1]]) def grad_log_correleted(x): sigmaInv = np.linalg.inv(sigma) return - np.dot(sigmaInv.T + sigmaInv, x)/2.0 me = GaussianQuadraticTest(grad_log_correleted) qm = QuadraticMultiple(me) X = np.random.multivariate_normal([0,0], sigma, 200) reject,p_val = qm.is_from_null(0.05, X, 0.1) np.testing.assert_almost_equal([0.465, 0.465],p_val)
def test_corr(self): np.random.seed(43) sigma = np.array([[1, 0.5], [0.5, 1]]) def grad_log_correleted(x): sigmaInv = np.linalg.inv(sigma) return -np.dot(sigmaInv.T + sigmaInv, x) / 2.0 me = GaussianQuadraticTest(grad_log_correleted) qm = QuadraticMultiple(me) X = np.random.multivariate_normal([0, 0], sigma, 200) reject, p_val = qm.is_from_null(0.05, X, 0.1) np.testing.assert_almost_equal([0.465, 0.465], p_val)
me = GaussianSteinTest(grad_log_pob,1) for time in times_we_look_at: chain_at_time = samples[:,time] # print(time) # pval = me.compute_pvalue(chain_at_time) # arr.append(pval) def grad_log_pob(t): a = np.sum(manual_grad(t[0],t[1],X),axis=0) + grad_log_prior(t) return a P_CHANGE =0.1 me = GaussianQuadraticTest(grad_log_pob) qm = QuadraticMultiple(me) reject, p = qm.is_from_null(0.05, chain_at_time, 0.1) print(reject) # import matplotlib.pyplot as plt # # print(arr) # # plt.plot(arr) # # plt.show()
arr = [] me = GaussianSteinTest(grad_log_pob, 1) for time in times_we_look_at: chain_at_time = samples[:, time] # print(time) # pval = me.compute_pvalue(chain_at_time) # arr.append(pval) def grad_log_pob(t): a = np.sum(manual_grad(t[0], t[1], X), axis=0) + grad_log_prior(t) return a P_CHANGE = 0.1 me = GaussianQuadraticTest(grad_log_pob) qm = QuadraticMultiple(me) reject, p = qm.is_from_null(0.05, chain_at_time, 0.1) print(reject) # import matplotlib.pyplot as plt # # print(arr) # # plt.plot(arr) # # plt.show()
arr = np.empty((0,2)) arr2 = np.empty((0,2)) for c in [1.0,1.3,2.0,3.0]: print('c',c) log_normal = logg(c) for i in range(23): print(i) x= metropolis_hastings(log_normal, chain_size=500, thinning=15,x_prev=np.random.randn(2)) me = GaussianQuadraticTest(grad_log_dens) qm = QuadraticMultiple(me) qm2 = QuadraticMultiple2(me) accept_null,p_val = qm.is_from_null(0.05, x, 0.1) p_val2 = qm2.is_from_null(0.05, x, 0.1) print(p_val2) arr = np.vstack((arr, np.array([c,min(p_val)]))) arr2 = np.vstack((arr2, np.array([c,p_val2]))) df = DataFrame(arr) pr = seaborn.boxplot(x=0,y=1,data=df) seaborn.plt.show()
arr2 = np.empty((0, 2)) for c in [1.0, 1.3, 2.0, 3.0]: print('c', c) log_normal = logg(c) for i in range(23): print(i) x = metropolis_hastings(log_normal, chain_size=500, thinning=15, x_prev=np.random.randn(2)) me = GaussianQuadraticTest(grad_log_dens) qm = QuadraticMultiple(me) qm2 = QuadraticMultiple2(me) accept_null, p_val = qm.is_from_null(0.05, x, 0.1) p_val2 = qm2.is_from_null(0.05, x, 0.1) print(p_val2) arr = np.vstack((arr, np.array([c, min(p_val)]))) arr2 = np.vstack((arr2, np.array([c, p_val2]))) df = DataFrame(arr) pr = seaborn.boxplot(x=0, y=1, data=df) seaborn.plt.show() df = DataFrame(arr2) pr = seaborn.boxplot(x=0, y=1, data=df) seaborn.plt.show()