Python氣象數(shù)據(jù)處理與繪圖(5):氣候突變檢驗(yàn)(年代際突變檢驗(yàn))

長(zhǎng)時(shí)間尺度的氣候研究中通常涉及到年際變化和年代際變化袁勺。文獻(xiàn)中也經(jīng)常出現(xiàn)所謂年代際突變這類的描述,這次便介紹兩個(gè)用來(lái)檢驗(yàn)?zāi)甏H變化的方法闪幽, 其一是滑動(dòng)t檢驗(yàn)(sliding t-test)击敌,另一個(gè)則是曼肯德?tīng)枡z驗(yàn)(Man-Kendall test)。

滑動(dòng)t檢驗(yàn) (sliding t-test)

滑動(dòng)t檢驗(yàn)是考察兩組樣本平均值的差異是否顯著來(lái)檢驗(yàn)突變焕妙。
滑動(dòng)t檢驗(yàn)的基本思想是:把一氣候序列中兩段子序列均值有無(wú)顯著差異看為來(lái)自兩個(gè)總體均值有無(wú)顯著差異的問(wèn)題來(lái)檢驗(yàn)蒋伦。如果兩段子序列的均值差異超過(guò)了一定的顯著性水平,可以認(rèn)為均值發(fā)生了質(zhì)變焚鹊,有突變發(fā)生痕届。


參考魏鳳英老師現(xiàn)代氣候統(tǒng)計(jì)診斷與預(yù)測(cè)技術(shù)一書

原文也提到了該方法的局限性,需要人為設(shè)置滑動(dòng)步長(zhǎng)末患,具有一定主觀性研叫,需反復(fù)設(shè)置不同步長(zhǎng)最終確定合適的突變點(diǎn)。


滑動(dòng)t檢驗(yàn)計(jì)算步驟

根據(jù)以上步驟璧针,可通過(guò)如下代碼塊實(shí)現(xiàn):
def slidet(inputdata,step):
    inputdata = np.array(inputdata)
    n = inputdata.shape[0]
    t = np.zeros(n)
    t1 = np.empty(n)
    n1 = step    #n1, n2為滑動(dòng)補(bǔ)償嚷炉,需調(diào)整
    n2 = step
    n11 = 1 / n1
    n22 = 1 / n2
    m = np.sqrt(n11 + n22)
    for i in range (step, n-step-1):
        x1_mean = np.mean(inputdata[i-step : i])   
        x2_mean = np.mean(inputdata[i : i+step])
        s1 = np.var(inputdata[i-step : i])          
        s2 = np.var(inputdata[i : i+step])
        s = np.sqrt((n1 * s1 + n2 * s2) / (n1 + n2 - 2))
        t[i-step] = (x2_mean - x1_mean) / (s * m)
        t1 = np.roll(t , step-1)
        t1[:step]=np.nan  
        t1[n-step+1:]=np.nan             
    return  t1  

自由度n1+n2-2,根據(jù)置信度檢驗(yàn)表查找對(duì)應(yīng)顯著性閾值探橱。

曼肯德?tīng)枡z驗(yàn)(Man-Kendall test)

曼肯檢驗(yàn)是一種非參檢驗(yàn)方法申屹,避免了滑動(dòng)t檢驗(yàn)的局限性绘证,在年代際變化研究中受到廣泛應(yīng)用。


參考魏鳳英老師現(xiàn)代氣候統(tǒng)計(jì)診斷與預(yù)測(cè)技術(shù)一書

以下是計(jì)算步驟:


參考魏鳳英老師現(xiàn)代氣候統(tǒng)計(jì)診斷與預(yù)測(cè)技術(shù)一書

根據(jù)以上步驟哗讥,可通過(guò)如下代碼塊實(shí)現(xiàn):
def mktest(inputdata):
    inputdata = np.array(inputdata)
    n=inputdata.shape[0]
    Sk             = [0]
    UFk            = [0]
    s              =  0
    Exp_value      = [0]
    Var_value      = [0]
    for i in range(1,n):
        for j in range(i):
            if inputdata[i] > inputdata[j]:
                s = s+1
            else:
                s = s+0
        Sk.append(s)
        Exp_value.append((i+1)*(i+2)/4 )                    
        Var_value.append((i+1)*i*(2*(i+1)+5)/72 )            
        UFk.append((Sk[i]-Exp_value[i])/np.sqrt(Var_value[i]))
    Sk2             = [0]
    UBk             = [0]
    UBk2            = [0]
    s2              =  0
    Exp_value2      = [0]
    Var_value2      = [0]
    inputdataT = list(reversed(inputdata))
    for i in range(1,n):
        for j in range(i):
            if inputdataT[i] > inputdataT[j]:
                s2 = s2+1
            else:
                s2 = s2+0
        Sk2.append(s2)
        Exp_value2.append((i+1)*(i+2)/4 )                    
        Var_value2.append((i+1)*i*(2*(i+1)+5)/72 )            
        UBk.append((Sk2[i]-Exp_value2[i])/np.sqrt(Var_value2[i]))
        UBk2.append(-UBk[i])
    UBkT = list(reversed(UBk2))
    return UFk, UBkT

