S1细节检验
<p>[TOC]</p>
<pre><code class="language-python">%matplotlib inline
%load_ext autoreload
%autoreload 2
import meteva.base as meb
import meteva.method as mem
import meteva.perspact as mps
import numpy as np
import pandas as pd
import datetime
import meteva</code></pre>
<h1>S1</h1>
<p>s1评分评价的是预报对小尺度信息的刻画的准确性。其检验方法是,采用傅里叶变换的方法,过滤掉尺度大于(nx,ny)的波动,保留尺度在(nx,ny)以内的波动,然后计算<br />
*<em><font face="黑体" color=green size=3>S1 = 100</em>sum(abs(DY_i - DX_i))/sum(max(abs(DY_i),abs(DX_i))),其中DY_i ,DX_i是预报场、观测场在i处的小尺度分量。</font>**<br />
s1评分越大代表误差越大,预报质量越差</p>
<p><font face="黑体" color=black size=4><strong>参考文献</strong></font><br />
Thompson, J. C. and Carter, G. M. (1972) On some characteristics of the S1 score. J. Appl. Meteorol., 11, 1384–1385.<br />
Brown, B.G., Gilleland, E. and Ebert, E.E. (2012) Chapter 6: Forecasts of spatial fields. pp. 95–117, In Forecast Verification: A Practitioner's Guide in Atmospheric Science, 2nd edition. Edts. Jolliffee, I. T. and Stephenson, D. B., Chichester, West Sussex, U.K.: Wiley, 274 pp.</p>
<p><font face="黑体" color=Blue size=3><strong>S1(grd_ob,grd_fo,nx = 10,ny = 10,sigma = 1,gradFUN = "KernelGradFUN")</strong></font> </p>
<p>计算预报的S1评分</p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数</th>
<th style="text-align: center;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=Blue size=5>grd_ob</font></strong></td>
<td style="text-align: center;">网格数据形式的观测数据,只支持包含单一平面场的网格数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong><font face="黑体" color=Blue size=5>grd_fo</font></strong></td>
<td style="text-align: center;">网格数据形式的预报数据,只支持包含单一平面场的网格数据</td>
</tr>
<tr>
<td style="text-align: left;"><strong>nx</strong></td>
<td style="text-align: center;">计算X和Y的梯度场的函数时用到的卷积核的宽度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>ny</strong></td>
<td style="text-align: center;">计算X和Y的梯度场的函数时用到的卷积核的高度</td>
</tr>
<tr>
<td style="text-align: left;"><strong>gradFUN</strong></td>
<td style="text-align: center;">用于计算X和Y的梯度场的函数,默认是"KernelGradFUN",使用高斯核的拉普拉斯算子。</td>
</tr>
<tr>
<td style="text-align: left;"><font face="黑体" color=blue size=5>return</font></td>
<td style="text-align: center;">实数形式的评分值</td>
</tr>
</tbody>
</table>
<pre><code class="language-python">import meteva.base as meb
grid1 = meb.grid([100, 120, 0.05], [24, 40, 0.05])
path_ob = r'H:\test_data\input\mem\mode\ob\rain03\20072611.000.nc'
path_fo = r'H:\test_data\input\mem\mode\ec\rain03\20072608.003.nc'
grd_ob = meb.read_griddata_from_nc(path_ob, grid=grid1, time=&quot;2020072611&quot;, dtime=0, data_name=&quot;OBS&quot;)
grd_fo = meb.read_griddata_from_nc(path_fo, grid=grid1, time=&quot;2020072608&quot;, dtime=3, data_name=&quot;ECMWF&quot;)
meb.plot_tools.plot_2d_grid_list([grd_ob,grd_fo],ncol = 2,cmap= &quot;rain_3h&quot;)</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a9d0a7a341c281263cd351c7fdd01a52&amp;file=file.png" alt="" /></p>
<pre><code class="language-python">look=mem.space.S1(grd_ob, grd_fo,nx=3,ny = 3)
print(&quot;s1评分 = &quot; + str(look[&quot;s1&quot;]))
meb.plot_tools.plot_2d_grid_list([look[&quot;ob_grad&quot;],look[&quot;fo_grad&quot;]],ncol = 2)</code></pre>
<pre><code>s1评分 = 93.06130238986746</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=84d43caaa12f976dfe485b5f77a6c4b1&amp;file=file.png" alt="" /></p>
<pre><code class="language-python">look=mem.space.S1(grd_ob, grd_fo,nx=30,ny = 30)
print(&quot;s1评分 = &quot; + str(look[&quot;s1&quot;]))
meb.plot_tools.plot_2d_grid_list([look[&quot;ob_grad&quot;],look[&quot;fo_grad&quot;]],ncol = 2)</code></pre>
<pre><code>s1评分 = 89.56671723309846</code></pre>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=df1e0f0e286910f3b319226afe97296d&amp;file=file.png" alt="" /></p>