2016-01-22 24 views
1

我有一個data.frame如下。這是原來的DFn行ARIMA用法

Min1 Min2 Min3 | Min4 Min5 
1.05 1.01 0.99 | x x 
1.01 0.99 1.05 | x x 
0.99 1.05 1.01 | x x 

Min4Min5每個stock.I這裏有預測值有像行和幾百列的100K。每行代表特定庫存的某個時期(列)的回報(在原始文件中,每行都有自己的ID和其他參數的數量,爲了使分析更容易執行,這些數據在這裏被刪除)。我想爲每隻股票(例如每行)建立一個ARIMA模型,並預測該特定股票的n個值(xMin4Min5)。

所以,我需要獲得幫助,讓一切都在一個循環或類似的東西。目前,我使用如下代碼:需要

Y <- DF[1,] 
arima1 <- arima(Y, order = c(1,0,1)) 
pred1 <- predict(arima1 , n.ahead=2) 
pred2 <- as.data.frame(pred1$pred) 

預測值被寫入到一些新的DF供以後使用。

+0

你可以用'apply'用'MARGIN = 1' – akrun

+0

請問新的預測值(行1,2,...,N )被寫入DF而不會相互覆蓋?例如。應用會在新的DF中創建nrow向量? – Bear

+1

如果示例數據集只有3列,並且最後2個爲了我們的理解而顯示,那麼t(do.call(cbind,apply(DF,1,FUN)= function(Y){arima1 < - arima(Y, order = c(1,0,1)); pred1 < - predict(arima1,n.ahead = 2); pred2 < - as.data.frame(pred1 $ pred) })))' – akrun

回答

2

apply換行換行時,它被強制爲matrix類。從那裏,你可以創建在需要時可以附加一個數據幀:

as.data.frame(t(apply(df, 1, function(Y) { 
    arima1 <- arima(Y, order = c(1,0,1)) 
    predict(arima1 , n.ahead=2)$pred 
    } 
))) 
#   V1  V2 
# 1 1.0308173 1.015321 
# 2 0.9789147 1.031609 
# 3 1.0345989 1.015456 
+1

謝謝,這真的幫了我很多。 – Bear