爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 52491|回复: 59

[作图] NCL回归+显著性检验 绘图问题

  [复制链接]
发表于 2016-4-19 13:16:30 | 显示全部楼层 |阅读模式

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

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

x
求助:
       进行回归分析后,用betainc函数进行了显著性检验。在用阴影方式绘制回归系数时,图像没有问题,但是改用等值线时,出现了等值线交叉的情况,两次绘图的差别只是将FillOn改成了False,LineOn改成了True。不知道是怎么回事,还是哪里计算的问题...还有通过显著性检验的区域特别大,有点儿不是很确定,不知道是不是betainc函数的使用有问题还是绘图的问题,希望能得到帮助~

脚本如下:
   rc           = regCoef_n(eofts,hgtDJF(:,:,:),0,0)  ;_n choose the element
   rc2          = regCoef_n(eofts2,hgtDJF(:,:,:),0,0)
;  printVarSummary(rc)                 ;the results have to be defined
   rc!0 = "lat"
   rc&lat = hgtDJF&lat
   rc!1 = "lon"
   rc&lon = hgtDJF&lon
   rc2!0 = "lat"
   rc2&lat = hgtDJF&lat
   rc2!1 = "lon"
   rc2&lon = hgtDJF&lon
  copy_VarCoords(hgtDJF(:,:,:), rc)                ; copy lat,lon coords
  copy_VarCoords(hgtDJF(:,:,:), rc2)
  rc@long_name="regression  coefficient"
  rc2@long_name="regression coefficient"
  printVarSummary(rc)
  printVarSummary(rc2)
  
;-------------------------------------------------------
;test
;-------------------------------------------------------
  tval = onedtond(rc@tval , dimsizes(rc))   ;t-statistic of rc
  df   = onedtond(rc@nptxy, dimsizes(rc)) - 2  ;自由度
  b = tval    ; b must be same size as tval (and df)
  b = 0.5
  prob = betainc(df/(df+tval^2),df/2.0,b)       ; prob(nlat,nlon)
  prob!0   = "lat"    ; name dimensions
  prob!1   = "lon"
  prob&lat = hgtDJF&lat   ; assign coordinate values to named dimensions
  prob&lon = hgtDJF&lon
  prob@long_name="probability"
  printVarSummary(prob)
  
;***************
;rc2
;------------------------------------------------------------------
  tval2 = onedtond(rc2@tval , dimsizes(rc2))   ;t-statistic
  df2   = onedtond(rc2@nptxy, dimsizes(rc2)) - 2  ;自由度
  b2 = tval2    ; b must be same size as tval (and df)
  b2 = 0.5
  prob2 = betainc(df2/(df2+tval2^2),df2/2.0,b2)       ; prob(nlat,nlon)
  prob2!0   = "lat"    ; name dimensions
  prob2!1   = "lon"
  prob2&lat = hgtDJF&lat   ; assign coordinate values to named dimensions
  prob2&lon = hgtDJF&lon
  prob2@long_name="probability"
  printVarSummary(prob2)
;  print(prob2)
;-------------------------------------------------
; plot
;-------------------------------------------------
  wks = gsn_open_wks("pdf","/pic/regressof200color")
  gsn_define_colormap(wks,"GMT_Gray")
  res = True
  res@gsnDraw = False
  res@gsnFrame = False
  res@cnFillOn = True
  res@cnLinesOn = False
  res@lbLabelBarOn = True
  res@gsnAddCyclic          = True  
  res@cnLineLabelsOn        = True
  res@lbOrientation = "Vertical"
  res@lbBoxLinesOn = False
  res@gsnContourNegLineDashPattern = 1           ; sets negative contours to dash pattern 1
  res@cnLineThicknessF     = 0.6
  res@cnLineLabelFontHeightF = 0.008
  res@cnLineLabelFontThicknessF = 0.005
  res@tmXBLabelFontHeightF  = 0.015
  res@tmYLLabelFontHeightF  = 0.015
;  res@gsnSpreadColors      = True                ; use full colormap
;************************************************
; Smoothing
;************************************************
  res@cnSmoothingOn = True
  res@cnSmoothingDistanceF = 0.001
  res@cnSmoothingTensionF = -2
;---map range
  res@mpCenterLonF = 180
  res@mpMinLatF = 0
  res@mpMaxLatF = 90
  res@mpMinLonF = 0
  res@mpMaxLonF = 360
  res@gsnRightString = ""
  res@gsnLeftString = ""
  res@cnInfoLabelOn=False

  plots = new(2,graphic)
  res@tiMainString = "regression of PC1&hgt200"
  plots(0) = gsn_csm_contour_map(wks,rc,res)
  res@tiMainString = "regression of PC2&hgt200"
  plots(1) = gsn_csm_contour_map(wks,rc2,res)
  pres = True
  pres@gsnMaximize = True
