jasonjfoster / roll

Fast and efficient computation of rolling and expanding statistics for time-series data.
113 stars 7 forks source link

support for `align`? #38

Open japhir opened 3 years ago

japhir commented 3 years ago

In https://github.com/jjf234/roll/issues/37 you briefly discuss that the package currently only supports zoo's align = "right" option. Are there any plans to support align = "center"? The added value for me would be that this package allows for min_obs, which I couldn't figure out for zoo's implementation.

japhir commented 3 years ago

To clarify: I did find zoo's partial argument, but couldn't get it to work with fill = NA so that I can force it to return a same-length vector which will fit nicely inside my mutate call.

jasonjfoster commented 3 years ago

Thanks for the feedback. I currently don't have plans to support it but we can see whether there's demand or collaborators that want to help.

jangorecki commented 1 year ago

for align left you can reverse your input vector rev, for align center you should be able to achieve it by shifting answer recalculating missing front/tail of the answer

roaldarbol commented 5 days ago

I’d love to see alignment too. :-)

A common use of rolling medians is as a smoothing filter in time series. There it's usually expected that the filter is centered to avoid a time shift. For left, it could just be running the right alignment on the reversed vector, and returning the re-reversed vector as suggested by @jangorecki. For center it could maybe be done simply by shifting the returned vector by width/2?

jangorecki commented 5 days ago

You may want to check https://github.com/Rdatatable/data.table/tree/rollmedian For odd window size only, as in smoothing, there is very good routine in base R runmed although not sure if it will scale with bigger window sizes. In data.table we implemented a novel algorithm for running median, which scales well also for bigger window sizes.