狀態轉移矩陣是俄國數學家馬爾科夫提出的,他在20世紀初發現:一個系統的某些因素在轉移過程中,第n次結果只受第n-1的結果影響,即只與上一時刻所處狀態有關,而與過去狀態無關。 在馬爾科夫分析中,引入狀態轉移這個概念。所謂狀態是指客觀事物可能出現或存在的狀態;狀態轉移是指客觀事物由一種狀態轉移到另一種狀態
在狀態轉移矩陣中,矩陣各元素表示狀態轉移的概率,並且各行元素之和等於1,其現實意義是,各個狀態的百分比總和為1
假定某大學有1萬學生,每人每月用1支牙膏,並且只使用“中華”牙膏與“黑妹”牙膏兩者之一。根據本月(12月)調查,有3000人使用黑妹牙膏,7000人使用中華牙膏。又據調查,使用黑妹牙膏的3000人中,有60%的人下月將繼續使用黑妹牙膏,40%的人將改用中華牙膏; 使用中華牙膏的7000人中, 有70%的人下月將繼續使用中華牙膏,30%的人將改用黑妹牙膏。據此,可以得到以下轉移矩陣
通過轉移矩陣與初始化狀態,即可預測之后月份兩種牙膏的市場占比
代碼實現如下:
import matplotlib.pyplot as plt import numpy as np def markov(): current_status = np.array([3000, 7000]) transfer_matrix = np.array([[0.6, 0.4], [0.3, 0.7]]) img_points = [] for i in range(100): current_status = np.dot(current_status, transfer_matrix) img_points.append(current_status) print(i, "\t", current_status) plt.plot(img_points) plt.show() markov()
程序運行結果如下:
經過N次轉換后,兩種牙膏的市場占比趨於一個固定的數值:4285.71428571,5714.28571429