コード例 #1
0
 def test_ols_inefficient(self):
     lag_len = 5
     pacfols = pacf_ols(self.x, nlags=lag_len, efficient=False)
     x = self.x.copy()
     x -= x.mean()
     n = x.shape[0]
     lags = np.zeros((n - 5, 5))
     lead = x[5:]
     direct = np.empty(lag_len + 1)
     direct[0] = 1.0
     for i in range(lag_len):
         lags[:, i] = x[5 - (i + 1):-(i + 1)]
         direct[i + 1] = lstsq(lags[:, :(i + 1)], lead, rcond=None)[0][-1]
     assert_allclose(pacfols, direct, atol=1e-8)
コード例 #2
0
 def test_ols_inefficient(self):
     lag_len = 5
     pacfols = pacf_ols(self.x, nlags=lag_len, efficient=False)
     x = self.x.copy()
     x -= x.mean()
     n = x.shape[0]
     lags = np.zeros((n - 5, 5))
     lead = x[5:]
     direct = np.empty(lag_len + 1)
     direct[0] = 1.0
     for i in range(lag_len):
         lags[:, i] = x[5 - (i + 1):-(i + 1)]
         direct[i + 1] = lstsq(lags[:, :(i + 1)], lead, rcond=None)[0][-1]
     assert_allclose(pacfols, direct, atol=1e-8)
コード例 #3
0
    def _fit_single(self, idx, wxpwx, wxpwy, nobs, store, params_only, method):
        if nobs < self._min_nobs:
            return
        try:
            if (method == "inv") or not params_only:
                wxpwxi = np.linalg.inv(wxpwx)
            if method == "inv":
                params = wxpwxi @ wxpwy
            else:
                _, wy, wx, _, _ = self._get_data(idx)
                if method == "lstsq":
                    params = lstsq(wx, wy)[0]
                else:  # 'pinv'
                    wxpwxiwxp = np.linalg.pinv(wx)
                    params = wxpwxiwxp @ wy

        except np.linalg.LinAlgError:
            return
        store.params[idx - 1] = params
        if params_only:
            return
        y, wy, wx, weights, _ = self._get_data(idx)

        wresid, ssr, llf = self._loglike(params, wy, wx, weights, nobs)
        wxwresid = wx * wresid[:, None]
        wxepwxe = wxwresid.T @ wxwresid
        tot_params = wx.shape[1]
        s2 = ssr / (nobs - tot_params)

        centered_tss, uncentered_tss = self._sum_of_squares(y, wy, weights)

        store.ssr[idx - 1] = ssr
        store.llf[idx - 1] = llf
        store.nobs[idx - 1] = nobs
        store.s2[idx - 1] = s2
        store.xpxi[idx - 1] = wxpwxi
        store.xeex[idx - 1] = wxepwxe
        store.centered_tss[idx - 1] = centered_tss
        store.uncentered_tss[idx - 1] = uncentered_tss