<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title><style type="text/css">.felamimail-body-blockquote {margin: 5px 10px 0 3px;padding-left: 10px;border-left: 2px solid #000088;} </style></head><body>Hello All<br><br>I am using the ttest routine on monthly climatology, and plotting only those 
values that are significant to the 95% level but the error i get is <br><br>warning:ttest: encountered 4692 cases where s1 and/or s2 were less than 2. Output set to missing values in these cases<br><br>Upon various searches online i came to understand it means: <br><br>This message just indicates that you have spatial locations in your 
input arrays which have no non-missing values, and the 'ttest' function 
will set the output to missing as well.
<br>Does this mean performing ttest on monthly climatologies or getting the equiv_sample_size is not a good idea?<br><br>In the end my plot doesn't contain any stippling dots for ttest values.<br><br>my coding looks something 
like this:<br><br><br>f= addfile("Total_eva_PI.nc", "r") ;<br>T41    = f->QFLUX(:,:,:)<br>T41@_FillValue = -9.96921e+36                        ; (12,lat,lon) <br>printVarSummary(T41)                 <br>                              <br>aveX    = dim_avg_n_Wrap(T41,0)                      ; (lat,lon)<br>printVarSummary(aveX)                                <br><br>varX = dim_variance_n_Wrap(T41,0)                    ; compute variance the 0th dim<br>printVarSummary(varX)                                ; (lat,lon) <br><br>;=================================================================================<br> yrStrt = 0950<br> yrLast = 1000<br><br>f1 = addfile("Total_eva_9ka.nc", "r") ;<br>TIME1  = f1->time<br>TIME1 = TIME1-31<br><br>  YYYY1   = cd_calendar(TIME1,-1)/100                 ; entire file<br>  iYYYY1  = ind(YYYY1.ge.yrStrt .and. YYYY1.le.yrLast)<br><br>air22   = f1->QFLUX(iYYYY1,:,:)<br>air22@_FillValue = -9.96921e+36   <br>                                    <br>T2M_4 = clmMonLLT(air22(lat|:,lon|:,time|:))            ; monthly climatology<br>printVarSummary(T2M_4)                                  ; (12,lat,lon) <br><br>aveY    = dim_avg_n_Wrap(T2M_4,2)  <br>printVarSummary(aveY)                                   ; (lat,lon)<br><br>varY = dim_variance_n_Wrap(T2M_4,2) ; compute variance<br>printVarSummary(varY)                                   ; (lat,lon) <br><br><br><br><br><br>;================================================================================<br>;equiv_sample_size: Estimates the number of independent values of a series of correlated observations. Specify a critical significance level to test the lag-one auto-correlation coefficien. Use annual means.<br>;(Generally, there is no significant year-to-year autocorrelation of monthly data [e.g. successive Januaries].) So here, xX and sY are scalars indicating the number of years used.<br>;=================================================================================<br>  sigr = 0.05                                        ; critical sig lvl for r<br><br> xEqv = new(dimsizes(aveY),typeof(aveY),aveY@_FillValue)<br>printVarSummary(xEqv)                                 ; (lat,lon) <br><br>  xEqv = equiv_sample_size (T41(lat|:,lon|:,time|:), sigr,0)   <br> copy_VarMeta(aveY,xEqv)<br>printVarSummary(xEqv)                                 ; (lat,lon) <br><br> yEqv = new(dimsizes(aveY),typeof(aveY),aveY@_FillValue)<br>printVarSummary(yEqv)  <br>                              ; (lat,lon) <br>  yEqv = equiv_sample_size (T2M_4(lat|:,lon|:,month|:), sigr,0)<br>copy_VarMeta(aveY,yEqv)<br>printVarSummary(yEqv)                                ; (lat,lon) <br><br>;==================================================================================<br>;Use "ttest" to compute the probabilities  <br>;==================================================================================<br> probt = new(dimsizes(varY),typeof(varY),varY@_FillValue)<br><br>        iflag= False                                 ; population variance similar?<br><br>probt = 100.*(1. -ttest(aveY,varY,xEqv,aveX,varX,yEqv,iflag,False)) ; all areas whose value > 95 are significant<br>;printVarSummary(probt)                             ; (lat,lon) <br><br>copy_VarMeta(varY,probt)<br>printVarSummary(probt)                              ; (lat,lon) <br> printMinMax(probt,0)                               ; min=0.0001486018726404303   max=100<br><br>;====================================================================<br>;calculate the T2M difference <br>;==================================================================== <br>T2diff = new(dimsizes(aveY),typeof(aveY),aveY@_FillValue)<br><br>copy_VarMeta(aveY,T2diff)<br><br>T2diff=aveY-aveX<br><br><br>outfile = addfile("E_9_Diff.nc","c")    ;<br>outfile->T1diff = T2diff<br><br>;====================================================================<br>;Here is a section of my code that draws a color fill plot, and then<br>;overlays contours of statistical significance.<br>;====================================================================<br>  wks = gsn_open_wks("pdf","QFLUX_ttest_9ka_PI99%1")<br><br><br>  res = True<br>  res@cnFillOn             = True                ; turn on color<br>  res@gsnSpreadColors      = True                ; use full colormap<br><br>  res@cnLinesOn            = False               ; turn off contour lines<br><br>  res@cnLevelSelectionMode = "ManualLevels"  ; set manual contour levels<br>  res@cnMinLevelValF       = -4            ; set min contour level<br>  res@cnMaxLevelValF       =  4            ; set max contour level<br>  res@cnLevelSpacingF      =  .5            ; set contour spacing<br><br>  res@gsnDraw              = False           ; Do not draw plot<br>  res@gsnFrame             = False           ; Do not advance frome<br><br>  res@tiMainString         = "QFLUX: 9ka-PI"<br>  res@tiMainOffsetYF          = 0.02   ; Move title up a little<br>  res@gsnCenterString      = " "<br>  res@gsnLeftString        = " "<br>  res@gsnRightString        = " "<br><br>  res@cnRasterModeOn              = True               ; Raster mode shows grid cells<br><br>  res@lbBoxEndCapStyle     = "TriangleBothEnds"        ; Added in NCL V6.4.0<br>  res@lbTitlePosition      = "bottom"              ; title position<br>  res@lbTitleFontHeightF   = .01                ; make title smaller<br>  res@lbTitleDirection     = "Across"             ; title direction<br>  res@lbLabelFontHeightF = 0.01<br><br>  minlat = 30.                          ; min lat to mask<br>  maxlat = 80.                          ; max lat to mask<br>  minlon = -70.                          ; min lon to mask<br>  maxlon =  63.                          ; max lon to mask<br><br>  res@mpProjection = "LambertConformal"            ; choose projection<br><br>;---masked plot<br>  res@gsnAddCyclic = True                ; regional plot<br><br>  res@mpMinLatF = minlat              ; min lat to mask<br>  res@mpMaxLatF = maxlat              ; max lat to mask<br>  res@mpMinLonF = minlon              ; min lon to mask<br>  res@mpMaxLonF = maxlon              ; max lon to mask<br><br>  res@gsnMaskLambertConformal = True                ; turn on lc masking<br><br>  plot = gsn_csm_contour_map(wks,T2diff,res)<br><br>  add_lc_labels(wks,plot,minlat,maxlat,minlon,maxlon) ; attach latitude labels<br><br>;=====================================================================<br>;Second plot resources and overlay onto first<br>;=====================================================================<br>  res2 = True                            ; res2 probability plots<br>  res2@gsnDraw             = False       ; Do not draw plot<br>  res2@gsnFrame            = False       ; Do not advance frome<br><br>  res2@cnLevelSelectionMode = "ExplicitLevels"       ; set explicit cnlev<br>  res2@cnLevels   = (/99./)              ; only have 1 contour level<br>  res2@cnInfoLabelOn       = False<br>  res2@cnLinesOn           = False       ; do not draw contour lines<br>  res2@cnLineLabelsOn      = False       ; do not draw contour labels<br>  res2@cnFillScaleF        = 0.6         ; add extra density<br><br>  res2@gsnRightString            = ""                ; Turn off subtitles<br>  res2@gsnLeftString             = ""                                 <br>  res@gsnAddCyclic                = True             ; add cyclic point<br>  plot2   = gsn_csm_contour(wks,probt(:,:),res2) <br><br>  opt = True                                         ; set up parameters for pattern fill<br>  opt@gsnShadeFillType = "pattern"                   ; specify pattern fill<br>  opt@gsnShadeHigh      = 17                         ; stipple pattern<br>  opt@gsnShadeDotSizeF = 1                           ; make dots larger<br><br>;=====================================Attach the polylines<br>ADD_SHAPEFILE_OUTLINES = True<br>  sname = "Caspian_Basin.shp"<br><br>   pres             = True<br>   pres@gsLineColor = "black"<br>   pres@gsLineThicknessF = 2.0            ; 3x thickness<br>    shp1 = gsn_add_shapefile_polylines(wks,plot,sname,pres) <br>  printVarSummary(shp1)<br>;=====================================<br><br>  plot2   = gsn_contour_shade(plot2,1,99., opt)      ; stipple all areas >= 90  contour       <br>  overlay (plot, plot2)<br><br>  draw (plot)<br>  frame(wks)<br><br>end<br></body></html>