分位數映射數據後處理-Quantile Mapping後處理 (R語言)

統計後處理器基本上是統計模型,將觀察到的關注變量與從氣象或水文模型的直接模型輸出(DMO)導出的適當預測變量相關聯。統計後處理的重要性早已在氣象預報中得到認可。早期的工作包括完善的預測(perfect prognosis),模型輸出統計(MOS)和模擬方法(analog method)等模型。 近年來,已經提出了許多其他後處理方法,包括秩直方圖校準(rank histogram calibration),分位數映射(quantile mapping,QM)和集成預處理器(ensemble preprocessor, EPP)。幾種基於貝葉斯定理的模型已被研發了,以將先前的氣候學信息與實時預測相結合,例如輸出的貝葉斯處理器(Bayesian processor of output, BPO),預測的貝葉斯處理器(Bayesian processor of forecast, BPF)和集合貝葉斯處理器(Bayesian processor of ensemble, BPE)。 同時,也存在多種基於迴歸的模型,包括集成模型輸出統計(EMOS),邏輯迴歸(logistics regress, LR),分位數迴歸(quantile regression, QR)和逐成員方法(member-by-member approach)。今天,介紹一種簡單的後處理方法,分位數映射(Quantile Mapping)數據後處理方法。

1. 定義

分位數映射後處理,也叫分位數與分位數轉換,或者累積分佈函數匹配(CDF),是一種簡單的後處理方法,具體是根據觀測值的CDF去校正預測值的CDF。在實施QM過程中,就是把每個預報的值映射到觀測值的CDF上對應的分位數。

下面引用Piani的一篇文章裏的圖,(Piani C, Statistical bias correction for daily precipitation in regional climate models over Europe. Theor Appl Climatol 2010,99:187–192)

圖a中是觀測(虛線)和模擬(實線)降水的pdf,圖b是根據圖a繪製的cdf,實施過程就是在b圖中找出所有模擬x值對應cdf值,然後找到與cdf之對應相等的觀測值x,比如圖b中模擬值x=1時,對應cdf相等的觀測值的y=1.5,以此類推,獲取無數對的x,y時,就可以畫出來圖c的映射圖了。這樣根據映射圖,就可以把模擬值的所有值映射到觀測值的分佈上了,通過對隨機數據測試(圖d),發現對模擬值(實線直方圖)矯正,獲取到了校正後的值,發現校正後值都分佈在了理論觀測值線附近。

簡單圖例如下;

圖2 分位數映射方法示意圖(a),不同QM方法示意圖(b)

2.R語言代碼

理解了原理後,真正的實施就需要藉助編程語言實現。幸運的是別人已經把這個方法寫好,並且把代碼,測試數據都放到了R語言包網上,供大家學習。包Qmap下載地址:https://cran.r-project.org/。下載後,在R軟件中安裝就可以使用了,根據測試數據和說明書,測試如下:

install.packages('qmap')#下載並安裝包

library(qmap)        #引用安裝包

sqrtquant<-function(x,qstep=0.01)

{

  qq=quantile(x,prob=seq(0,1,by=qstep))

  sqrt(qq)

}

data(obsprecip)   #加載數據

data(modprecip)  #加載數據

#1.擬合的分佈爲berngamma

qm.gamma.fit=fitQmapDIST(obsprecip[,1],modprecip[,1],distr = "berngamma",qstep = 0.001)

qm.gamma  =doQmapDIST(modprecip[,1],qm.fit)

plot(sqrtquant(modprecip[,1]),  sqrtquant(obsprecip[,1]))

lines(sqrtquant(modprecip[,1]), sqrtquant(qm),col="red")

#2.擬合的分佈爲bernlnorm

qm.lnorm.fit=fitQmapDIST(obsprecip[,1],modprecip[,1],distr = "bernlnorm",qstep = 0.001)

qm.lnorm  =doQmapDIST(modprecip[,1],qm.lnorm.fit)

lines(sqrtquant(modprecip[,1]),sqrtquant(qm.lnorm),col="blue")

#3.擬合的分佈爲weibu

qm.weibu.fit=fitQmapDIST(obsprecip[,1],modprecip[,1],distr = 'bernweibull',qstep=0.001)

qm.weibu=doQmapDIST(modprecip[,1],qm.weibu.fit)

lines( sqrtquant(modprecip[,1]), sqrtquant(qm.weibu),col="green")

#4.擬合的分佈爲weibu

qm.exp.fit=fitQmapDIST(sqrt(obsprecip[,1]),sqrt(modprecip[,1]), distr="bernexp",qstep=0.001 )

qm.exp=doQmapDIST(sqrt(modprecip[,1]), qm.exp.fit)^2

lines(sqrtquant(modprecip[,1]),sqrtquant(qm.exp),col="orange")

#5.添加圖例

legend("topleft",legend = c("berngamma","bernlnorm","bernweibull","bernexp"), lty =1, col=c("red","blue","green","orange") )

結果如圖2b所示。

4.QM的不足

然而,QM作爲一個非條件的方法,它不需要保留預測值與觀測值數據對的關聯性。所以,有時候QM可能會對原始數據的思路是錯誤的,從而導致結果並不如條件方法不滿意。此外,Zhao等做了深入研究,發現QM適合對GCM降水進行後處理。他們發現儘管QM能夠矯正偏差,但是它並不能保證可靠性和預測的連續性(連續性是指至少與氣候學預測一樣的性能)。這個原因就是由於QM不能很好的考慮原始模擬值和觀測值的相關性。基於此,趙等得出結論說QM並非十分適合後處理,因爲它會受到偏差和可信度、連續性的雙重影響。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章