def test_sandwich_cov(fixtures_gmm_cov): fix = fixtures_gmm_cov cov_moments = _covariance_moments(fix["mom_cond"]) # noqa: N806 mean_mom_jacobi = np.mean(fix["mom_cond_jacob"], axis=0) # noqa: N806 assert_array_almost_equal( sandwich_cov(mean_mom_jacobi, fix["mom_weight"], cov_moments, fix["mom_cond"].shape[0]), fix["cov_result"], )
def test_covariance_moments_random(): nobs, nmoms = np.random.randint(1, 50, size=2) mom_cond = np.random.rand(nobs, nmoms) dev = (mom_cond - np.mean(mom_cond, axis=0)).reshape(nobs, nmoms, 1) cov = np.zeros(shape=(nmoms, nmoms), dtype=float) for i in range(nobs): cov += dev[i, :, :] @ dev[i, :, :].T cov = cov / nobs assert_array_almost_equal(_covariance_moments(mom_cond), cov)
def test_covariance_moments_unit(): moment_cond = np.reshape(np.arange(12), (3, 4)) control = np.full((4, 4), 32, dtype=float) / 3 assert_array_almost_equal(_covariance_moments(moment_cond), control)