Марковские цепочки стационарных распределений с scipy.sparse?

У меня цепь Маркова дана как большая редкостьscipy матрицаA, (Я'мы построили матрицу вscipy.sparse.dok_matrix формат, но преобразование в другие или создание его какcsc_matrix в порядке.) Я

хотел бы знать любое стационарное распределениеp этой матрицы, которая является собственным вектором для собственного значения1, Все записи в этом собственном векторе должны быть положительными и складываться в 1, чтобы представлять распределение вероятностей.

Это означает, что я хочу любое решение для системы,(A-I) p = 0p.sum()=1 (гдеI=scipy.sparse.eye(*A.shape) это матрица идентификаторов), но(A-I) не будет иметь полный ранг, и даже вся система может быть недостаточно определена. Кроме того, могут быть сгенерированы собственные векторы с отрицательными значениями, которые не могут быть нормализованы, чтобы быть действительными распределениями вероятности. Предотвращение негативных записей вp было бы здорово.

С помощьюscipy.sparse.linalg.eigen.eigs не является решением: оно не позволяет указать аддитивное ограничение. (Нормализация не помогает, если собственные векторы содержат отрицательные записи.) Кроме того, она немного отличается от истинных результатов, а иногда возникают проблемы сходимости, ведущие себя хуже, чемscipy.linalg.eig, (Также я использовал режим сдвига-инвертирования, который улучшает поиск типов собственных значений, которые я хочу, но не их качество. Если я нене использовать это, этоеще больше излишним, потому что меня интересует только одно собственное значение,1.)

Преобразование в плотные матрицы и использованиеscipy.linalg.eig не является решением: в дополнение к проблеме отрицательного входа матрица слишком велика.

С помощьюscipy.sparse.spsolve не является очевидным решением: матрица либо не квадратная (при объединении аддитивного ограничения и условия на собственный вектор), либо не имеет полного ранга (при попытке указать их отдельно каким-либо образом), иногда ни того, ни другого.

Есть ли хороший способ численно получить стационарное состояние цепи Маркова, заданной как разреженная матрица, используя python? Если есть способ получить исчерпывающий список (и, возможно, также почти стационарные состояния), это 'ценится, но не обязательно.

Ответы на вопрос(4)

Ваш ответ на вопрос