;  pres@gsnPanelRowSpec = True
  pres@gsnPanelLabelBar = False
  pres@lbBoxLinesOn = False
  
  res2 = True
  res2@gsnDraw = False
  res2@gsnFrame = False
  res2@cnFillOn = True
  res@cnLinesOn = False
  res2@cnLineLabelsOn = False
  res2@cnInfoLabelOn = False
  res2@lbLabelBarOn = False
  res2@cnMonoFillPattern = False
  res2@cnLevelSelectionMode = "ExplicitLevels"
  res2@cnLevels = (/0.05/)                       ;; set to significance level
  res2@cnFillPatterns = (/17,-1/)
  res2@cnFillColors = (/1,0/)
  res2@gsnLeftString = ""
  plot1 = gsn_csm_contour(wks,prob,res2)
  plot2 = gsn_csm_contour(wks,prob2,res2)
  overlay(plots(0),plot1)
  overlay(plots(1),plot2)
  gsn_panel(wks,plots,(/2,1/),pres)
end

阴影.jpg
等值线.jpg
密码修改失败请联系微信:mofangbao
发表于 2016-6-30 16:21:28 | 显示全部楼层
您好,请问用EOF出来的第一模态场的结果和用第一模态的时间系数回归出来的场,这两种场的含义有什么不一样的含义吗?我不是很理解回归的含义。查询中看到了你的帖子,你是不是也是EOF后进行回归,能解释一下吗,非常感谢!!!!!!!!!!!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2019-3-12 09:57:49 | 显示全部楼层
楼主您好,想请问一下显著性检验过程中b=0.5是什么意思?这个和95%区间有没有关系?非常感谢!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2016-4-19 13:39:15 | 显示全部楼层
res@cnSmoothingTensionF = -2
调调这参数,我记得这个数的绝对值太大会出现等值线相交,
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-19 16:41:22 | 显示全部楼层
18380463812 发表于 2016-4-19 13:39
res@cnSmoothingTensionF = -2
调调这参数,我记得这个数的绝对值太大会出现等值线相交,

调了之后等值线还是交叉的....不过如果不考虑显著性检验直接画回归的图的话,又是正常的,所以可能是显著性检验的问题,我再研究研究~谢谢啦~
密码修改失败请联系微信:mofangbao
发表于 2016-4-19 17:55:57 | 显示全部楼层
楼主为什么不直接用t检验呢?  tval = onedtond(rc@tval , dimsizes(rc))   ;t-statistic of rc
   df   = onedtond(rc@nptxy, dimsizes(rc)) - 2  ;回归函数自带的t检验,但是我不明白这个tval是什么意思?楼主您知道吗?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-19 20:28:55 | 显示全部楼层
subtropical 发表于 2016-4-19 17:55
楼主为什么不直接用t检验呢?  tval = onedtond(rc@tval , dimsizes(rc))   ;t-statistic of rc
   df   = ...

当时看官网回归函数下面的示例里有betainc函数,就直接使用了....看官网的解释,tval好像就是t检验。
密码修改失败请联系微信:mofangbao
发表于 2016-4-19 21:12:22 | 显示全部楼层
我还是叫小确幸 发表于 2016-4-19 20:28
当时看官网回归函数下面的示例里有betainc函数,就直接使用了....看官网的解释,tval好像就是t检验。

什么意思还是不太懂,tval是t检验,那betainc是什么,还有我也试了官网脚本,但是   b = tval    ; b must be same size as tval (and df)
的时候出错
fatal:["NclVar.c":1390]:Assignment type mismatch, right hand side can't be coerced to type of left hand side
请问您遇到这个问题了吗?我觉得好奇怪啊,直接copy官网的。。。。
密码修改失败请联系微信:mofangbao
发表于 2016-4-19 23:27:28 | 显示全部楼层
显著区域范围的问题,你可以根据tval查t检验临界值表(α=0.05),超过临界值的区域和你用不完整β函数betainc算出的概率值小于0.05的范围是一样的。
密码修改失败请联系微信:mofangbao
发表于 2016-4-19 23:32:44 | 显示全部楼层
再或者你对比一下相关系数分布图通过检验的区域,两者应该是一致的。理论上,在一元回归方程里面,回归系数的检验和相关系数的检验是一致的。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-20 09:45:42 | 显示全部楼层
subtropical 发表于 2016-4-19 21:12
什么意思还是不太懂,tval是t检验,那betainc是什么,还有我也试了官网脚本,但是   b = tval    ; b mus ...

我也不是很清楚这几个检验函数,之前看了几个帖子还是没弄懂.....最后是直接用的t检验了。
我用的也是官网的脚本,没有报错.....确定是这句出错了吗?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-4-20 09:48:17 | 显示全部楼层
曦尘 发表于 2016-4-19 23:32
再或者你对比一下相关系数分布图通过检验的区域,两者应该是一致的。理论上,在一元回归方程里面,回归系数 ...

恩恩,谢谢~最后我就是用的相关系数做的检验,图就正常了。可是还是不理解betainc函数哪里出了问题,请问您能解答一下吗?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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