<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>