2017-04-07 1 views
0

나는 R 데이터 프레임을 가지고 있으며 여러 롤링 시간 윈도우에 대해 각 열에 대해 자기 상관을 계산해야합니다. 난 dfres 매트릭스 (이 타임 스탬프를 포함하고 있기 때문에 I는 첫 번째 열을 제외)이며, rollapply 패키지 동물원 내지 다음 용액R 데이터 프레임에 대한 롤링 자기 상관 함수

myacf=function(x,lag){ 
return(acf(x, na.action=na.pass,lag.max=lag)[lag]) 
} 

for(i in 2:dim(dfres)[1]){ 
    print(i) 
    col=rollapply(as.numeric(dfres[,i]),width=oneday,FUN=myacf,lag=oneday) 
} 

사용. 다음과 같은 오류가 발생합니다 : plot.window의 오류 (유한 'ylim'값 필요). 어쨌든 플롯은 필요하지 않지만 선택한 래그에서 자기 상관 값 만 가져야합니다. 누군가 나를 도울 수 있습니까? 선택된 지연 값 acf 직렬로 얻어진 각 컬럼에 rollapply 기능을 조작 할 수 lapply 함께

+0

당신이 "그들 중 누구도 작동하지 않습니다"에 정교한 수 없습니다. 이 문제에 대한 조언을 받으려면 게시물을 [최소 재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)로 업데이트하면됩니다. 도움. – OdeToMyFiddle

+0

예를 들어 원본 게시물을 편집했습니다. – lapally

답변

0

. 그런 다음 Reduce을 사용하여 위 단계의 결과를 결합합니다.

이 데모에서는 데이터 세트 edhecPerformanceAnalytics 패키지로 사용했습니다. 은 이에 따라 width 매개 변수를 변경할 수 있습니다.

library("PerformanceAnalytics") 

#load test dataset 
data(edhec,package="PerformanceAnalytics") 

#select subset with fewer columns 
edhec_sub = edhec[,1:5] 

fn_lag_ACF = function(lagValue = x) { 


#for width as 1 year calculate acf for input lagValue for each column 

acfList = lapply(edhec_sub,function(x) { 


TS = rollapply(x, width = 12, 
FUN = function(z) acf(z,na.action=na.pass,lag.max= lagValue,plot=FALSE)$acf[lagValue], 
       by.column = FALSE, align = "right") 
colnames(TS) = colnames(x)    

return(TS) 

}) 

#combine acf output for all columns from above step 
acfMerge = Reduce(function(x,y) merge.xts(x,y), acfList) 

return(acfMerge) 
} 

#test with lagValue = 2 
lag2DF = fn_lag_ACF(lagValue = 2) 

출력 :

head(lag2DF,15) 
#   Convertible.Arbitrage CTA.Global Distressed.Securities Emerging.Markets 
#1997-01-31     NA   NA     NA    NA 
#1997-02-28     NA   NA     NA    NA 
#1997-03-31     NA   NA     NA    NA 
#1997-04-30     NA   NA     NA    NA 
#1997-05-31     NA   NA     NA    NA 
#1997-06-30     NA   NA     NA    NA 
#1997-07-31     NA   NA     NA    NA 
#1997-08-31     NA   NA     NA    NA 
#1997-09-30     NA   NA     NA    NA 
#1997-10-31     NA   NA     NA    NA 
#1997-11-30     NA   NA     NA    NA 
#1997-12-31    0.5560540 -0.3010264   0.02908761  0.3305791 
#1998-01-31    0.5055951 -0.4245876   0.04278214  0.1761287 
#1998-02-28    0.5195872 -0.4298767   0.01375580  0.1605579 
#1998-03-31    0.5070003 -0.4656213   -0.04519778  0.2061610 
#   Equity.Market.Neutral 
#1997-01-31     NA 
#1997-02-28     NA 
#1997-03-31     NA 
#1997-04-30     NA 
#1997-05-31     NA 
#1997-06-30     NA 
#1997-07-31     NA 
#1997-08-31     NA 
#1997-09-30     NA 
#1997-10-31     NA 
#1997-11-30     NA 
#1997-12-31   -0.11842164 
#1998-01-31   -0.05986578 
#1998-02-28   -0.09663855 
#1998-03-31   -0.09680819 
관련 문제