def test_fmpt(self): k = self.p.shape[0] obs = ergodic.fmpt(self.p).flatten().tolist()[0] exp = np.matrix([[2.5, 4., 3.33333333], [2.66666667, 5., 2.66666667], [3.33333333, 4., 2.5]]) exp = exp.flatten().tolist()[0] for i in range(k): self.assertAlmostEqual(exp[i], obs[i])
def _calc(self, y, w, classes, k): # lag markov ly = pysal.lag_spatial(w, y) npm = np.matrix npa = np.array if self.fixed: l_classes = pysal.Quantiles(ly.flatten(), k=k).yb l_classes.shape = ly.shape else: l_classes = npa([ pysal.Quantiles(ly[:, i], k=k).yb for i in np.arange(self.cols) ]) l_classes = l_classes.transpose() l_classic = Markov(l_classes) T = np.zeros((k, k, k)) n, t = y.shape for t1 in range(t - 1): t2 = t1 + 1 for i in range(n): T[l_classes[i, t1], classes[i, t1], classes[i, t2]] += 1 P = np.zeros_like(T) F = np.zeros_like(T) # fmpt ss = np.zeros_like(T[0]) for i, mat in enumerate(T): row_sum = mat.sum(axis=1) row_sum = row_sum + (row_sum == 0) p_i = np.matrix(np.diag(1. / row_sum) * np.matrix(mat)) #print i #print mat #print p_i ss[i] = steady_state(p_i).transpose() try: F[i] = fmpt(p_i) except: #pylint; "No exception type(s) specified" print "Singlular fmpt matrix for class ", i P[i] = p_i return T, P, ss, F
def _calc(self, y, w, classes, k): # lag markov ly = pysal.lag_spatial(w, y) npm = np.matrix npa = np.array if self.fixed: l_classes = pysal.Quantiles(ly.flatten(), k=k).yb l_classes.shape = ly.shape else: l_classes = npa([pysal.Quantiles( ly[:, i], k=k).yb for i in np.arange(self.cols)]) l_classes = l_classes.transpose() l_classic = Markov(l_classes) T = np.zeros((k, k, k)) n, t = y.shape for t1 in range(t - 1): t2 = t1 + 1 for i in range(n): T[l_classes[i, t1], classes[i, t1], classes[i, t2]] += 1 P = np.zeros_like(T) F = np.zeros_like(T) # fmpt ss = np.zeros_like(T[0]) for i, mat in enumerate(T): row_sum = mat.sum(axis=1) row_sum = row_sum + (row_sum == 0) p_i = np.matrix(np.diag(1. / row_sum) * np.matrix(mat)) #print i #print mat #print p_i ss[i] = steady_state(p_i).transpose() try: F[i] = fmpt(p_i) except: #pylint; "No exception type(s) specified" print "Singlular fmpt matrix for class ", i P[i] = p_i return T, P, ss, F