2012-12-14 42 views
3

我正在使用R中的預測包並創建一個預測對象。R Project和MQL4將R中的預測對象轉換爲Vector

我想將預測轉換爲矢量,以便我可以使用7位封裝並在MQL4代碼中使用R.

實施例預測代碼:

> forecast(fit, h=5) 
    Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 
1057  1.605098 1.602110 1.608087 1.600528 1.609668 
1058  1.605109 1.600891 1.609327 1.598658 1.611561 
1059  1.604868 1.599723 1.610012 1.597000 1.612735 
1060  1.604978 1.599037 1.610919 1.595892 1.614065 
1061  1.605162 1.598511 1.611813 1.594990 1.615335 

我想是能夠以某種方式存儲這些預測,LO 80,喜80等。在一個載體中,從而我可以拉出來的R和進入MQL4使用在一個指標。

我想:

> test1 <- forecast(fit, h=5) 
> test1 
    Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 
1057  1.605098 1.602110 1.608087 1.600528 1.609668 
1058  1.605109 1.600891 1.609327 1.598658 1.611561 
1059  1.604868 1.599723 1.610012 1.597000 1.612735 
1060  1.604978 1.599037 1.610919 1.595892 1.614065 
1061  1.605162 1.598511 1.611813 1.594990 1.615335 

但是,如果我試圖拔出預測我得到:

> test1$Forecast 
NULL 

我辦頭出現的結構爲:

> head(test1) 
$method 
[1] "ARIMA(2,1,2)     " 

$model 
Series: mt4test$close 
ARIMA(2,1,2)      

Coefficients: 
      ar1  ar2  ma1  ma2 
     -0.5030 -0.9910 0.4993 0.9783 
s.e. 0..0089 0.0202 0.0140 

sigma^2 estimated as 5.437e-06: log likelihood=4897.31 
AIC=-9784.61 AICc=-9784.55 BIC=-9759.81 

$level 
[1] 80 95 

$mean 
Time Series: 
Start = 1057 
End = 1061 
Frequency = 1 
[1] 1.605098 1.605109 1.604868 1.604978 1.605162 

$lower 
      80%  95% 
[1,] 1.602110 1.600528 
[2,] 1.600891 1.598658 
[3,] 1.599723 1.597000 
[4,] 1.599037 1.595892 
[5,] 1.598511 1.594990 

$upper 
      80%  95% 
[1,] 1.608087 1.609668 
[2,] 1.609327 1.611561 
[3,] 1.610012 1.612735 
[4,] 1.610919 1.614065 
[5,] 1.611813 1.615335 

任何幫助將不勝感激。這讓我無法擺脫我的修補哈哈。

在此先感謝。

回答

2

功能forecast()產生列表。使用功能str()可以檢查此對象的結構,並使用功能names()查看此列表中每個元素的名稱。

library(forecast) 
fit <- Arima(WWWusage,c(3,1,0)) 
test1<-forecast(fit) 

names(test1) 
[1] "method" "model"  "level"  "mean"  "lower"  "upper"  "x"   
[8] "xname"  "fitted" "residuals" 

#to extract forecast 
test1$mean 

Time Series: 
Start = 101 
End = 110 
Frequency = 1 
[1] 219.6608 219.2299 218.2766 217.3484 216.7633 216.3785 216.0062 215.6326 215.3175 215.0749 

#or as vector 
as.vector(test1$mean) 
[1] 219.6608 219.2299 218.2766 217.3484 216.7633 216.3785 216.0062 215.6326 215.3175 215.0749 

#to extract upper interval 
test1$upper 

      80%  95% 
[1,] 223.5823 225.6582 
[2,] 228.5332 233.4581 
[3,] 232.7151 240.3585 
.... .... .... 
[10,] 260.7719 284.9625 

#to extract lower interval 
test1$lower 

#to extract only 95% upper interval 
test1$upper[,2] 
+0

正是我在尋找的感謝快速和準確的答案! – Jerry