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
def test_steady_state(self): obs = ergodic.steady_state(self.p).tolist() exp = np.matrix([[0.4], [0.2], [0.4]]).tolist() k = self.p.shape[0] for i in range(k): self.assertAlmostEqual(exp[i][0], obs[i][0])