disaggregate from monthly to daily time series
John,
Here's some code that follows Brian's suggestion.
library(xts)
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)
plot.zoo(mtod)
HTH,
Josh
--
http://www.fosstrading.com
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 appreciated. -John
-- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock
_______________________________________________ R-SIG-Finance at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. -- If you want to post, subscribe first.