假設說,抽煙和不抽煙的人群之間有一定的概率互相轉化,且相互轉化的概率如下圖所示
即:
抽煙的人第二天仍然抽煙的概率是0.8
不抽煙的人第二天開始抽煙的概率是0.1
不抽煙的人第二天仍然不抽煙的概率是0.9
抽煙的人第二天開始不抽煙的概率是0.2
我們用程序去模擬抽煙與不抽煙人群相互轉化的過程:
首先任意假定一個初始狀態:抽煙與不抽煙的人群在實驗開始前分別有500人
依據上圖,定義轉移概率矩陣為:
使用下述代碼進行模擬
import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl import math transfer_matrix = np.array([[0.8, 0.1],[0.2,0.9]],dtype='float32') somking_matrix = np.array([[500],[500]],dtype='float32') number_somking = [500] number_nosomking = [500] for i in range(30): somking_matrix = np.dot(transfer_matrix,somking_matrix) #print(somking_matrix) number_somking.append(somking_matrix[0][0]) number_nosomking.append(somking_matrix[1][0]) print(number_somking) print(number_nosomking) x = np.arange(31) plt.plot(x,number_somking,label='somking') plt.plot(x,number_nosomking,label='nosomking') plt.legend() plt.show()
運行上述代碼得到的結果如下:
抽煙人數在30天內的變化為:[500, 450.0, 415.0, 390.5, 373.35, 361.34503, 352.9415, 347.05905, 342.94135, 340.05896, 338.04126, 336.62888, 335.6402, 334.94815, 334.4637, 334.1246, 333.8872, 333.72107, 333.60477, 333.52335, 333.46637, 333.42645, 333.39853, 333.379, 333.36533, 333.35574, 333.34903, 333.34433, 333.34106, 333.33875, 333.33713]
不抽煙人數在30天內的變化為:[500, 550.0, 585.0, 609.5, 626.64996, 638.6549, 647.0584, 652.94086, 657.05853, 659.9409, 661.9586, 663.37103, 664.35974, 665.0518, 665.53625, 665.87537, 666.1128, 666.279, 666.39526, 666.4767, 666.5336, 666.57355, 666.6015, 666.62103, 666.6347, 666.6443, 666.651, 666.6557, 666.659, 666.6613, 666.6629]
繪制圖像為:
現在,我們更換初始狀態:抽煙與不抽煙的人群在實驗開始前分別有1000人和0人
再次運行代碼,得到的結果如下:
抽煙人數在30天內的變化為:[1000, 800.0, 660.0, 562.0, 493.4, 445.38, 411.76602, 388.2362, 371.76535, 360.23575, 352.165, 346.51553, 342.56088, 339.7926, 337.85483, 336.49838, 335.54886, 334.88422, 334.41895, 334.09326, 333.8653, 333.70572, 333.594, 333.5158, 333.46106, 333.42276, 333.39594, 333.37717, 333.36404, 333.35486, 333.34842]
不抽煙人數在30天內的變化為:[0, 200.0, 340.0, 438.0, 506.59998, 554.62, 588.234, 611.7638, 628.2346, 639.7642, 647.83496, 653.48444, 657.4391, 660.2074, 662.14514, 663.5016, 664.4511, 665.1157, 665.581, 665.9067, 666.13464, 666.29425, 666.40594, 666.48413, 666.5389, 666.57715, 666.604, 666.6228, 666.6359, 666.6451, 666.6515]
重新繪制圖像如下:
通過兩次實驗我們可以看出:
1.隨着時間的推進,抽煙和不抽煙的人數總會保持在某個值(即馬爾可夫鏈達到了平穩分布)
2.改變初始條件,而不改變轉移概率矩陣,並不改變最終的值
並不是所有的馬爾可夫鏈都具有平穩分布,定理:不可約且非周期的有限狀態馬爾可夫鏈,有唯一平穩分布存在。
1.不可約性:一個不可約的馬爾可夫鏈,從任意狀態出發,當經過充分長時間后,可以到達任意狀態。
2.非周期性:所有狀態的出現不是單一過程的反復循環