1
require(quantmod)
require(TTR)
require(PerformanceAnalytics)

tckr<-"^GSPC"

start<-"1986-12-31"
end<- format(Sys.Date(),"%Y-%m-%d") # yyyy-mm-dd

getSymbols(tckr, from=start, to=end)
US10yRate<-getSymbols("DGS10",src="FRED",auto.assign=FALSE,from=start, to=end)

US10yRate<-to.daily(US10yRate)[,1]

#running 25 day correlation 
correlationSPand10y<-runCor(US10yRate[,1],GSPC[1:12789,2],n=25)

このコードはTimelyPortfolioブログからのものです。runCorの最後の行でエラーが発生します。その理由は、US10yRateの観測数がGSPCの観測数と異なるためです。US10yRateの日付は連続していません(1990-01-02、1990-01-05など)。US10yRateの日付に基づいてGSPCをサブセット化し、互いに一致できるようにします。この操作は、SQLでのマージとまったく同じです。Rのxtsオブジェクトでこれをどのように処理できますか?

ありがとう!

4

2 に答える 2

1

GSPC具体的には行数を見てください。

> dim(GSPC)
[1] 6612    6

> GSPC[1:12789,2]
Error in `[.xts`(GSPC, 1:12789, 2) : subscript out of bounds

 U <- US10yRate[index(US10yRate) %in% index(GSPC),1]
 G <- GSPC[index(GSPC) %in% index(US10yRate), 2]
 dim(U)
 #  [1] 6552    1
 dim(G)
 #  [1] 6552    1
于 2013-03-24T18:45:56.337 に答える
1

最初にそれらをマージして、両方の行数が同じであることを確認できます。

dat <- merge(US10yRate[, 1], GSPC[, 2], all=FALSE)
# or,
# dat <- na.locf(merge(US10yRate[, 1], GSPC[, 2]))

correlationSPand10y <- runCor(dat[, 1], dat[, 2], n=25)
于 2013-03-24T18:57:12.587 に答える