[R] Avoiding for Loop for moving average

Joshua Ulrich josh.m.ulrich at gmail.com
Fri Sep 2 18:58:56 CEST 2011


On Fri, Sep 2, 2011 at 11:47 AM, R. Michael Weylandt
<michael.weylandt at gmail.com> wrote:
> Have you looked at SMA/EMA from the TTR package? That's a pretty quick
> implementation.
>
> runmean from caTools is even better for the SMA but I don't think there's an
> easy way to turn that into an EWMA.
>
SMA still calls Fortran code, so that's why it's slower than
caTools::runmean.  I've moved the EMA code to C, so it's about as fast
as it can be.

Noah, use EMA's ratio argument to replicate your for loop.

> Hope this helps,
>
> Michael Weylandt
>

Best,
--
Joshua Ulrich  |  FOSS Trading: www.fosstrading.com



> On Fri, Sep 2, 2011 at 12:43 PM, Noah Silverman <noahsilverman at ucla.edu>wrote:
>
>> Hello,
>>
>> I need to calculate a moving average and an exponentially weighted moving
>> average over a fairly large data set (500K rows).
>>
>> Doing this in a for loop works nicely, but is slow.
>>
>> ewma <- data$col[1]
>> N <- dim(data)[1]
>> for(i in 2:N){
>>        data$ewma <- alpha * data$ewma[i-1] + (1-alpha) * data$value[i]
>> }
>>
>>
>> Since the moving average "accumulates" as we move through the data, I'm not
>> sure on the best/fastest way to do this.
>>
>> Does anyone have any suggestions on how to avoid a loop doing this?
>>
>>
>>
>>
>> --
>> Noah Silverman
>> UCLA Department of Statistics
>> 8117 Math Sciences Building #8208
>> Los Angeles, CA 90095
>>
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list