气候模式数据分位数映射法偏差矫正

近期在用CFS的天气预报产品,想要做偏差矫正处理;

1.首先查看的偏差矫正方法是分位数映射,参考的资料(很详细):

分位数映射数据后处理-Quantile Mapping后处理 (R语言)_忠言睿长的博客-CSDN博客

基于分位数映射法的黑河上游气候模式降水误差订正 - 中国知网

做矫正时,观测和模拟两个时间序列应该保持一致吧;

还没有开始做,等做完再来更新~~~

20230729——R语言 Qmap 分位数映射

处理好CFS回报数据后开始做矫正,主要看的R官方文件,看自己选择什么映射方法,其中的方法很多;我自己在尝试的时候选择了PTF和DIST,PTF做的时候注意时间序列数据框是列的格式,按时间年份以列的形式排列好,我的之前是行的形式,一直报错;DIST方法一直报错未解决问题;最终选择了PTF;

PTF中我理解的观测和模拟之间关系又可以有多种方法,尝试了指数和线性,感觉最终矫正后的结果差别不大(通过ggplot图示),选择了线性;

library(xlsx)
library(qmap)
library(ggplot2)
###data_ready
ori<-read.xlsx("F:/db/climate/cli_grow/tem_m_p5.xlsx", sheetIndex=1)
ori<-ori[,2:28]


file_list <- list.files("E:/seasonyield_predict_2/datapre/cfs_hindcast/month_m_county/", 
                        pattern = "tem_09_", full.names = TRUE)
###制备列名
year<-c(1984:2010)

for (f in file_list) {
  cfs<-read.xlsx(f,sheetIndex = 1)
  cfs<-cfs[,3:29]

  names(ori)<-year
  names(cfs)<-year
  
  ###qm_correct
  fit<-c()
  bia<-c()
  
  for (r in 1:nrow(ori)) {
    obs<-ori[r,]
    obs<-t(obs)#row_col
    sim<-cfs[r,]
    sim<-t(sim)
    qm.fit<-fitQmapPTF(obs,sim,transfun="linear",wet.day=TRUE,cost="RSS",qstep=0.001)
    qm <- doQmapPTF(sim,qm.fit)
    bia<-rbind(bia,t(qm))
    xishu<-qm.fit[["par"]]
    fit<-rbind(fit,xishu)
    
    # qm.fit<-fitQmapDIST(obs,sim,distr="GammaDist",qstep=0.001)
    # qm <- doQmapDIST(sim,qm.fit)
    # #Error in xx[!xx.NULL][[1]] : subscript out of bounds
    
  }
  
  write.xlsx(bia,paste0("E:/seasonyield_predict_2/datapre/cfs_hindcast/bia_month_m/",basename(f)))
  write.xlsx(fit,paste0("E:/seasonyield_predict_2/datapre/cfs_hindcast/xishu_month_m/",basename(f)))
  
}

# ###test
# qm<-as.data.frame(qm)
# names(qm)<-c('v')
# obs<-as.data.frame(obs)
# names(obs)<-c('v')
# sim<-as.data.frame(sim)
# names(sim)<-c('v')
# "power" and "linear"  差不多
# ggplot() +
#   geom_line(data = qm, aes(x=c(1984:2010),y=v,color = "Series 1")) +
#   geom_line(data = obs, aes(x=c(1984:2010),y=v,color = "Series 2")) +
#   geom_line(data = sim, aes(x=c(1984:2010),y=v, color = "Series 3")) 

2.问题:CFS历史回报1982-2009年时间序列数据找不到(它真的,我哭死~~~这个数据太难看懂了)

 在另一篇公众号文章里,找到了这个网址,里面有2011-至今的数据,是每月的每一天往后九个月的月数据预报;

CFS预报数据下载&驱动WRF

Index of /data/climate-forecast-system/access/operational-9-month-forecast

3.GEE上面有1979-至今的CFS再分析产品,我理解的是用CFS模式模拟的历史当天的数据

https://developers.google.com/earth-engine/datasets/catalog/NOAA_CFSV2_FOR6H#description

20230717-更新

和老师讨论的时候说CFS找不到长时间序列的回报数据(我找了好几天都搜索无果诶),怎么感觉老师一下子不知道哪里点的链接,找到了!

https://www.ncei.noaa.gov/products/weather-climate-models/climate-forecast-system#:~:text=CFS%20reforecast%20data%20were%20used,Reanalysis%20and%20Reforecast%20(CFSRR).

点进去是这样:

然后点“Historical”进去是这样

再点回报产品“CFS Reforecasts”进去是这样:

这个HTTPS点不开,点TDS,进去差不多这样,然后随意打开一年有readme的文件txt,下载后有一个网址链接

 https://www.ncei.noaa.gov/oa/prod-cfs-reforecast/index.html#high-priority-subset/monthly-means-9-month/

打开是这样:

然后就顺着点点点就可以啦,可以下载数据! 

 瑞思拜了!

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值