爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10899|回复: 7

[作图] 用SOI和PDO指数回归热带和北太平洋海盆SST并作显著性检验

[复制链接]

新浪微博达人勋

发表于 2020-3-31 10:41:14 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 HDdd 于 2020-4-5 15:12 编辑

闲来无事 分享一下回归分析以及显著性检验的脚本

   ;load"$NCARG_ROOT/lib/ncarg/nclscripts/cnmap/cnmap.ncl"

;***********************************************************

    begin
    ;duqu1987-2016desoi&pdozhishu
    diri = "/cygdrive/G/ncl/qhtj/"
    soizs =asciiread(diri+"SOI-1951-CURRENT.txt", -1, "float")
    printVarSummary(soizs)

    ;duqu1987-2016sst
    fili = "sst.mon.mean.nc"
    f = addfile(diri+fili,"r")
    yyyymm = cd_calendar( f->time, -1)
    print(yyyymm(0))
    ymstrt  = 198701     
    ymlast  = 201612
    istrt = ind(yyyymm.eq.ymstrt)
    ilast = ind(yyyymm.eq.ymlast)
    temp  = f->sst;
    printVarSummary(temp);
    temper = temp(istrt:ilast,{:},{:})
    printVarSummary(temper)
    sst =temper(lat|:,lon|:,time|:);
    printVarSummary(sst)
    ; jisuanhuiguixishubingzuojianyan
    rc = regCoef(soizs,sst);返回值为tval(t值统计量tval=rc@tval)和nptxy(自由度df=rc@nptxy-2)
    printVarSummary(rc);

    rc@long_name = "Trend"
    rc!0 = "lat"
    rc!1 = "lon"
    rc&lat = sst&lat
    rc&lon = sst&lon
    printVarSummary(rc)

    tval = onedtond(rc@tval,dimsizes(rc));
    df = onedtond(rc@nptxy, dimsizes(rc)) - 2
    b = tval;betainc(x, a, b)的x,a,b的维度必须一致
    b = 0.5
    b!0 = "lat"
    b!1 = "lon"
    b&lat = sst&lat
    b&lon = sst&lon
    printVarSummary(b)

    prob = betainc(df/(df+tval^2),df/2.0,b);
    prob!0 = "lat"
    prob!1 = "lon"
    prob&lat = sst&lat
    prob&lon = sst&lon
  
    wks = gsn_open_wks("png",diri+"soiIII")
   gsn_define_colormap(wks,"BlueRedGray")  

;************************************************
; plotting parameters(画相关系数rc)
;************************************************
   
   res                       = True
   res@gsnDraw               = False
   res@gsnFrame              = False   
   res@gsnMaximize           = True             ; make large
   res@gsnAddCyclic          = False
   
   res@cnFillOn              = True             ; turn on color
   res@cnLinesOn             = False            ; turn off contour lines
   res@cnLineLabelsOn        = False            ; turn off contour linelabels
   ;;res@cnFillMode            = "RasterFill"
   res@cnLevelSelectionMode  = "ManualLevels"   ; set manual contour levels
   res@cnMinLevelValF        = -1              ; set min contourlevel
   res@cnMaxLevelValF        =  1              ; set max contourlevel
   res@cnLevelSpacingF       =  0.1            ; set contourinterval
  
   res@mpOutlineBoundarySets       = "Geophysical" ;
   res@mpMinLatF                   = -30.
   res@mpMaxLatF                   = 60.
   res@mpMinLonF                   = 105.
   res@mpMaxLonF                   = 265.
   res@mpCenterLonF                = 180.
   res@mpGeophysicalLineThicknessF = 2.         ; double the thickness of geophysicalboundaries
   res@mpNationalLineThicknessF    = 2.       ; double the thickness of national boundaries
   res@mpOutlineOn                 = True       ; turn off outline
   res@mpFillOn                    = False    ; turn off map fill   

   res@tiMainString          = "Regression Test of SOI andSST(1987-2016)"
  
   base = gsn_csm_contour_map(wks,rc,res)  
;============================================<
;add 画通过显著性检验的区域
;============================================<
   res2 = True
   res2@gsnDraw = False;
   res2@gsnFrame =False;
   
   res2@cnFillOn = True
   res2@cnLinesOn = False;
   res2@cnLineLabelsOn = False
   res2@cnInfoLabelOn = False;
   res2@lbLabelBarOn = False;
   res2@cnMonoFillPattern = False
   res2@cnLevelSelectionMode ="ExplicitLevels"
   res2@cnLevels = (/0.05/);
   res2@cnFillPatterns = (/7,-1/);
   res2@cnFillColors = (/1,-1/);
   res2@gsnLeftString = ""
   
   plot = gsn_csm_contour(wks,prob,res2)

   overlay(base, plot)
   draw(base)
   frame(wks)
   end



Snipaste_2020-03-31_10-43-27.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-4-4 17:22:15 | 显示全部楼层
楼主,你好,我想请教一下脚本当中的这几行:
“   res2@cnLevels = (/0.05/);set to significancelevel设置显著性水平
   res2@cnFillPatterns = (/7,-1/);-1表示透明,res2@cnLevels =(/0.05/)把区域分成了>0.05(用7形状填充)和<0.05(用-1形状填充)两个区域
   res2@cnFillColors = (/1,-1/);-1表示透明,>0.05的区域用1填色,<0.05的区域用-1填色 ”
按照这样的设置,应该是>0.05的用-1填充,<0.05的用形状7和颜色1填充吧,你是不是注释反了啊
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-5 15:10:36 | 显示全部楼层
人生别来无恙 发表于 2020-4-4 17:22
楼主,你好,我想请教一下脚本当中的这几行:
“   res2@cnLevels = (/0.05/);set to significancelevel设 ...

好像是的哈==
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-30 22:34:05 | 显示全部楼层
请问楼主,这里的色标数值有意义吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-31 09:33:36 | 显示全部楼层
我头发乱了吗 发表于 2020-5-30 22:34
请问楼主,这里的色标数值有意义吗?

你说的哪一句?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-5-31 10:22:17 | 显示全部楼层
HDdd 发表于 2020-5-31 09:33
你说的哪一句?

图中的色标,这里的颜色深浅有含义吗?是有单位的吗?谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-6-16 16:38:38 | 显示全部楼层
你好,我用的代码一毛一样,只是用来回归的时间系数不一致,为什么这个检验打出来的点感觉有问题
QQ图片20200616163705.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-10-15 17:21:38 | 显示全部楼层
你好,请问您SOI指数是怎么计算的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表