Exemple #1
0
    def test_cases(self):
        for constrained in self.constrained_cases:
            unconstrained = tools.unconstrain_stationary_univariate(constrained)  # noqa:E501
            reconstrained = tools.constrain_stationary_univariate(unconstrained)  # noqa:E501
            assert_allclose(reconstrained, constrained)

        for unconstrained in self.unconstrained_cases:
            constrained = tools.constrain_stationary_univariate(unconstrained)
            reunconstrained = tools.unconstrain_stationary_univariate(constrained)  # noqa:E501
            assert_allclose(reunconstrained, unconstrained)
Exemple #2
0
    def test_cases(self):
        for constrained in self.constrained_cases:
            unconstrained = tools.unconstrain_stationary_univariate(constrained)
            reconstrained = tools.constrain_stationary_univariate(unconstrained)
            assert_allclose(reconstrained, constrained)

        for unconstrained in self.unconstrained_cases:
            constrained = tools.constrain_stationary_univariate(unconstrained)
            reunconstrained = tools.unconstrain_stationary_univariate(constrained)
            assert_allclose(reunconstrained, unconstrained)
    def untransform_params(self, constrained):
        """
        Transform constrained parameters used in likelihood evaluation
        to unconstrained parameters used by the optimizer

        Parameters
        ----------
        constrained : array_like
            Array of constrained parameters used in likelihood evalution, to be
            transformed.

        Returns
        -------
        unconstrained : array_like
            Array of unconstrained parameters used by the optimizer.
        """
        # Inherited parameters
        unconstrained = super(MarkovAutoregression, self).untransform_params(
            constrained)

        # Autoregressive
        # TODO may provide unexpected results when some coefficients are not
        # switching
        for i in range(self.k_regimes):
            s = self.parameters[i, 'autoregressive']
            unconstrained[s] = unconstrain_stationary_univariate(
                constrained[s])

        return unconstrained
    def untransform_params(self, constrained):
        """
        Transform constrained parameters used in likelihood evaluation
        to unconstrained parameters used by the optimizer

        Parameters
        ----------
        constrained : array_like
            Array of constrained parameters used in likelihood evalution, to be
            transformed.

        Returns
        -------
        unconstrained : array_like
            Array of unconstrained parameters used by the optimizer.
        """
        # Inherited parameters
        unconstrained = super(MarkovAutoregression, self).untransform_params(
            constrained)

        # Autoregressive
        # TODO may provide unexpected results when some coefficients are not
        # switching
        for i in range(self.k_regimes):
            s = self.parameters[i, 'autoregressive']
            unconstrained[s] = unconstrain_stationary_univariate(
                constrained[s])

        return unconstrained
	def untransform_params(self, constrained):
		# Perform the typical DFM untransformation (w/o the new parameters).
		unconstrained = super(ExtendedDFM, self).untransform_params(constrained[:-3])

		# Redo the factor AR unconstraint, since we only want an AR(2), and the previous unconstraint was for an AR(4).
		ar_params = constrained[self._params_factor_ar]
		unconstrained[self._params_factor_ar] = (tools.unconstrain_stationary_univariate(ar_params))

		# Return all the parameters.
		return np.r_[unconstrained, constrained[-3:]]
    def untransform_params(self, constrained):
        # 执行典型的 DFM 逆转换(不添加新参数)
        unconstrained = super(ExtendedDFM,
                              self).untransform_params(constrained[:-3])

        # 重做不受约束的因子 AR,因为我们只想要一个 AR(2),而先前不受约束的是针对 AR(4)
        ar_params = constrained[self._params_factor_ar]
        unconstrained[self._params_factor_ar] = (
            tools.unconstrain_stationary_univariate(ar_params))

        # 返回所有参数
        return np.r_[unconstrained, constrained[-3:]]
    def untransform_params(self, constrained):
        # Perform the typical DFM untransformation (w/o the new parameters)
        unconstrained = super(ExtendedDFM,
                              self).untransform_params(constrained[:-3])

        # Redo the factor AR unconstraint, since we only want an AR(2),
        # and the previous unconstraint was for an AR(4)
        ar_params = constrained[self._params_factor_ar]
        unconstrained[self._params_factor_ar] = (
            tools.unconstrain_stationary_univariate(ar_params))

        # Return all the parameters
        return np.r_[unconstrained, constrained[-3:]]
    def untransform_params(self, constrained):
        """
        Transform constrained parameters used in likelihood evaluation
        to unconstrained parameters used by the optimizer

        Used primarily to reverse enforcement of stationarity of the
        autoregressive lag polynomial and invertibility of the moving average
        lag polynomial.

        Parameters
        ----------
        constrained : array_like
            Constrained parameters used in likelihood evaluation.

        Returns
        -------
        constrained : ndarray
            Unconstrained parameters used by the optimizer.
        """
        constrained = np.array(constrained, ndmin=1)
        unconstrained = constrained
        # Transform the covariance params to be positive
        unconstrained[0] = np.sqrt(constrained[0])
        for i in self.state_cov_param_indices:
            unconstrained[i] = np.sqrt(constrained[i])
        # Transform ARMA params to be stationary
        for i in range(len(self.exog_models)):
            AR_params_idx = self.AR_param_indices[i]
            MA_params_idx = self.MA_param_indices[i]
            ARMA_params_idx = slice(AR_params_idx.start,
                                    MA_params_idx.stop)
            ARMA_params = constrained[ARMA_params_idx]
            if ARMA_params:
                ARMA_params = unconstrain_stationary_univariate(ARMA_params)
                unconstrained[ARMA_params_idx] = ARMA_params
        return unconstrained
Exemple #9
0
 def test_cases(self):
     for constrained, unconstrained in self.cases:
         result = tools.unconstrain_stationary_univariate(constrained)
         assert_allclose(result, unconstrained)
Exemple #10
0
 def test_cases(self):
     for constrained, unconstrained in self.cases:
         result = tools.unconstrain_stationary_univariate(constrained)
         assert_allclose(result, unconstrained)
Exemple #11
0
 def untransform_params(self, params):
     return np.r_[unconstrain_stationary_univariate(params[:1]),
                  params[1]**0.5, params[2:]]
Exemple #12
0
 def untransform_params(self, params):
     phi = unconstrain_stationary_univariate(params[0:1])
     theta = unconstrain_stationary_univariate(params[1:2])
     sigma2 = params[2]**0.5
     return np.r_[phi, theta, sigma2]
Exemple #13
0
 def untransform_params(self, params):
     beta = unconstrain_stationary_univariate(params[0:1])
     # beta = params[0]
     sigma = params[1]**0.5
     return np.r_[beta, sigma]
Exemple #14
0
 def untransform_params(self, params):
     return np.r_[unconstrain_stationary_univariate(params[:1]),
                  params[1]**0.5, params[2:]]
Exemple #15
0
 def untransform_params(self, constrained):
     return np.array([
         unconstrain_stationary_univariate(constrained[:1]),
         constrained[1]**0.5])