示例

對(duì)于同一組數(shù)據(jù):

a = [15.4,14.6,15.8,14.8,15.0,15.1,15.1,15.0,15.2,15.4,
      14.8,15.0,15.1,14.7,16.0,15.7,15.4,14.5,15.1,15.3,
      15.5,15.1,15.6,15.1,15.1,14.9,15.5,15.3,15.3,15.4,
      15.7,15.2,15.5,15.5,15.6,15.1,15.1,16.0,16.0,16.8,
      16.2,16.2,16.0,15.6,15.9,16.2,16.7,15.8,16.2,15.9,
      15.8,15.5,15.9,16.8,15.5,15.8,15.0,14.9,15.3,16.0,
      16.1,16.5,15.5,15.6,16.1,15.6,16.0,15.4,15.5,15.2,
      15.4,15.6,15.1,15.8,15.5,16.0,15.2,15.8,16.2,16.2,
      15.2,15.7,16.0,16.0,15.7,15.9,15.7,16.7,15.3,16.1]
plt.figure(figsize=(10,5))
plt.plot(a,'r')
plt.show()
a

分別使用兩種方法進(jìn)行檢驗(yàn)嚷那,首先是滑動(dòng)t檢驗(yàn):

t = slidet(a,5)
plt.figure(figsize=(10,5))
plt.plot(t,'r')
plt.axhline(1.8595)
plt.axhline(-1.8595)
plt.show()
sliding t-test

存在多個(gè)突變點(diǎn),這時(shí)便需要調(diào)整滑動(dòng)補(bǔ)償忌栅,選取合適的步長(zhǎng)车酣。
而利用MK檢驗(yàn):

uf,ub = mktest(a)
plt.figure(figsize=(10,5))
plt.plot(uf,'r',label='UFk')
plt.plot(ub,'b',label='UBk')
plt.legend()
plt.axhline(1.96)
plt.axhline(-1.96)
plt.show()
M-K test

對(duì)于該組數(shù)據(jù),相比之下索绪,MK檢驗(yàn)的效果要優(yōu)于滑動(dòng)t檢驗(yàn)湖员。
兩種檢驗(yàn)的分析方法如下:
滑動(dòng)t檢驗(yàn):


滑動(dòng)t檢驗(yàn)

M-K檢驗(yàn):


MK檢驗(yàn)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瑞驱,隨后出現(xiàn)的幾起案子娘摔,更是在濱河造成了極大的恐慌,老刑警劉巖唤反,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凳寺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡彤侍,警方通過(guò)查閱死者的電腦和手機(jī)肠缨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盏阶,“玉大人晒奕,你說(shuō)我怎么就攤上這事∶澹” “怎么了脑慧?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵个少,是天一觀的道長(zhǎng)渗蟹。 經(jīng)常有香客問(wèn)我配深,道長(zhǎng)硫嘶,這世上最難降的妖魔是什么抹镊? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任宋光,我火速辦了婚禮馏锡,結(jié)果婚禮上握童,老公的妹妹穿的比我還像新娘蒋腮。我一直安慰自己淘捡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布池摧。 她就那樣靜靜地躺著焦除,像睡著了一般。 火紅的嫁衣襯著肌膚如雪作彤。 梳的紋絲不亂的頭發(fā)上膘魄,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天乌逐,我揣著相機(jī)與錄音,去河邊找鬼创葡。 笑死浙踢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灿渴。 我是一名探鬼主播洛波,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骚露!你這毒婦竟也來(lái)了蹬挤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棘幸,失蹤者是張志新(化名)和其女友劉穎焰扳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體误续,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吨悍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蹋嵌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片育瓜。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖栽烂,靈堂內(nèi)的尸體忽然破棺而出爆雹,到底是詐尸還是另有隱情,我是刑警寧澤愕鼓,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站慧起,受9級(jí)特大地震影響菇晃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚓挤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一磺送、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧灿意,春花似錦估灿、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至荒辕,卻和暖如春汗销,著一層夾襖步出監(jiān)牢的瞬間犹褒,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工弛针, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叠骑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓削茁,卻偏偏與公主長(zhǎng)得像宙枷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子茧跋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344