[R-SIG-Finance] disaggregate from monthly to daily time series
josh.m.ulrich at gmail.com
Mon Jul 27 20:32:11 CEST 2009
Here's some code that follows Brian's suggestion.
x <- xts(cumprod(1+rnorm(999)/100),Sys.Date()-999:1)
m <- timeBasedSeq('2006-11/2009-07', 'Date')
mx <- x[m]
M <- merge(mx,x)
mtod.spline <- xts(spline(1:NROW(M),M[,1],n=NROW(M))$y,index(x))
mtod.linear <- xts(approx(1:NROW(M),M[,1],n=NROW(M))$y,index(x))
mtod <- merge(x,mtod.spline,mtod.linear)
On Mon, Jul 27, 2009 at 1:22 PM, Brian G. Peterson<brian at braverock.com> wrote:
> Well, leaving aside the fact that this seems like a pretty low-utility idea
> (ymmv), na.approx or na.spline will do this if you cbind a monthly series to
> a daily series, and then apply na.approx to the NA's in the (formerly)
> monthly data.
> - Brian
> John P. Burkett wrote:
>> I would like to disaggregate a monthly average (Consumer Price Index) to
>> create a daily time series. The new daily series should be smooth
>> (i.e.--exhibit no unusual jump from the last day of a month to the first day
>> of the next month) and be consistent with the original monthly data
>> (i.e.--the average value of the new series for the days of a month should
>> equal the given value for that month).
>> If all months had 30 days and I were using S+Finmetrics, I would try to
>> create the daily series with a command such as
>> disaggregate(CPI, 30, method="spline", how="mean")
>> where CPI is the monthly data on the Consumer Price Index.
>> The fact that months are of different lengths complicates matters.
>> Suggestions for how to accomplish the disaggregation in R would be greatly
> Brian G. Peterson
> Ph: 773-459-4973
> IM: bgpbraverock
> R-SIG-Finance at stat.math.ethz.ch mailing list
> -- Subscriber-posting only.
> -- If you want to post, subscribe first.
More information about the R-SIG-Finance