- 积分
- 9076
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-11-27
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 逝风丝痕 于 2017-10-17 18:17 编辑
各位大神前辈,本人用NCL处理来自NCEP再分析资料air.mon.mean.nc(1948-2016)数据,目的是为了求得500hPa高度多年全球气温场与时间的相关性(即气候趋势系数),并做显著性检验。
问题1:如图所示,打点区域只显示在颜色较浅(且大部分为负值区),感觉很怪
2:在用student_函数进行检验后采用where函数返回通过显著性的相关系数值(已查明通过检验的概率值p与对应的相关系数值Rxt下标相同),未通过的以缺失值返回,这里查明已通过的Rxt,即Rxt_test的最大值为0.236861,最小值为-0.2366571。即在最大值与最小值之间的值是通过显著性检验的。是否因为这个原因导致问题1的发生
3:2的问题是否由于相关性的计算问题导致的
4:希望与各位交流一下其他显著性检验方法与打点技巧。
感谢各位不吝赐教~~~
脚本:
begin
lats = -90
latn = 90
lev = 500
yrstrt = 1948
yrlast = 2016
ymstrt = yrstrt * 100 + 1
ymlast = yrlast * 100 + 12
year = ispan(yrstrt, yrlast, 1)
f = addfile("./bdshare/data/air.mon.mean.nc", "r")
time = f->time ;读取日期
YYYMM = cd_calendar(time, -1) ;转成公历日期
rec_s = ind(ymstrt.eq.YYYMM) ;开始日期的记录号,对应着1948年01月
rec_e = ind(ymlast.eq.YYYMM) ;结束日期的记录号,对应着2016年12月
tas = f->air(rec_s:rec_e,{lev},{lats:latn},:) ;1948年01月至2016年12月时段的资料
tas_ann = month_to_annual(tas, 1)
tasx = tas_ann({lat|lats:latn},lon|:,year|:)
Rxt = escorc(year, tasx);求变量场与时间的相关,即气候趋势系数Rxt
Rxt!0 = "lat"
Rxt&lat = tasx&lat
Rxt!1= "lon"
Rxt&lon = tasx&lon
;显著性检验
n = dimsizes(year)
df = n-2
t = Rxt*sqrt((n-2)/(1-Rxt^2)) ;t检验
p = student_t(t, df) ;两侧student-t分布概率值
psig = 0.05
copy_VarMeta(Rxt(:,:), p(:,:))
wks = gsn_open_wks("png", "tas-ann-time")
gsn_define_colormap(wks, "GMT_panoply")
res = True
res@gsnDraw = False
res@gsnFrame = False
res@gsnAddCyclic = True
res@cnFillOn = True
res@pmTitleDisplayMode = "Always"
res@pmTickMarkDisplayMode = "Always" ;坐标标签上添加度符号
res@gsnLeftString = ""
res@gsnRightString = ""
res@cnLevelSelectionMode = "ExplicitLevels"
plot = gsn_csm_contour_map(wks, Rxt, res)
sres = True ; set up a second resource list
sres@gsnDraw = False ; do not draw the plot
sres@gsnFrame = False ; do not advance the frame
sres@cnLineLabelsOn = False ; do not use line labels
sres@cnLinesOn = False ; do not draw contour lines
sres@cnInfoLabelOn = False
sres@cnFillOn = False ; color fill
sres@lbLabelBarOn = False
sres@cnInfoLabelOn = False
sres@cnFillDotSizeF = 0.005
opt = True
opt@gsnShadeFillType = "pattern"
opt@gsnShadeMid = 17
Rxt_test = where(p.ge.0.05, Rxt, Rxt@_FillValue)
copy_VarMeta(Rxt(:,:), Rxt_test(:,:))
printVarSummary(Rxt_test)
Rxt_max = max(Rxt_test)
Rxt_min = min(Rxt_test)
plot1 = gsn_csm_contour(wks,Rxt_test,sres)
plot1 = gsn_contour_shade(plot1,Rxt_min,Rxt_max,opt)
overlay(plot,plot1)
draw(plot)
frame(wks)
end
图:
|
-
|