標籤:
機率論中的一個重要概念是,隨機變數的獨立性。
只有兩個隨機變數A、B相互獨立時,才會有聯合機率等於各隨機變數機率之積
P(AB)=P(A)P(B)
對於天氣來說,這顯然是不成立的。根據我們的人生經驗(life experience),如果第一天下雨的話,第二天仍然下雨的機率將大大增加。
但沒有資料證明,這一切都是鬼話。於是,我採集了一個城市一年的天氣狀況(不過這並不是真實的天氣,而是天氣預報,假定現在一天的天氣預報已經十分精確了吧),來證明這是正確的。
資料用csv格式來儲存,前十行是這樣的
date,highTemp,lowTemp,weather,windDir,windPow
2014-01-01,17,1,晴,北風~南風,微風
2014-01-02,17,6,晴~多雲,南風,微風
2014-01-03,16,2,多雲,北風,微風
2014-01-04,15,5,晴,北風,微風
2014-01-05,17,6,晴,北風,微風
2014-01-06,15,8,陰~小雨,北風,微風
2014-01-07,10,5,小雨,北風,3-4級
2014-01-08,8,4,陰~多雲,北風,3-4級~微風
2014-01-09,9,4,多雲~陰,北風,微風
2014-01-10,9,4,小雨,北風,微風
我使用Python的pandas包來分析資料。
首先讀入資料
import pandas as pddata = pd.read_csv(‘zhuzhou_weather.csv‘)data.head(10)
同時我認為天氣中只要包含“雨”字,就人文這一天下雨,不論是小雨、中雨還是陰轉小雨
利用apply方法,很容易判斷天氣當中是否包含“雨”字
yu = data[‘weather‘].apply(lambda x:‘雨‘ in x)yu_prob = sum(yu)/data.shape[0]yu_prob
yu是一個二進位相量,如果某一天下了雨,則為True
得到一天下雨的機率P(Y)=0.3929,10天裡有4天在下雨,你可能猜測這座城市在江南。
如果連續兩天下雨的機率相互獨立,那麼連續兩天下雨的機率應當為
yu_prob**2
P(Y1Y2)=P(Y1)P(Y2)=0.1543
現在到了耍點小花招的時候了,用前一天是否下雨乘以後一天是否下雨,就能得到是否連續兩天下雨的隨機變數,只有前一天下雨同時後一天下雨,結果才為真
yu2_prob = sum((yu.shift(1)*yu)[1:])/data.shape[0]
yu.shift(1)大致就是把序列向後移了一位,
計算出真實連續兩天下雨的機率為P(Y1Y2)=0.2445,顯然大於假定連續兩天是否下雨相互獨立的情況。看來人們的經驗,有時還是挺正確的。
進一步計算出知道第一天下雨,第二天仍然下雨的條件機率
P(Y2|Y1)=P(Y2Y1)/P(Y1)=0.2445/0.3929=0.6224
如果第一天下雨,第二天有超過60%的機率下雨!!
天氣中的機率 | 連續兩天的天氣獨立嗎?