Thanks Joshua,

I really like the example given in the blog post that Abhijit pointed me to.

Doing it in C++ using the Inline seems like an easy way to get a massive 
improvement in speed without the hassle of writing a package.

I'm working on coding that now.

--
Noah Silverman
UCLA Department of Statistics
8117 Math Sciences Building #8208
Los Angeles, CA 90095

On Sep 2, 2011, at 10:32 AM, Joshua Ulrich wrote:

> On Fri, Sep 2, 2011 at 12:06 PM, Noah Silverman <noahsilver...@ucla.edu> 
> wrote:
>> Joshua,
>> 
>> Thanks for the tip.
>> 
>> I need to "roll my own" code on this.  But perhaps I can borrow some code 
>> from the package you mentioned.
>> 
>> Is the package just performing the loop, but in a faster language?
>> 
> As I said, the function is in C.  You could also use the compiler
> package to compile your pure R function for a 3-4x speedup.
> 
> Best,
> --
> Joshua Ulrich  |  FOSS Trading: www.fosstrading.com
> 
> 
>> 
>> --
>> Noah Silverman
>> UCLA Department of Statistics
>> 8117 Math Sciences Building #8208
>> Los Angeles, CA 90095
>> 
>> On Sep 2, 2011, at 9:58 AM, Joshua Ulrich wrote:
>> 
>>> On Fri, Sep 2, 2011 at 11:47 AM, R. Michael Weylandt
>>> <michael.weyla...@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 
>>>> <noahsilver...@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@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@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@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@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.

Reply via email to