Well, if you change the rollapply() function call's by= argument to 1 then
you will have a sliding window analysis. I guess I misunderstood your
original description.
s < rollapply(dz[,1], width=5, by=1, FUN=sd, na.rm=TRUE)
da < merge(dz, s)
Each date in the resulting series will consist of the SD of the labeled
date and the 4 previous. If you need that shifted it should be trivial to
just shift the values and create a new time series with the shifted dates
but values from the rollapply().
Sincerely,
Forrest

Forrest R. Stevens
Ph.D. Candidate, QSE3 IGERT Fellow
Department of Geography
Land Use and Environmental Change Institute
University of Florida
www.clas.ufl.edu/users/forrest
On Sun, Aug 31, 2014 at 12:05 PM, Bhattacharya,Souvik <[log in to unmask]>
wrote:
> Hi Forrest,
>
> Thanks for your suggestions. But this rolling sd computes the sd for the
> rows, 1:5, 6:11, 12:17,....What I want is to calculate the sd for the rows
> 1:5, 2:6, 3:7, likewise
> Thanks
> Souvik
>
>
>
>
> On Sun, 31 Aug 2014 10:25:23 0400, Forrest Stevens wrote:
>
>> I think that rollapply() is actually what you want unless I'm
>> misunderstanding your data structure. For example, this is what I think
>> you're trying to accomplish:
>>
>>
>> require(xts)
>>
>> d < zooreg(rnorm(50), order.by=as.Date(1:50), deltat=1/365)
>>
>> ## Make an irregular time series out of it:
>> di < sample(d, 40)
>>
>> ## This I think approximates the data you have:
>> ds < xts(di)
>> dz < merge(ds, d)
>>
>> s < rollapply(dz[,1], width=5, by=5, FUN=sd, na.rm=TRUE)
>>
>>
>> It would help if you supplied a full sample of your data and the code
>> you're using to prepare it, or at least something like the above. But
>> hopefully this gets you part of the way there.
>>
>> Sincerely,
>> Forrest
>>
>> 
>> Forrest R. Stevens
>> Ph.D. Candidate, QSE3 IGERT Fellow
>> Department of Geography
>> Land Use and Environmental Change Institute
>> University of Florida
>> www.clas.ufl.edu/users/forrest
>>
>>
>> On Sun, Aug 31, 2014 at 7:10 AM, Bhattacharya,Souvik <[log in to unmask]>
>> wrote:
>>
>> Hi Guys,
>>>
>>> I have a time series dataframe which looks like
>>>
>>> 20140205 20140206 20140207 20140212 20140214 20140217
>>> 20140218 20140219 ......
>>> 0.0379 0.0008 0.0352 0.0379 0.0392 0.0173
>>> 0.0360 0.0371
>>>
>>> I want to compute moving standard deviation for every 5th day data from
>>> this list. What I mean is that, I wish to select a sample in the form
>>> such
>>> that sample1[1] = 20140205 0.0379 , sample1[2] =20140212
>>> 0.0379.....and then find the std dev of this sample and then use a
>>> rolling
>>> standard deviation to move on to the next date i.e. sample2[1]
>>> =20140206
>>> 0.0008 , sample2[2] =20140212 0.0379 and find the standard deviation
>>> of
>>> this list and so on. Since day available is irregular, I cannot use
>>> seq(1:l, by = ). In rollapply, the function would take every consecutive
>>> numbers to compute the standard deviation. Is there a way to sample every
>>> 5th day data from this list in an efficient way, or modify the standard
>>> deviation function somehow, to make it select every 5th day data and then
>>> compute the standard deviation on the available data. Any suggestion in
>>> this regard will be highly appreciated.
>>>
>>> Thanks
>>> Souvik
>>>
>>> This list strives to be beginner friendly. However, we still ask that
>>> you
>>> PLEASE do read the posting guide http://www.Rproject.org/
>>> postingguide.html
>>> and provide commented, minimal, selfcontained, reproducible code.
>>>
>>>
>> This list strives to be beginner friendly. However, we still ask that you
>> PLEASE do read the posting guide http://www.Rproject.org/
>> postingguide.html
>> and provide commented, minimal, selfcontained, reproducible code.
>>
>
This list strives to be beginner friendly. However, we still ask that you
PLEASE do read the posting guide http://www.Rproject.org/postingguide.html
and provide commented, minimal, selfcontained, reproducible code.
