Python气象数据处理与绘图(4):显著性检验
2020-02-04 本文已影响0人
摸鱼咯
相关系数(回归系数)检验
其实在(2)中已经提到了相关系数和回归系数,在计算过程中,直接返回了对应的p-value,因此可以直接使用p-value。
1.相关系数
from scipy.stats import pearsonr
r,p = pearsonr(x, y)
2.线性回归系数
from sklearn.linear_model import LinearRegression
slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
均值检验t-test
计算两个独立样本得分均值的T检验。
这是对两个独立样本具有相同平均值(预期值)的零假设的双边检验。此测试假设默认情况下总体具有相同的方差。在合成分析中通常用到t-test。
from scipy.stats.mstats import ttest_ind
t,p = ttest_ind(a, b, 0, equal_var=True, nan_policy='propagate')
当a,b为变量场时,即[time,lat,lon]时,a,b两个数组的经纬度需相同。
nan_policy 可选{‘propagate’, ‘raise’, ‘omit’}
“propagate”:返回nan
“raise”:报错
“omit”:执行忽略nan值的计算
绘图
计算得到的P值用于绘图,当p<0.01时,通过99%显著性检验,p<0.05,通过95%显著性检验,以此类推。
图形绘制只需在原有填色图上叠加打点图层,实际上打点也是特殊的图色,只不过将颜色换成了点,实际上用到的还是contourf函数。
proj = ccrs.PlateCarree(central_longitude=95)
leftlon, rightlon, lowerlat, upperlat = (0,160,30,90)
img_extent = [leftlon, rightlon, lowerlat, upperlat]
fig3 = plt.figure(figsize=(12,8),dpi=1000)
f3_ax1 = fig3.add_axes([1.24, 0.8, 0.5, 0.5],projection = proj)
contour_map(f3_ax1,img_extent,20)
c1 = f3_ax1.contourf(lon,lat, z500_cs_0_0, zorder=0,levels =range(-80,90,10) , extend = 'both', transform=ccrs.PlateCarree(), cmap=plt.cm.RdBu_r)
c1b = f3_ax1.contourf(lon,lat, p_0_500_0,[np.min(p_0_500_0),0.05,np.max(p_0_500_0)], zorder=1,hatches=['.', None],colors="none", transform=ccrs.PlateCarree())
通过contourf对应参数调节打点图层的细节。