def test_mahalanobis_errors(): effect = np.zeros((1, 2, 3)) cov = np.zeros((3, 3, 3)) with assert_raises(ValueError): multiple_mahalanobis(effect, cov) cov = np.zeros((1, 2, 3)) with assert_raises(ValueError): multiple_mahalanobis(effect, cov)
def test_mahalanobis(): n = 50 x = np.random.rand(n) / n A = np.random.rand(n, n) / n A = np.dot(A.transpose(), A) + np.eye(n) mah = np.dot(x, np.dot(spl.inv(A), x)) assert_almost_equal(mah, multiple_mahalanobis(x, A), decimal=1)
def test_mahalanobis2(): n = 50 x = np.random.randn(n, 3) Aa = np.zeros([n, n, 3]) for i in range(3): A = np.random.randn(120, n) A = np.dot(A.T, A) Aa[:, :, i] = A i = np.random.randint(3) mah = np.dot(x[:, i], np.dot(spl.inv(Aa[:, :, i]), x[:, i])) f_mah = (multiple_mahalanobis(x, Aa))[i] assert_true(np.allclose(mah, f_mah))