予測

2017-04-05 16 views
3
は私がデータフレームに読み込ま

予測

ref_date;wings;airfoil;turbines 
2015-03-31;123,22;22,77;99,0 
2015-04-30;123,22;28,77;99,0 
2015-05-31;123,22;22,177;02,0 
2015-06-30;56,288;22,77;99,0 

のような値でCSVを持っている、と

df_agg = aggregate(df$wings, by=list(date=df$ref_date), FUN=mean) 
df_agg['date'] = as.Date(df_agg[['date']], format='%Y-%m-%d') 
tt = xts(df_agg[,c('x')], order.by=df_agg$date) 
で、時系列に変換結果をRのデータフレーム、動物園や実際の日付を

使用

だから私はttxtsオブジェクトを持っています。 forecastパッケージを使用するには、私はtsオブジェクトに変換する必要があるので、私はzooを使用します。

pred = forecast(zoo(tt)) 

df_pred = as.data.frame(pred) 

しかし、日付の列の代わりに数字の配列に結果を得ることができるように、I

zoo(df_pred, as.Date(as.numeric(rownames(df_pred)))) 

でそれをバックに変換する必要があり、今、私は

   Forecast Lo 80 Hi 80 Lo 95 Hi 95 
2015-07-30 12   10  15  11  14 
2015-08-31 13.4  11  15.4 11.2  13 

のような結果を持ってすることなく、同じことを達成する方法はありますデータフレーム、xts、動物園、ts、動物園の間を行き来しますか? Pythonで

、これは

from statsmodels.api import sm 
df = pd.read_csv(file_csv) 
df.index = pd.to_datetime(df.date, format='%Y-%m-%d') 
y_pred = sm.ARIMA(df) 
+0

なぜPythonのパンダにタグが付けられたのですか? Rには[ARIMAメソッド](https://stat.ethz.ch/R-manual/R-devel/library/stats/html/arima.html)が組み込まれています。 – Parfait

+0

Pythonがタグ付けされているのは、Pythonで動作する多くのデータ科学者がRとPythonの例で動作するため、私は質問で達成しようとしていることの理解に役立つからです。 – Ivan

答えて

4

1ようなものになるだろう)、動物園予測パッケージの開発版はas.ts.forecastを持っており、動物園の開発版は、(動物園のバージョン1.8.0になるために)持っています増やしたas.zoo.tsデフォルトでは、頻度が4と12のtsシリーズに対してyearmon/yearqtrが適用されます。これにより、質問のコードをよりコンパクトに書くことができます。予測パッケージにはnon-ts時系列の明示的なサポートがないため、予測用の単純な1行のzooメソッドを定義します。次に、read.zooを使用してデータを読み込みます。最後のノートのデータを使用してこれを自己完結型にするには、text=Linesを使用しますが、実際にはmyfile.datのように置き換えられます。また、read.zooコマンドは、yearmonクラスをインデックスに適用し、平均を使用して集計します。最後にforecastを実行し、出力を動物園のクラスに変換します。このシーケンス全体には1つのコンバージョンのみが含まれており、予測ではTSのみがサポートされるという唯一の理由があります。

library(forecast) 
library(zoo) 

as.zoo.forecast <- function(x, ...) as.zoo(as.ts(x)) 

z <- read.zoo(text = Lines, header = TRUE, sep = ";", dec = ",", 
    FUN = as.yearmon, aggregate = mean) 
f <- forecast(z$wings) 
as.zoo(f) 

これらの新しいパッケージのバージョンがリリースされるまで、上記の前にコードを実行することができます。新しい予測と動物園のパッケージがリリースされた後は、上記のコードだけで十分です。

# taken from development verison of forecast package 
as.ts.forecast <- function(x, ...){ 
    df <- ts(as.matrix(forecast:::as.data.frame.forecast(x))) 
    tsp(df) <- tsp(x$mean) 
    return(df) 
} 

# can use this until devel version of zoo released 
as.zoo.ts <- function(x, ...) { 
    z <- zoo:::as.zoo.ts(x) 
    if (frequency(z) == 4) time(z) <- as.yearqtr(time(z)) 
    if (frequency(z) == 12) time(z) <- as.yearmon(time(z)) 
    z 
} 

2)別の可能性だけでデータを読み取るために動物園を利用し"ts"クラスを使用することであるtsは上記zas.ts.forecastを使用して(上述のように、のdevelのバージョン一旦省略することができます予測PKG)は、現在次のようになります。

tt <- as.ts(z) 
f <- forecast(tt[, "wings"]) 
as.ts(f) 

注:

Lines <- "ref_date;wings;airfoil;turbines 
2015-03-31;123,22;22,77;99,0 
2015-04-30;123,22;28,77;99,0 
2015-05-31;123,22;22,177;02,0 
2015-06-30;56,288;22,77;99,0" 
0:
私たちは、この入力を使用の上
+0

'pandas'という意味のオブジェクトにインデックスを設定する方法はありますか?それで、計算を通して保存することができますか? – Ivan

+0

'forecast'を使用している場合は直接はありません。コンバージョンを隠すラッパー関数を書くことができます。 –

+0

ARIMAを 'forecast'以外の自動選択で行う方がいいですか? – Ivan