2014-06-23 4 views
1

나는 장착 데이터회귀 분석을 수행 한 후 적합한 데이터에 대해 xts 형식을 보존하려면 어떻게해야합니까?

> inputfit <- lm(y_t ~ y_tminus1 
        + cpi_t + cpi_tminus1 + 
        m1_t + m1_tminus1 + 
        ip_t + ip_tminus1, data = RegData) 


> class(RegData) 
[1] "xts" "zoo" 
class(fitted(inputfit)) 
[1] "numeric" 

lm() 보존 "TS"형식 XTS 형식의 시계열 데이터에 대한 회귀 분석을했지만 "XTS"형식에 대해 동일한 작업을 수행하지 않습니다. 왜 그런가요? 이 문제를 어떻게 극복 할 수 있습니까? 이미 패키지를 사용할 수 있습니까?

다른 옵션은 적합 데이터를 xts로 강요하지만 그 중 하나를 수행하는 방법을 모른다는 것입니다. 맞는 데이터는 다음과 같습니다.

> head(fitted(inputfit)) 
Aug 2001 Sep 2001 Oct 2001 Nov 2001 Dec 2001 Jan 2002 
3.534743 3.285140 2.598543 2.271459 1.902562 1.712419 

어떻게이 데이터를 xts 형식으로 강요 할 수 있습니까?

편집 1 : 여기 그것을 재현 할 수 있도록 코드입니다 : 내 테스트에서

require("Quandl") 
library("zoo") 

fromDate = "2001-01-01" 
toDate = "2013-12-31" 

## Macroeconomic Data 

CPI_Data = Quandl("FRED/CPIAUCSL", start_date = fromDate, end_date = toDate, type = "xts") 
IP_Data = Quandl("FRED/INDPRO", start_date = fromDate, end_date = toDate, type = "xts") 
M1_Data = Quandl("FRED/M1SL", start_date = fromDate, end_date = toDate, type = "xts") 

## Yield Curve Data 
# 1 month 
GS1M_Data = Quandl("FRED/GS1M", start_date = fromDate, end_date = toDate, type = "xts") 

# Taking the lag difference of input data 
inputminus1 <- lag(GS1M_Data,1) 
# Taking the log Difference of CPI_Data 
LOGCPI <- (diff(log(CPI_Data), 1)) 
#Taking the Lag difference of log of CPI_Data 
CPIminus1 <- lag(LOGCPI,1) 
#Taking the log Difference of M1_Data 
LOGM1 <- (diff(log(M1_Data), 1)) 
#Taking the Lag difference of log of M1_Data 
M1minus1 <- lag(LOGM1,1) 
#Taking the log Difference of IP_Data 
LOGIP <- (diff(log(IP_Data), 1)) 
#Taking the Lag difference of log differenced IP_Data 
IPminus1 <- lag(LOGIP,1) 
#Merging all the above values along with the original input Data 
RegData = merge(GS1M_Data,inputminus1,LOGCPI,CPIminus1,LOGM1,M1minus1,LOGIP,IPminus1) 
#Removing NAs 
RegData = RegData[complete.cases(RegData),] 
colnames(RegData) <- c("y_t", "y_tminus1", 
         "cpi_t", "cpi_tminus1", 
         "m1_t", "m1_tminus1", 
         "ip_t", "ip_tminus1") 
# Regression 
inputfit <- lm(y_t ~ y_tminus1 
       + cpi_t + cpi_tminus1 + 
       m1_t + m1_tminus1 + 
       ip_t + ip_tminus1, data = RegData) 
+0

당신이 이것을 [재현 예 (만들 수 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible- 예) 테스트 데이터를 추가하여? 이렇게하면 가능한 솔루션을 더 쉽게 테스트 할 수 있습니다. – MrFlick

+0

안녕하세요 @ MrFlick, 재현 가능한 코드를 추가했습니다. – user3212376

답변

1

, fitted(inputfit) 내가 tslm를 실행 여부 같은 일 (명명 된 숫자 벡터를) 반환 개체 또는 xts 개체. 따라서 저는 ts 개체가 실제로 반환되고 있다는 것에 회의적입니다.

> head(as.xts(fitted(inputfit), dateFormat="yearmon")) 
      [,1] 
Aug 2001 3.534743 
Sep 2001 3.285140 
Oct 2001 2.598543 
Nov 2001 2.271459 
Dec 2001 1.902562 
Jan 2002 1.712419 

을 그리고 여기가 Quandl에 가입하지 않으려면 사람들이 실행할 수있는 예제 :

에 관계없이, 당신은 as.xts를 사용 XTS 다시 fitted(inputfit)의 출력을 변환 할 수 있습니다.

require(quantmod) 
fromDate = "2001-01-01" 
toDate = "2013-12-31" 

## Macroeconomic Data 
options(getSymbols.auto.assign=FALSE) 
CPI_Data <- getSymbols("CPIAUCSL", from=fromDate, to=toDate, src="FRED") 
IP_Data <- getSymbols("INDPRO", from=fromDate, to=toDate, src="FRED") 
M1_Data <- getSymbols("M1SL", from=fromDate, to=toDate, src="FRED") 
## Yield Curve Data 
GS1M_Data <- getSymbols("GS1M", from=fromDate, to=toDate, src="FRED") 
## Regression data 
RegData <- merge(GS1M_Data, lag(GS1M_Data), 
    diff(log(CPI_Data)), lag(diff(log(CPI_Data))), 
    diff(log(M1_Data)), lag(diff(log(M1_Data))), 
    diff(log(IP_Data)), lag(diff(log(IP_Data)))) 
colnames(RegData) <- c("y_t", "y_tminus1", "cpi_t", "cpi_tminus1", 
         "m1_t", "m1_tminus1", "ip_t", "ip_tminus1") 
RegData <- RegData[complete.cases(RegData),] 

# Regression 
inputfit <- lm(y_t ~ y_tminus1 + cpi_t + cpi_tminus1 + 
    m1_t + m1_tminus1 + ip_t + ip_tminus1, data = RegData) 
+0

고마워요 조슈아! 또한 필자가 설명한 동일한 방법을 사용하여 적합 데이터를 다시 xts로 강제 변환합니다. 지금 당장은 ts 객체가 보존 된 예제가있는 설정에 액세스 할 수 없습니다. 이 예제에서 시계열 데이터는 서로 다릅니다. 설치를 다시 한 번하고 결과를 적절히보고하면 좀 더 시도하고 실험 해 보겠습니다. – user3212376

+0

'options (getSymbols.auto.assign = FALSE)'에주의 할 수밖에 없었습니다. 이 옵션을 더 일찍 알고있는 경우에만'Quandl' 대신에'quantmod'로 질문을 게시했을 것입니다. 다시 한번 감사드립니다. – user3212376

1

dyn 패키지는 동물원 개체 (xts 아님)와 함께 작동합니다. 그림과 같이 그냥 dyn$lm 서문 :

library(dyn) 

# create test data 
set.seed(123) 
z <- zoo(rnorm(10)) 

class(fitted(dyn$lm(z ~ lag(z)))) 
## [1] "zoo"