On Sat, Jul 16, 2011 at 9:35 PM, Peter Maclean <pmaclean2011 at yahoo.com>
wrote:> I am estimating Value at Risk using PerfomanceAnalytics package.
The?variables are stored in a data frame. I formated the data variables using
zoo() and as.xtx() but it is not working. The working example is below.
> ##########################################################
> reguire(zoo)
> require(PerformanceAnalytics)
> reguire(xts)
>
> year<- c(1991-12-30, 1992-12-30, 1993-12-30, 1994-12-30)
> R1 <- c(12, 9, 8, 13)
> R2 <- c(5,2,9, 13)
> d? <- data.frame(cbind(year, R1,R2))
>
Your year object has class numeric, not Date; and therefore the "-" is
being evaluated as subtraction, leaving you with:
year
# [1] 1949 1950 1951 1952
I suspect your real situation is this:
year <- c("1991-12-30", "1992-12-30",
"1993-12-30", "1994-12-30")
R1 <- c(12, 9, 8, 13)
R2 <- c(5,2,9, 13)
d <- data.frame(year, R1,R2)
str(d)
# 'data.frame': 4 obs. of 3 variables:
# $ year: Factor w/ 4 levels "1991-12-30","1992-12-30",..: 1
2 3 4
# $ R1 : num 12 9 8 13
# $ R2 : num 5 2 9 13
Note that the year column still needs to be converted to a Date class.
d$year <- as.Date(d$year)
Now the xts constructor will work.
x <- xts(d[,-1], order.by=d$year, frequency=1)
> d<- zoo(d,year)
> VaR(d)
> #Error in checkData(R, method = "xts", ...)
>
> #When I use
> d <- as.xts(d,order.by =year, frequency = 1)
>
> #Error in xts(coredata(x), order.by = order.by, frequency = frequency,? :
> ?# order.by requires an appropriate time-based object
>
>
> Peter Maclean
> Department of Economics
> UDSM
>
Best,
--
Joshua Ulrich | FOSS Trading: www.fosstrading.com