def setup_class(cls, which='mixed', *args, **kwargs): # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') levels = dta[['realgdp', 'realcons', 'realinv']] obs = np.log(levels).diff().iloc[1:] * 400 if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan mod = cls.create_model(obs, **kwargs) cls.model = mod.ssm n_disturbance_variates = ((cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs) np.random.seed(1234) dv = np.random.normal(size=n_disturbance_variates) isv = np.random.normal(size=cls.model.k_states) # Collapsed filtering, smoothing, and simulation smoothing cls.model.filter_collapsed = True cls.results_b = cls.model.smooth() cls.sim_b = cls.model.simulation_smoother() cls.sim_b.simulate(disturbance_variates=dv, initial_state_variates=isv) # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_collapsed = False cls.results_a = cls.model.smooth() cls.sim_a = cls.model.simulation_smoother() cls.sim_a.simulate(disturbance_variates=dv, initial_state_variates=isv) # Create the model with augmented state space kwargs.pop('filter_collapsed', None) mod = MLEModel(obs, k_states=4, k_posdef=2, **kwargs) mod['design', :3, :2] = np.array([[-32.47143586, 17.33779024], [-7.40264169, 1.69279859], [-209.04702853, 125.2879374]]) mod['obs_cov'] = np.diag(np.array([0.0622668, 1.95666886, 58.37473642])) mod['transition', :2, :2] = np.array([[0.29935707, 0.33289005], [-0.7639868, 1.2844237]]) mod['transition', 2:, :2] = np.eye(2) mod['selection', :2, :2] = np.eye(2) mod['state_cov'] = np.array([[1.2, -0.25], [-0.25, 1.1]]) mod.initialize_approximate_diffuse(1e6) cls.augmented_model = mod.ssm cls.augmented_results = mod.ssm.smooth()
def setup_class(cls, which='mixed', *args, **kwargs): # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') obs = np.log(dta[['realgdp','realcons','realinv']]).diff().iloc[1:] * 400 if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan mod = cls.create_model(obs, **kwargs) cls.model = mod.ssm n_disturbance_variates = ( (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs ) np.random.seed(1234) dv = np.random.normal(size=n_disturbance_variates) isv = np.random.normal(size=cls.model.k_states) # Collapsed filtering, smoothing, and simulation smoothing cls.model.filter_collapsed = True cls.results_b = cls.model.smooth() cls.sim_b = cls.model.simulation_smoother() cls.sim_b.simulate(disturbance_variates=dv, initial_state_variates=isv) # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_collapsed = False cls.results_a = cls.model.smooth() cls.sim_a = cls.model.simulation_smoother() cls.sim_a.simulate(disturbance_variates=dv, initial_state_variates=isv) # Create the model with augmented state space kwargs.pop('filter_collapsed', None) mod = MLEModel(obs, k_states=4, k_posdef=2, **kwargs) mod['design', :3, :2] = np.array([[-32.47143586, 17.33779024], [-7.40264169, 1.69279859], [-209.04702853, 125.2879374]]) mod['obs_cov'] = np.diag( np.array([0.0622668, 1.95666886, 58.37473642])) mod['transition', :2, :2] = np.array([[0.29935707, 0.33289005], [-0.7639868, 1.2844237]]) mod['transition', 2:, :2] = np.eye(2) mod['selection', :2, :2] = np.eye(2) mod['state_cov'] = np.array([[1.2, -0.25], [-0.25, 1.1]]) mod.initialize_approximate_diffuse(1e6) cls.augmented_model = mod.ssm cls.augmented_results = mod.ssm.smooth()
def setup_class(cls, which='none', **kwargs): # Results path = os.path.join(current_path, 'results', 'results_smoothing_generalobscov_R.csv') cls.desired = pd.read_csv(path) # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan # Create the model mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) mod['design'] = np.eye(3) mod['obs_cov'] = np.array([[609.0746647855, 0., 0.], [0., 1.8774916622, 0.], [0., 0., 124.6768281675]]) mod['transition'] = np.array( [[-0.8110473405, 1.8005304445, 1.0215975772], [-1.9846632699, 2.4091302213, 1.9264449765], [0.9181658823, -0.2442384581, -0.6393462272]]) mod['selection'] = np.eye(3) mod['state_cov'] = np.array( [[1552.9758843938, 612.7185121905, 877.6157204992], [612.7185121905, 467.8739411204, 70.608037339], [877.6157204992, 70.608037339, 900.5440385836]]) mod.initialize_approximate_diffuse(1e6) cls.model = mod.ssm # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_conventional = True cls.conventional_results = cls.model.smooth() n_disturbance_variates = ((cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs) cls.conventional_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states)) # Univariate filtering, smoothing, and simulation smoothing cls.model.filter_univariate = True cls.univariate_results = cls.model.smooth() cls.univariate_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states))
def setup_class(cls, which='none', **kwargs): # Results path = current_path + os.sep + 'results/results_smoothing_generalobscov_R.csv' cls.desired = pd.read_csv(path) # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') obs = dta[['realgdp','realcons','realinv']].diff().iloc[1:] if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan # Create the model mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) mod['design'] = np.eye(3) mod['obs_cov'] = np.array([[ 609.0746647855, 0. , 0. ], [ 0. , 1.8774916622, 0. ], [ 0. , 0. , 124.6768281675]]) mod['transition'] = np.array([[-0.8110473405, 1.8005304445, 1.0215975772], [-1.9846632699, 2.4091302213, 1.9264449765], [ 0.9181658823, -0.2442384581, -0.6393462272]]) mod['selection'] = np.eye(3) mod['state_cov'] = np.array([[ 1552.9758843938, 612.7185121905, 877.6157204992], [ 612.7185121905, 467.8739411204, 70.608037339 ], [ 877.6157204992, 70.608037339 , 900.5440385836]]) mod.initialize_approximate_diffuse(1e6) cls.model = mod.ssm # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_conventional = True cls.conventional_results = cls.model.smooth() n_disturbance_variates = ( (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs ) cls.conventional_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) ) # Univariate filtering, smoothing, and simulation smoothing cls.model.filter_univariate = True cls.univariate_results = cls.model.smooth() cls.univariate_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) )
def setup_class(cls, which, dtype=float, alternate_timing=False, **kwargs): # Results path = os.path.join(current_path, 'results', 'results_smoothing_generalobscov_R.csv') cls.desired = pd.read_csv(path) # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan # Create the model mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) mod['design'] = np.eye(3) X = (np.arange(9) + 1).reshape((3, 3)) / 10. mod['obs_cov'] = np.dot(X, X.T) mod['transition'] = np.eye(3) mod['selection'] = np.eye(3) mod['state_cov'] = np.eye(3) mod.initialize_approximate_diffuse(1e6) cls.model = mod.ssm # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_conventional = True cls.conventional_results = cls.model.smooth() n_disturbance_variates = ( (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs ) cls.conventional_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) ) # Univariate filtering, smoothing, and simulation smoothing cls.model.filter_univariate = True cls.univariate_results = cls.model.smooth() cls.univariate_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) )
def setup_class(cls, which, dtype=float, alternate_timing=False, **kwargs): # Results path = os.path.join(current_path, 'results', 'results_smoothing_generalobscov_R.csv') cls.desired = pd.read_csv(path) # Data dta = datasets.macrodata.load_pandas().data dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', freq='QS') obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] if which == 'all': obs.iloc[:50, :] = np.nan obs.iloc[119:130, :] = np.nan elif which == 'partial': obs.iloc[0:50, 0] = np.nan obs.iloc[119:130, 0] = np.nan elif which == 'mixed': obs.iloc[0:50, 0] = np.nan obs.iloc[19:70, 1] = np.nan obs.iloc[39:90, 2] = np.nan obs.iloc[119:130, 0] = np.nan obs.iloc[119:130, 2] = np.nan # Create the model mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) mod['design'] = np.eye(3) X = (np.arange(9) + 1).reshape((3, 3)) / 10. mod['obs_cov'] = np.dot(X, X.T) mod['transition'] = np.eye(3) mod['selection'] = np.eye(3) mod['state_cov'] = np.eye(3) mod.initialize_approximate_diffuse(1e6) cls.model = mod.ssm # Conventional filtering, smoothing, and simulation smoothing cls.model.filter_conventional = True cls.conventional_results = cls.model.smooth() n_disturbance_variates = ( (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs ) cls.conventional_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) ) # Univariate filtering, smoothing, and simulation smoothing cls.model.filter_univariate = True cls.univariate_results = cls.model.smooth() cls.univariate_sim = cls.model.simulation_smoother( disturbance_variates=np.zeros(n_disturbance_variates), initial_state_variates=np.zeros(cls.model.k_states) )
def create_model(cls, obs, **kwargs): # Create the model with typical state space mod = MLEModel(obs, k_states=2, k_posdef=2, **kwargs) mod['design'] = np.array([[-32.47143586, 17.33779024], [-7.40264169, 1.69279859], [-209.04702853, 125.2879374]]) mod['obs_cov'] = np.diag(np.array([0.0622668, 1.95666886, 58.37473642])) mod['transition'] = np.array([[0.29935707, 0.33289005], [-0.7639868, 1.2844237]]) mod['selection'] = np.eye(2) mod['state_cov'] = np.array([[1.2, -0.25], [-0.25, 1.1]]) mod.initialize_approximate_diffuse(1e6) return mod
def create_model(cls, obs, **kwargs): # Create the model with typical state space mod = MLEModel(obs, k_states=2, k_posdef=2, **kwargs) mod['design'] = np.array([[-32.47143586, 17.33779024], [-7.40264169, 1.69279859], [-209.04702853, 125.2879374]]) mod['obs_cov'] = np.diag( np.array([0.0622668, 1.95666886, 58.37473642])) mod['transition'] = np.array([[0.29935707, 0.33289005], [-0.7639868, 1.2844237]]) mod['selection'] = np.eye(2) mod['state_cov'] = np.array([[1.2, -0.25], [-0.25, 1.1]]) mod.initialize_approximate_diffuse(1e6) return mod