爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 48627|回复: 27

[求助] 合成分析法,700百帕风场差异,t检验,以及过检验的地方打点

[复制链接]

新浪微博达人勋

发表于 2021-4-18 00:27:58 | 显示全部楼层 |阅读模式

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

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

x
前面已经得到突变点为2003年,并且过了99%的显著水平。现在进行合成分析,可是我研究的地区却没有过检验,求教一下程序是否有问题。
  1. #1979-2020年5-10月的月平均、700百帕水平风场资料
  2. import numpy as np
  3. import Ngl,Nio

  4. f=Nio.open_file('/mnt/e/xinan/uv700_1979-2020_5-10.nc','r')
  5. #print(f)

  6. lon  = f.variables['longitude']            # (361,)
  7. lat  = f.variables['latitude']             # (161,)

  8. u    = f.variables['u']                    # (252,161,361)  
  9. v    = f.variables['v']                    # (252,161,361)
  10. u    = u*u.scale_factor+u.add_offset
  11. v    = v*v.scale_factor+v.add_offset

  12. #突变年份为2003年,分成1979-2003和2004-2020两段做合成分析
  13. #(2003-1979+1)*6=150 & (2020-2004+1)*6=102
  14. ave_u1  = np.mean(u[0:150][:][:],0)
  15. ave_u2  = np.mean(u[150:252][:][:],0)
  16. ave_v1  = np.mean(v[0:150][:][:],0)
  17. ave_v2  = np.mean(v[150:252][:][:],0)
  18. dif_u   = ave_u2-ave_u1
  19. dif_v   = ave_v2-ave_v1

  20. # t 检验
  21. aveX = np.mean(v[0:150][:][:],0)
  22. aveY = np.mean(v[150:252][:][:],0)
  23. varX = np.var(v[0:150][:][:],0)
  24. varY = np.var(v[150:252][:][:],0)
  25. n1   = 25
  26. n2   = 17
  27. df   = n1+n2-2
  28. d    = (n1-1)*varX+(n2-1)*varY
  29. t    = (aveX-aveY)/(np.sqrt(d/df)*np.sqrt(1/n1+1/n2))
  30. #print(t)_(161,361)
  31. print(np.min(t),np.max(t))

  32. #得到通过t检验的格点下标
  33. t1=[]
  34. t2=[]
  35. for i in range(0,161):
  36.     for j in range(0,361):
  37.         if np.abs(t[i][j])>=2.021:       #自由度=40,α=0.05时,t=2.021
  38.             t1.append(i)
  39.             t2.append(j)

  40. print(len(t1),len(t2))

  41. #得到通过检验的格点经纬度
  42. lat1=[]
  43. lon1=[]
  44. for i in range(0,len(t1)):
  45.     lat2=lat[t1[i]]
  46.     lon2=lon[t2[i]]
  47.     lat1.append(lat2)
  48.     lon1.append(lon2)

  49. #print(len(lon1))

  50. wks   = Ngl.open_wks('x11','/mnt/f/uv_700(ttest)')

  51. vcres = Ngl.Resources()
  52. mpres = Ngl.Resources()

  53. mpres.nglDraw   =False
  54. mpres.nglFrame  =False
  55. vcres.nglDraw   =False
  56. vcres.nglFrame  =False

  57. vcres.vfXArray  =lon[::6]
  58. vcres.vfYArray  =lat[::6]

  59. mpres.mpLimitMode                 = "LatLon"       # Change the area of the
  60. mpres.mpMinLatF                   = 10             # map viewed.
  61. mpres.mpMaxLatF                   = 40
  62. mpres.mpMinLonF                   = 85
  63. mpres.mpMaxLonF                   = 120

  64. #需要的省界
  65. mpres.mpDataSetName               = "Earth..4"
  66. mpres.mpDataBaseVersion           = 'MediumRes'
  67. mpres.mpMaskAreaSpecifiers        = ["Yunnan","Sichuan","Guizhou"]
  68. mpres.mpOutlineSpecifiers         = ["Yunnan","Sichuan","Guizhou"]
  69. mpres.mpProvincialLineThicknessF  = 2
  70. mpres.mpNationalLineThicknessF    = 2

  71. mpres.mpOutlineBoundarySets       = "Geophysical"
  72. mpres.mpGeophysicalLineThicknessF = 2.

  73. #箭头设置
  74. vcres.vcMinFracLengthF            = 0.35         # Increase length of
  75. vcres.vcMinMagnitudeF             = 0.001         # vectors.
  76. vcres.vcRefLengthF                = 0.045
  77. vcres.vcRefMagnitudeF             = 2.0
  78. vcres.vcGlyphStyle                = 'CurlyVector'

  79. #题目
  80. mpres.tiMainString                = "uv_700(ttest)"

  81. map_plot            = Ngl.map(wks,mpres)
  82. vector_plot         = Ngl.vector(wks,dif_u[::6,::6],dif_v[::6,::6],vcres)
  83. Ngl.overlay(map_plot,vector_plot)
  84. Ngl.draw(map_plot)

  85. #标记通过检验的位置
  86. mres                = Ngl.Resources()
  87. mres.gsMarkerIndex  = 16
  88. mres.gsMarkerSizeF  = 0.002
  89. mres.gsMarkerColor  = 'black'

  90. Ngl.polymarker(wks,map_plot,lon1,lat1,mres)

  91. Ngl.frame(wks)
复制代码

这个是画出来的图,打点的是过检验的地方。

这个是画出来的图,打点的是过检验的地方。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-8-5 11:13:59 | 显示全部楼层

回帖奖励 +2 金钱

风场是矢量,包括u、v,这里只对v做t检验了,是不是不太合适呢?
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2021-4-18 10:36:35 | 显示全部楼层

回帖奖励 +2 金钱

你似乎用的是两总体的t检验,这是检验特殊年和一般年均值差异的。在气象数据统计分析方法(2015)黄嘉佑的附录K9中给出了专门用于检验相邻时段突变的检验统计量
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-18 11:19:04 | 显示全部楼层
灰色节能君 发表于 2021-4-18 10:36
你似乎用的是两总体的t检验,这是检验特殊年和一般年均值差异的。在气象数据统计分析方法(2015)黄嘉佑的附 ...

这个检验方法应该是没问题的,和我一组的一个同学也是根据突变年份做合成分析,就是用的这种t检验,效果很好
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-7-9 18:59:00 | 显示全部楼层

回帖奖励 +2 金钱

感谢楼主大大分享!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-7-15 15:00:59 | 显示全部楼层

回帖奖励 +2 金钱

感谢,正好在找合成分析显著性检验的代码呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-8-30 15:34:57 | 显示全部楼层

回帖奖励 +2 金钱

{:eb502:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-9-4 22:57:58 | 显示全部楼层

回帖奖励 +2 金钱

感谢楼主分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-9-7 23:48:23 | 显示全部楼层

回帖奖励 +2 金钱

后来呢?处理成啥样了,分享一下喽
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-9-8 12:41:37 | 显示全部楼层

回帖奖励 +2 金钱

学习了,谢谢了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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