diff --git a/quantecon/markov/core.py b/quantecon/markov/core.py index 5443dfd5b..53d10bceb 100644 --- a/quantecon/markov/core.py +++ b/quantecon/markov/core.py @@ -357,11 +357,9 @@ def period(self): if self.is_irreducible: return self.digraph.period else: - rec_classes = self.recurrent_classes - # Determine the period, the LCM of the periods of rec_classes d = 1 - for rec_class in rec_classes: + for rec_class in self.recurrent_classes_indices: period = self.digraph.subgraph(rec_class).period d = (d * period) // gcd(d, period) diff --git a/quantecon/markov/tests/test_core.py b/quantecon/markov/tests/test_core.py index 80fb756ba..bc765b370 100644 --- a/quantecon/markov/tests/test_core.py +++ b/quantecon/markov/tests/test_core.py @@ -12,7 +12,7 @@ import itertools from numpy.testing import ( assert_allclose, assert_array_equal, assert_array_less, assert_raises, - assert_ + assert_, assert_equal ) from quantecon.markov import ( @@ -417,7 +417,8 @@ def setup_method(self): 'mc': MarkovChain([[1, 0, 0], [1, 0, 0], [0, 0, 1]], state_values=state_values), 'coms': [[0], [1], [2]], - 'recs': [[0], [2]] + 'recs': [[0], [2]], + 'period': 1 } self.mc_periodic_dict = { @@ -425,7 +426,8 @@ def setup_method(self): state_values=state_values), 'coms': [[0, 1, 2]], 'recs': [[0, 1, 2]], - 'cycs': [[0], [1], [2]] + 'cycs': [[0], [1], [2]], + 'period': 3 } def test_com_rec_classes(self): @@ -471,6 +473,12 @@ def test_cyc_classes(self): sorted(classes, key=key) ) + def test_period(self): + for mc_dict in [self.mc_reducible_dict, self.mc_periodic_dict]: + mc = mc_dict['mc'] + period = mc_dict['period'] + assert_equal(mc.period, period) + def test_simulate(self): # Deterministic mc mc = self.mc_periodic_dict['mc']