- 积分
- 581
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-4-13
- 最后登录
- 1970-1-1

|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题背景:我在利用模式进行短期气候预测的时候计算量海温与850hPa环流场的相关场。由于模式有9个成员,我一共得到了9个相关场。将这9个相关场做平均后得到的最终结果,我需要将过显著性检验的区域打点。在了解到fisherZ方法后做了尝试,但发现自己算出的prob有一些问题。恳请家人们帮帮忙,十分感谢!
具体程序:以下是我计算fisher Z与prob的程序,以纬向风与海温的相关场举例:
epac_cru = new((/9,180,360/), float)
copy_VarCoords(u(:,0,:,:), epac_cru)
do k = 0,8
epac_cru(k,:,:) = (/escorc_n(epac_sst_gwt(:,k), ucfs(k,:,:,:), 0, 0)/)
end do
epac_cru_mem = dim_avg_n_Wrap(epac_cru, 0)
;计算fisher Z
epac_zu = new((/9,180,360/), float)
copy_VarCoords(epac_cru, epac_zu)
epac_cru1 = where(epac_cru.eq.1, epac_cru@_FillValue, epac_cru)
do k = 0,8
epac_zu(k,:,:) = 0.5*(log(2.718/((1 + epac_cru1(k,:,:))/(1 - epac_cru1(k,:,:)))))
end do
epac_zu_mem = dim_avg_n_Wrap(epac_zu, 0) ;将9个fisherZ做平均,得到成员平均的Z
epac_ru = new((/180,360/), float)
copy_VarCoords(epac_cru(0,:,:), epac_ru)
epac_ru(:,:) = (exp(2*epac_zu_mem(:,:)) - 1)/(exp(2*epac_zu_mem(:,:)) + 1) ;再将Z套回公式得到相关场
;计算prob
epac_df = nyear - 2 ;自由度
epac_test = new((/180,360/), float)
copy_VarCoords(epac_ru, epac_test)
epac_test = epac_ru*sqrt(epac_df/(1 - epac_ru^2))
epac_prob = student_t(epac_test, epac_df)
copy_VarCoords(epac_ru, epac_prob)
具体问题:这样算下来prob是反的,大于0.05的地方反而是过检区域,而且只能画出过检的偏西风画不出偏东风 |
|