時間序列
估計 Carma(2,1) 參數(使用 yuima 包)
我對 R 非常陌生,尤其是對
yuima
軟體包來說,所以我希望有人能夠幫助我。我有一些數據(每日價格)希望通過估計參數來擬合 Carma(2,1) 模型。
假設我有
d <- read.csv("http://chart.yahoo.com/table.csv?s=IBM&g=d&x=.csv")
然後我認為我應該做的是
y <- setYuima(data = setData(d$Close), model = setCarma(2,1)) x <- qmle(y, start = list(a1 = 1, a2 = 1, b0 = 1))
(但有一些其他參數)。
但是,當我這樣做時,我在第一 (
y <- ...
) 行中收到以下錯誤:Error in if (dim(data@original.data)[2] == 1) { : argument is of length zero
我不知道為什麼會這樣,以及
setYuima
函式期望什麼。誰能告訴我該怎麼做?
這只是你如何將時間序列傳遞給yuima的問題。
還有一件事,如果您想估計由布朗運動驅動的 CARMA,最好使用對數價格而不是價格。實際上,在所考慮的模型中,我們將非零機率分配給過程的負值。
試試下面的程式碼
require(yuima) library(xts) d <- read.csv("http://chart.yahoo.com/table.csv?s=IBM&g=d&x=.csv") head(d) tail(d) # data are reversed !!! take care, you need to handle data ibm <- xts(d$Close, order.by=as.Date(d$Date, "%Y-%m-%d")) # this is too long ibm <- ibm[time(ibm)>=as.Date("2007-01-03","%Y-%m-%d"),] # cut as above # delta is very important in estimation set always to 1/252 for daily data mydata3 <- setData(log(ibm)-rep(log(ibm[1]), dim(ibm)[1]),delta=1/252) y3 <- setYuima(data = mydata3, model = setCarma(2,1)) x3 <- qmle(y3, start = list(a1 = 0.1, a2 = 0.1, b0 = 0.1,b1=0.1)) coef(x3)