[Thread Prev][Thread Next][Index]
Re: [ferret_users] Details on using @AVE function correctly
Hi Steve,
Sorry....I forgot to mention that there is a FAQ related to
what we discussed, about @AVE and grid box weighting. Here is the link :
http://www.ferret.noaa.gov/Ferret/FAQ/analysis/regridding_with_ave.html
Let the @AVE do the weighted stuff. Since we have other methods to
find a non-weighted mean, it is ok i think. But finding a "weighted
mean" is more difficult with the sort of "tricks" we have seen earlier.
So let @AVE have its own identity.....
Regards,
Jaison
On Mon, 16 Oct 2006 guimond@coaps.fsu.edu wrote:
> Hi Jaison,
> Thank you for your response. This is a very nice review of the @AVE
> functions and something I think should be added to the documentation.
> It is not obvious how the grid box weights are computed from what is
> given and one could easily trust the values when in fact they would be
> wrong. I will post this response to the group. So, basically using
> the calendar format (i.e. var[t=02-JAN-2001:05-JAN-2001@AVE]) of @AVE
> will ALWAYS underestimate the mean because of the 0.50 weight on each
> end. I think another way to get at the correct method would be to:
>
> let new_var = var[t=02-JAN-2001:05-JAN-2001]
>
> let new_var_mean = new_var[t=@AVE]
>
> This computes the mean over all the grid cells in range by removing the
> values from the rest of the data.
>
>
> Any idea why @AVE was created like this?
>
>
> Thanks again,
>
> Steve
>
>
> Quoting Jaison Kurian <jaison@caos.iisc.ernet.in>:
>
> > Hi Steve,
> > I faced a simular confusion earlier...that time Ansley
> > clarified my doubts.
> >
> > Basically over "co-ordinate axes" ie. X/Y/Z/T, @AVE is weigthed
> > by grid box lenth, based on the specified region. But over "abstract
> > axes or indices" ie. I/J/K/L it is not. Let us see one example.
> >
> > define axis/t=01-JAN-2001:06-JAN-2001:1/units=days/t0=31-DEC-2000 time
> > let var = SIN(t[gt=time])
> > set list/precision=10
> >
> > ! first 3-methods to find ave
> >
> > list var[l=2:5@AVE]
> > list var[t=02-JAN-2001:05-JAN-2001@SUM]/var[t=02-JAN-2001:05-JAN-2001@NGD]
> > list var[t="01-JAN-2001:12":"05-JAN-2001:12"@AVE]
> >
> > ! fourth method to find ave
> >
> > list var[t=02-JAN-2001:05-JAN-2001@AVE]
> >
> > The first 3 list commands will give the same answer, the sum of variable
> > values from 2nd to 5th devided by number of points, ie. 4. But the last one
> > will give a different anwer. Let me explain in detail.
> >
> > The first time point is "01-JAN-2001:00:00"
> > its bounds are "31-DEC-2000:12:00" and "01-JAN-2001:12:00"
> > The second time point is "02-JAN-2001:00:00"
> > its bounds are "01-JAN-2001:12:00" and "02-JAN-2001:12:00"
> >
> > Hence when you are specifying as the starting T for an average
> > operation as "02-JAN-2001",only half of the grid box comes after
> > this time (ie. from "02-JAN-2001:00:00" to "02-JAN-2001:12:00")
> > hence this value gets only 0.5 weightage..similar is the case
> > with the value on "05-JAN-2001". So, the average
> >
> > var[t=02-JAN-2001:05-JAN-2001@AVE]
> >
> > will be computed as
> >
> > (var[t=02-JAN-2001]*0.5+var[t=03-JAN-2001]*1+var[t=04-JAN-2001]*1+
> > var[t=05-JAN-2001]*0.5)/3
> >
> > This problem is overcome by specifying exact grid boundaries in method
> > 3 above. In method 2 a combination of @SUM and @NGD has been used. Since
> > @SUM is a non-weighted calculation, this will give the answer without
> > any problems like method 4 above.
> >
> > Back to your question
> > ---------------------
> > So what should a proper method for simple mean ? Any of first 3 methods
> > from above example. Then you may ask, how to make it easier with the
> > time specified on calendar format : here is the trick
> >
> > let l1 = L[gt=var,t=02-JAN-2001]
> > let l2 = L[gt=var,t=05-JAN-2001]
> > list var[l=`l1`:`l2`@AVE]
> >
> > Hope this helps,
> >
> > Regards,
> >
> > Jaison
> >
> > On Mon, 16 Oct 2006 guimond@coaps.fsu.edu wrote:
> >
> >> Hi Jaison,
> >> I decided to e-mail you separatley about this question and then I
> >> will post the responses to the group. I have computed some means and I
> >> am questioning how ferret goes about them. Specifically, I have
> >> computed the time mean of a var between two endpoints, call them t1 and
> >> t2:
> >>
> >> let mean1 = var[t=`t1`:`t2`@AVE]
> >>
> >> According to the FERRET users guide, this will be the mean over the
> >> "exact" region or from gridpoint to gridpoint, correct? Now if I do
> >> something like this:
> >>
> >> let mean2 = var[l=10:15@AVE], using time steps instead of time values.
> >>
> >> I will get a different answer because this method averages from
> >> gridcell to gridcell and not gridpoint to gridpoint, correct?
> >>
> >> I am confused on what is the more accurate depiction of the mean here.
> >> I want to average from one single time point, t1, to another time
> >> point, t2. This is why I used the formula for mean1. Is this correct
> >> for simple means?
> >>
> >> Thanks for your help,
> >> Steve Guimond
> >>
> >> ----------------------------------------------------------------
> >>
> >>
> >
> >
>
>
>
> ----------------------------------------------------------------
>
>
[Thread Prev][Thread Next][Index]
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Contact Us | Privacy Policy | Disclaimer | Accessibility Statement