Hi Ferret users,On Wed, Aug 29, 2018 at 11:57 AM Ryo Furue <furue@xxxxxxxxxx> wrote:Your method utilizes the identitymean{ [a - mean(a)]^2}= mean(a^2) - [mean(a)]^2so that the operation mean() is applied only once in each term. That's elegant.Currently, I need a "running skewness", which I think I can calculate applying your method.For a record, I describe how one can calculate it.To extend Andrew's method, we first need a formula to calculate the third moment without nested applications of mean(). The formula ismean{ [a - mean(a)]^3 }= mean{ a^3 - 3 a^2 mean(a) + 3 a [mean(a)]^2 - [mean(a)]^3 }= mean(a^3) - 3 mean(a^2) mean(a) + 3 mean(a) [mean(a)]^2 - [mean(a)]^3= mean(a^3) - 3 mean(a^2) mean(a) + 2 [mean(a)]^3So, my Ferret code looks like:define symbol avr_ t=@SBX:13let squared = a * alet cubed = a * a * alet mean = a[($avr_)]let mean_squared = squared[($avr_)]let mean_cubed = cubed[($avr_)]let second = mean_squared - mean * meanlet stddev = second^0.5let third = mean_cubed - 3 * mean_squared * mean \+ 2 * (mean^3)let skew = third / (stddev^3)Cheers,Ryo