近期在用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-至今的数据,是每月的每一天往后九个月的月数据预报;
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/
打开是这样:
然后就顺着点点点就可以啦,可以下载数据!
瑞思拜了!