爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11477|回复: 3

[求助] 关于风场合成分析的bootstrap检验

[复制链接]

新浪微博达人勋

发表于 2021-11-19 19:03:13 | 显示全部楼层 |阅读模式

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

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

x
想问一下各位大神,想要对厄尔尼诺尼诺前一个夏天,冬天,和第二个夏天的850风场u,v做合成分析,之后用bootstrap来做检验,检验之后发现所有的的结果都会大于bootstrap的低值(ci_l1,ci_l2),也就是全都超过了置信区间,感觉不太对,想请问一下大家。代码里ujjaano表示u分量在夏天的距平,udevelop表示在厄尔尼诺前夏的合成,以此类推。
  1. from scipy import stats
  2. import glob
  3. import math
  4. from tqdm import tqdm
  5. import numpy as np
  6. import pandas as pd
  7. import xarray as xr
  8. import netCDF4 as nc
  9. import datetime
  10. import matplotlib.pyplot as plt
  11. import cartopy.crs as ccrs
  12. from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
  13. import cartopy.feature as cfeature
  14. from scipy.stats import bootstrap

  15. f1 = xr.open_dataset("ujjaano.nc")
  16. f2 = xr.open_dataset("vjjaano.nc")
  17. f3 = xr.open_dataset("udjfano.nc")
  18. f4 = xr.open_dataset("vdjfano.nc")
  19. f5 = xr.open_dataset('onidjf.nc')

  20. ujjaano = f1['u']
  21. vjjaano = f2['v']
  22. udjfano = f3['u']
  23. vdjfano = f4['v']
  24. oni = f5['nino']

  25. u = f1['u']
  26. v = f2['v']
  27. oni = f3['nino']

  28. nino = oni[1:-1]
  29. elnino = nino.where(nino > 0.5)
  30. elnino = elnino.dropna(dim='time')

  31. nino = oni[1:-1]
  32. elnino = nino.where(nino > 0.5)
  33. elnino = elnino.dropna(dim='time')

  34. u_develop = ujjaano.loc[ujjaano.year.isin(elnino.time.dt.year)]
  35. v_develop = vjjaano.loc[vjjaano.year.isin([elnino.time.dt.year])]
  36. u_mature = udjfano.loc[udjfano.year.isin([elnino.time.dt.year + 1])]
  37. v_mature = vdjfano.loc[vdjfano.year.isin([elnino.time.dt.year + 1])]
  38. u_decay = ujjaano.loc[ujjaano.year.isin([elnino.time.dt.year + 1])]
  39. v_decay = vjjaano.loc[vjjaano.year.isin([elnino.time.dt.year + 1])]

  40. u_develop = np.nanmean(u_develop, axis=0)
  41. v_develop = np.nanmean(v_develop, axis=0)
  42. u_mature = np.nanmean(u_mature, axis=0)
  43. v_mature = np.nanmean(v_mature, axis=0)
  44. u_decay = np.nanmean(u_decay, axis=0)
  45. v_decay = np.nanmean(v_decay, axis=0)

  46. ci_l1, ci_u1 = np.zeros((281,441)), np.zeros((281,441))
  47. ci_l2, ci_u2 = np.zeros((281,441)), np.zeros((281,441))
  48. sig1, sig2 = np.zeros((281,441)), np.zeros((281,441))
  49. for i in tqdm(range(281)):
  50. for j in range(441):
  51. res1 = bootstrap((ujjaano[:,i,j],), np.std, confidence_level=0.9,n_resamples=1000)
  52. res2 = bootstrap((vjjaano[:,i,j],), np.std, confidence_level=0.9,n_resamples=1000)
  53. ci_l1[i,j], ci_u1[i,j] = res1.confidence_interval
  54. ci_l2[i,j], ci_u2[i,j] = res2.confidence_interval

  55. sig1 = np.where(np.logical.or(u_develop < ci_l1, u_develop > ci_u1),1,0)
  56. sig2 = np.where(np.logical.or(v_develop < ci_l2, v_develop > ci_u2),1,0)
复制代码


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-12-11 16:29:24 | 显示全部楼层
本帖最后由 SAREbenjamin 于 2021-12-13 12:35 编辑

我也是全都通过了检验(值都落在了置信区间内),不清楚怎么解决。
或许可以考虑Print一下结果,如果与置信区间上下限差别很大的话那应该是前面计算出错了,不然就是Bootstrap检验那部分出错了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-7-18 16:08:03 | 显示全部楼层
请问题主解决了吗?我也遇到这个问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-6 10:45:44 | 显示全部楼层
请问bootstrap是否解决?我对合成差值进行检验也全部过检
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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