Exemplo n.º 1
0
    def _cov_params_approx(self,
                           approx_complex_step=True,
                           approx_centered=False):
        evaluated_hessian = self.nobs_effective * self.model.hessian(
            params=self.params,
            transformed=True,
            includes_fixed=True,
            method="approx",
            approx_complex_step=approx_complex_step,
            approx_centered=approx_centered,
        )
        # TODO: Case with "not approx_complex_step" is not hit in
        # tests as of 2017-05-19

        if len(self.fixed_params) > 0:
            mask = np.ix_(self._free_params_index, self._free_params_index)
            if len(self.fixed_params) < self.k_params:
                (tmp, singular_values) = pinv_extended(evaluated_hessian[mask])
            else:
                tmp, singular_values = np.nan, [np.nan]
            neg_cov = np.zeros_like(evaluated_hessian) * np.nan
            neg_cov[mask] = tmp
        else:
            (neg_cov, singular_values) = pinv_extended(evaluated_hessian)

        self.model.update(self.params, transformed=True, includes_fixed=True)
        if self._rank is None:
            self._rank = np.linalg.matrix_rank(np.diag(singular_values))
        return -neg_cov
Exemplo n.º 2
0
 def test_extendedpinv(self):
     X = standard_normal((40, 10))
     np_inv = np.linalg.pinv(X)
     np_sing_vals = np.linalg.svd(X, 0, 0)
     sm_inv, sing_vals = pinv_extended(X)
     assert_almost_equal(np_inv, sm_inv)
     assert_almost_equal(np_sing_vals, sing_vals)
Exemplo n.º 3
0
 def test_extendedpinv(self):
     X = standard_normal((40, 10))
     np_inv = np.linalg.pinv(X)
     np_sing_vals = np.linalg.svd(X, 0, 0)
     sm_inv, sing_vals = pinv_extended(X)
     assert_almost_equal(np_inv, sm_inv)
     assert_almost_equal(np_sing_vals, sing_vals)