|
38 | 38 | }, |
39 | 39 | { |
40 | 40 | "cell_type": "code", |
41 | | - "execution_count": 2, |
| 41 | + "execution_count": 11, |
42 | 42 | "id": "3656786a-88f2-4a88-9ec8-80bbf3789f05", |
43 | 43 | "metadata": {}, |
44 | 44 | "outputs": [], |
|
53 | 53 | "import pandas as pd\n", |
54 | 54 | "import cartopy.crs as ccrs\n", |
55 | 55 | "import matplotlib as mpl\n", |
56 | | - "import matplotlib.pyplot as plt" |
| 56 | + "import matplotlib.pyplot as plt\n", |
| 57 | + "\n", |
| 58 | + "from nmc_met_base.qpf_cal import cum_freq, cfd_match" |
57 | 59 | ] |
58 | 60 | }, |
59 | 61 | { |
|
99 | 101 | }, |
100 | 102 | { |
101 | 103 | "cell_type": "code", |
102 | | - "execution_count": 65, |
| 104 | + "execution_count": 3, |
103 | 105 | "id": "d9672e48-12b7-4c30-bb3b-3ce310caad2b", |
104 | 106 | "metadata": {}, |
105 | 107 | "outputs": [ |
|
143 | 145 | }, |
144 | 146 | { |
145 | 147 | "cell_type": "code", |
146 | | - "execution_count": 67, |
| 148 | + "execution_count": 4, |
147 | 149 | "id": "8ee51932-5859-4ea2-bf39-cdd35884cf84", |
148 | 150 | "metadata": {}, |
149 | 151 | "outputs": [ |
|
274 | 276 | }, |
275 | 277 | { |
276 | 278 | "cell_type": "code", |
277 | | - "execution_count": 81, |
| 279 | + "execution_count": 5, |
278 | 280 | "id": "4a0cc4d3-afe6-47fa-834a-0c0abcf2a6de", |
279 | 281 | "metadata": {}, |
280 | 282 | "outputs": [], |
|
293 | 295 | }, |
294 | 296 | { |
295 | 297 | "cell_type": "code", |
296 | | - "execution_count": 82, |
| 298 | + "execution_count": 8, |
297 | 299 | "id": "c069a88e-76f9-4bf0-9a8a-c99c22c804b1", |
298 | 300 | "metadata": {}, |
299 | 301 | "outputs": [], |
|
306 | 308 | }, |
307 | 309 | { |
308 | 310 | "cell_type": "code", |
309 | | - "execution_count": 94, |
| 311 | + "execution_count": 9, |
310 | 312 | "id": "719def2a-364f-44e7-9f71-8ceb594c74c5", |
311 | 313 | "metadata": {}, |
312 | 314 | "outputs": [ |
|
398 | 400 | }, |
399 | 401 | { |
400 | 402 | "cell_type": "code", |
401 | | - "execution_count": null, |
| 403 | + "execution_count": 12, |
402 | 404 | "id": "621f24b6-e3bb-48b2-99af-ae0daa31d6bf", |
403 | 405 | "metadata": {}, |
404 | 406 | "outputs": [], |
|
425 | 427 | }, |
426 | 428 | { |
427 | 429 | "cell_type": "code", |
428 | | - "execution_count": 92, |
| 430 | + "execution_count": 14, |
429 | 431 | "id": "6f9acf80-ecc2-478f-abed-d84929a2794c", |
430 | 432 | "metadata": {}, |
431 | 433 | "outputs": [ |
|
439 | 441 | ], |
440 | 442 | "source": [ |
441 | 443 | "with np.printoptions(precision=3, suppress=True):\n", |
442 | | - " print(cfd_match([0, 0.1, 2, 6, 15, 52, 100, 130, 203.], obs_cdf, fct_cdf, bins))" |
| 444 | + " print(cfd_match([0, 0.1, 2, 6, 15, 52, 100, 130, 203.], obs_cfd, fct_cfd, bins))" |
443 | 445 | ] |
444 | 446 | }, |
445 | 447 | { |
|
452 | 454 | }, |
453 | 455 | { |
454 | 456 | "cell_type": "code", |
455 | | - "execution_count": 95, |
| 457 | + "execution_count": 16, |
456 | 458 | "id": "da02eb03-322a-490e-89b0-4b261d20af13", |
457 | 459 | "metadata": {}, |
458 | 460 | "outputs": [ |
|
482 | 484 | "data['FCST'] = data['FCST'].astype(float)\n", |
483 | 485 | "\n", |
484 | 486 | "# adjust the forecast values\n", |
485 | | - "fct_cal = cfd_match(data['FCST'], obs_cdf, fct_cdf, bins)\n", |
| 487 | + "fct_cal = cfd_match(data['FCST'], obs_cfd, fct_cfd, bins)\n", |
486 | 488 | "\n", |
487 | 489 | "# calculate the calibrated forecast and observation CFD\n", |
488 | 490 | "obs_cfd, bins = cum_freq(data['OBS'])\n", |
|
507 | 509 | "\n", |
508 | 510 | "分位值映射是另一种较为常用的降水量级订正方法,不仅用于天气模式(Bremnes,2007),也多用于气候模式(Maraun,2013)。分位值映射具有与频率匹配方法相同的两个步骤,主要不同点在于其采用降水样本的分位值分布曲线。Maraun(2013)指出当观测数据的分辨率远高于预报数据时,分位值映射还起到将低分辨预报转换为高分辨率的功能,但该降尺度作用会使得校正后降水序列的时空结构歪曲(如区域平均的极端值被过高估计,降水变化趋势受到影响等);为避免这些问题,需要加入随机偏差订正。Cannon等(2015)进一步引入分位差值映射来确保订正后降水时间序列的变化趋势不变,并将单变量的分位值映射拓展到多变量(降水和温度)协同订正。Hamill等(2017)以分位值映射方法为基础,发展多中心集合模式的降水概率预报后处理技术,得到的结果表现出更高的预报技巧和可靠性,同时保留了解析度和空间分布细节。\n", |
509 | 511 | "\n", |
510 | | - "<img src=\"./images/quantile_mapping.png\" alt=\"image\" style=\"height: 600px;\">" |
| 512 | + "<img src=\"./images/quantile_mapping.png\" alt=\"image\" style=\"height: 600px;\"> \n", |
| 513 | + "<div id=\"images\">\n", |
| 514 | + "<img src=\"./images/qmap_raw.png\" alt=\"image\" style=\"height: 300px;\"> \n", |
| 515 | + "<img src=\"./images/qmap_cal.png\" alt=\"image\" style=\"height: 300px;\"> \n", |
| 516 | + "</div> " |
511 | 517 | ] |
512 | 518 | }, |
| 519 | + { |
| 520 | + "cell_type": "code", |
| 521 | + "execution_count": null, |
| 522 | + "id": "4063d9bf-56eb-430a-a4e2-777d4c7a52ef", |
| 523 | + "metadata": {}, |
| 524 | + "outputs": [], |
| 525 | + "source": [] |
| 526 | + }, |
513 | 527 | { |
514 | 528 | "cell_type": "markdown", |
515 | 529 | "id": "620027cf-844c-4b4e-8631-9101806dc887", |
|
537 | 551 | }, |
538 | 552 | { |
539 | 553 | "cell_type": "code", |
540 | | - "execution_count": 3, |
| 554 | + "execution_count": 17, |
541 | 555 | "id": "88ded8bf-2c07-422a-b61f-63563c1f1117", |
542 | 556 | "metadata": {}, |
543 | 557 | "outputs": [], |
|
551 | 565 | }, |
552 | 566 | { |
553 | 567 | "cell_type": "code", |
554 | | - "execution_count": 4, |
| 568 | + "execution_count": 18, |
555 | 569 | "id": "aaa5d04b-856b-461b-9566-fd335209dcba", |
556 | 570 | "metadata": {}, |
557 | 571 | "outputs": [], |
|
569 | 583 | }, |
570 | 584 | { |
571 | 585 | "cell_type": "code", |
572 | | - "execution_count": 5, |
| 586 | + "execution_count": 19, |
573 | 587 | "id": "9a6f827b-f898-4af7-8aa8-1ae05ecd8948", |
574 | 588 | "metadata": {}, |
575 | 589 | "outputs": [ |
|
688 | 702 | "[10957 rows x 3 columns]" |
689 | 703 | ] |
690 | 704 | }, |
691 | | - "execution_count": 5, |
| 705 | + "execution_count": 19, |
692 | 706 | "metadata": {}, |
693 | 707 | "output_type": "execute_result" |
694 | 708 | } |
|
699 | 713 | }, |
700 | 714 | { |
701 | 715 | "cell_type": "code", |
702 | | - "execution_count": 6, |
| 716 | + "execution_count": 20, |
703 | 717 | "id": "9e60345a-8f08-439b-9ae3-6357037f0319", |
704 | 718 | "metadata": {}, |
705 | 719 | "outputs": [ |
|
818 | 832 | "[10799 rows x 3 columns]" |
819 | 833 | ] |
820 | 834 | }, |
821 | | - "execution_count": 6, |
| 835 | + "execution_count": 20, |
822 | 836 | "metadata": {}, |
823 | 837 | "output_type": "execute_result" |
824 | 838 | } |
|
829 | 843 | }, |
830 | 844 | { |
831 | 845 | "cell_type": "code", |
832 | | - "execution_count": 7, |
| 846 | + "execution_count": 21, |
833 | 847 | "id": "7aafc2ff-9f12-4b4d-afd2-9526659b72c4", |
834 | 848 | "metadata": {}, |
835 | 849 | "outputs": [], |
|
841 | 855 | }, |
842 | 856 | { |
843 | 857 | "cell_type": "code", |
844 | | - "execution_count": 8, |
| 858 | + "execution_count": 22, |
845 | 859 | "id": "dfb6f28f-0e03-45f7-84c6-2c0c27ce2824", |
846 | 860 | "metadata": {}, |
847 | 861 | "outputs": [ |
|
894 | 908 | }, |
895 | 909 | { |
896 | 910 | "cell_type": "code", |
897 | | - "execution_count": 9, |
| 911 | + "execution_count": 23, |
898 | 912 | "id": "28523ba9-78f1-44a4-b92c-4afcea8f213b", |
899 | 913 | "metadata": {}, |
900 | 914 | "outputs": [ |
|
913 | 927 | }, |
914 | 928 | { |
915 | 929 | "cell_type": "code", |
916 | | - "execution_count": 10, |
| 930 | + "execution_count": 24, |
917 | 931 | "id": "3e815eb7-8f8e-47eb-bf28-84a872aa1a39", |
918 | 932 | "metadata": {}, |
919 | 933 | "outputs": [], |
|
927 | 941 | }, |
928 | 942 | { |
929 | 943 | "cell_type": "code", |
930 | | - "execution_count": 11, |
| 944 | + "execution_count": 25, |
931 | 945 | "id": "bdb5b674-088b-4d2e-abad-dfa35bcde67c", |
932 | 946 | "metadata": {}, |
933 | 947 | "outputs": [ |
|
957 | 971 | }, |
958 | 972 | { |
959 | 973 | "cell_type": "code", |
960 | | - "execution_count": 12, |
| 974 | + "execution_count": 26, |
961 | 975 | "id": "39fc88cc-acaa-4db4-ae43-18853a8b6528", |
962 | 976 | "metadata": {}, |
963 | 977 | "outputs": [ |
|
0 commit comments