arimax
使用方法
arimax は、データポイントを予測するための異なるアルゴリズムを提供する timeseries ステートメントのバリエーションです。複数の変数を取ることができるより一般的なモデルを使用して予測を実行する場合、arimax を使用します。
構文
1result = arimax resultSet generate measure1 as fmeasure1 with (parameters);parameters には、次の値を使用できます。
-
arimaOrder (seasonalOrder が指定されていない場合は必須) ARIMA モデルの次数を指定します。たとえば、arimaOrder=(p,d,q) とします。ここで、p、d、q は整数です。整数値は 0 ~ 5 である必要があります。
-
seasonalOrder (arimaOrder が指定されていない場合は必須) ARIMA モデルの季節性の次数を指定します。たとえば、seasonalOrder=(P,D,Q,s) とします。ここで、P、D、Q は整数、s は周期です。整数値は 0 ~ 5 である必要があります。s の値は 0 または 2 ~ 24 である必要があります。s を 0 にできるのは、P、D、Q もすべて 0 の場合のみです。
-
xreg (省略可能) 外部リグレッサーまたは共通因子。例: xreg=('col1','col2',...)。xreg の値は基準である必要があります。許可される xreg 項目の最大数は 10 です。
-
xregFutures (省略可能) 値配列の対応付けとしての xreg パラメーターの将来のシナリオデータ。各配列内の値の数は、length パラメーターの値と一致する必要があります。各配列値のキーは、xreg 基準の名前です。
arimax では、意味と動作が同じである次の timeseries パラメーターもサポートされます。
-
length (必須) 予測するポイント数。たとえば、length が 6 で dateCols 種別の文字列が Y-M の場合、arimax は 6 か月のデータを予測します。
-
dateCols (省略可能) データのグループ化で使用する日付項目と、日付列種別の文字列。例: dateCols=(CloseDate_Year, CloseDate_Month, "Y-M")。日付列は自動的に射影されます。有効な値は、次のとおりです。
- YearField, MonthField, "Y-M"
- YearField, QuarterField, "Y-Q"
- YearField, "Y"
- YearField, MonthField, DayField "Y-M-D"
- YearField, WeekField "Y-W"
-
ignoreLast (省略可能) true の場合、arimax は最後の期間を計算で使用しません。デフォルトは、false です。
最後の期間に不完全なデータが含まれる場合、売上予測の精度を高めるには、このパラメーターを true に設定します。たとえば、まだ四半期の途中の場合、このパラメーターを true に設定すると、arimax の売上予測はより正確になります。
-
order (省略可能) データの並び替えで使用する項目を指定します。dateCols を使用しない場合は必須です。デフォルトでは、この項目は昇順で並び替えられます。降順を指定する場合は、order=('Type' desc) のように、desc を使用します。order=('Type' desc, 'Group' asc) のように複数の項目の並べ替えもできます。
たとえば、データに日付列がなく、「Week (週)」という基準列があるとします。order='Week' を使用します。
-
partition (省略可能) は、データをパーティションに分けるために使用する列を指定します。列はディメンションである必要があります。各パーティションで最も正確なアルゴリズムが使用されるように、arimax の計算はパーティションごとに個別に実行されます。たとえば、あるパーティションのデータに季節変動があり、別のパーティションのデータにはない場合があります。パーティション列は自動的に射影されます。
たとえば、原料の売上データに販売日付、原料の種別、販売重量が含まれるとします。原料の種別ごとに将来の販売重量を予測するには、partition='Type' を使用します。
-
predictionInterval (省略可能) 各データポイントで表示する不確実性、つまり信頼区間を指定します。使用できる値は 80 と 95 です。信頼区間の上限と下限は column_name_low_95 および column_name_high_95 という名前の列で射影されます。
構文の例
-
arimax を ArimaOrder パラメーターと併用する。
1q = arimax q generate 'Value' as 'fValue' with (length=10, dataCols=('Year', 'Month', 'Day', "Y-M-D"), arimaOrder=(1,0,1)); -
arimax を arimaOrder、xreg、ignoreLast パラメーターと併用する。
1q = arimax q generate 'Value' as 'fValue' with (length=10, dataCols=('Year', 'Month', 'Day', "Y-M-D"), arimaOrder=(1,0,1), xreg=('Price', 'Cost'), ignoreLast=true); - arimax の売上予測で複数の列を使用する。xreg が指定されている場合、複数の列は許可されません。 = arimax q generate 'Value' as 'fValue', 'Value2' as 'fValue2' with (length=10, dataCols=('Year', 'Month', 'Day', "Y-M-D"), arimaOrder=(1,0,1));
-
arimax を arimaOrder、seasonalOrder、xreg パラメーターと併用する。
1q = arimax q generate 'Value' as 'fValue' with (length=10, dataCols=('Year', 'Month', 'Day', "Y-M-D"), arimaOrder=(1,0,1), seasonalOrder=(1,0,1,4), xreg=('Price', 'Cost'));
| seasonality | dateCols | 季節性の種別 |
|---|---|---|
| seasonalOrder=(1,0,1,4) | dateCols=('Year','Quarter',"Y-Q") | 1 年間に 4 つの四半期があることによる毎年の季節性。 |
| seasonalOrder=(1,0,1,12) | dateCols=('Year','Month',"Y-M") | 1 年間に 12 個の月があることによる毎年の季節性。 |
| seasonalOrder=(1,0,1,7) | dateCols=('Year','Month','Day',"Y-M-D") | 1 週間に 7 つの日があることによる毎週の季節性。 |
使用事例
ある都市の 5 年間の月間電力使用量、および対応する各月の平均気温と降水量を含むデータセットがあるとします。

季節性 arimax クエリを使用して今後 12 か月の電力使用量を予測し、クエリにパラメーターを追加して各予測を調整できます。1 つの変数の予測から始めて、次に xreg を追加して多変量にし、最後に xregFutures を追加して what-if 分析を作成します。各視覚化では、[軸モード] を [単一軸] に設定し、[値の表示形式] を [コンパクト数値] に設定し、[X 軸] に予測線を追加したタイムライングラフが使用されます。
季節性クエリ
1q = load "nyc_power_dates3";
2q = group q by (CurrentDate_Year, CurrentDate_Month);
3q = foreach q generate CurrentDate_Year, CurrentDate_Month, sum(power) as power;
4q = arimax q generate power as fPower with (length=12, dateCols=(CurrentDate_Year, CurrentDate_Month, "Y-M"), arimaOrder=(0,1,1), seasonalOrder=(0,1,1,12));
5q = foreach q generate 'CurrentDate_Year' + "~~~" + 'CurrentDate_Month' as 'CurrentDate_Year~~~CurrentDate_Month', fPower;
多変量季節性クエリ
季節性多変量 arimax クエリを使用して、その都市が使用する電力量を予測します。予測値の計算に temperature および precipitation 基準を使用します。
1q = load "nyc_power_dates3";
2q = group q by (CurrentDate_Year, CurrentDate_Month);
3q = foreach q generate CurrentDate_Year, CurrentDate_Month, sum(power) as power, sum(temperature) as temperature, sum(precipitation) as precipitation;
4q = arimax q generate power as fPower with (length=12, dateCols=(CurrentDate_Year, CurrentDate_Month, "Y-M"), xreg=(temperature, precipitation), arimaOrder=(0,1,1), seasonalOrder=(0,1,1,12));
5q = foreach q generate 'CurrentDate_Year' + "~~~" + 'CurrentDate_Month' as 'CurrentDate_Year~~~CurrentDate_Month', fPower, temperature, precipitation;
予測区間を使用した多変量季節性クエリ
季節性多変量 arimax クエリを使用して、その都市が使用する電力量を予測します。予測値の計算に temperature および precipitation 基準を使用します。次に、predictionInterval を追加して、95% の精度で予測を表示します。
1q = load "nyc_power_dates3";
2q = group q by (CurrentDate_Year, CurrentDate_Month);
3q = foreach q generate CurrentDate_Year, CurrentDate_Month, sum(power) as power, sum(temperature) as temperature, sum(precipitation) as precipitation;
4q = arimax q generate power as fPower with (length=12, predictionInterval=95 dateCols=(CurrentDate_Year, CurrentDate_Month, "Y-M"), xreg=(temperature, precipitation), arimaOrder=(0,1,1), seasonalOrder=(0,1,1,12));
5q = foreach q generate 'CurrentDate_Year' + "~~~" + 'CurrentDate_Month' as 'CurrentDate_Year~~~CurrentDate_Month', fPower, fPower_high_95, fPower_low_95;
What-If 分析クエリ
xregFutures パラメーターを使用して xreg 項目に考えられる将来の値を指定し、さまざまな値セットの売上予測項目にどのような影響があるかを確認します。
1q = arimax q generate 'Value' as 'fValue' with (length=6, dateCols=('Year','Month','Day', "Y-M-D"),
2 arimaOrder=(1,0,1), xreg=('col1', 'col2'), xregFutures=(col1: [1.0, 2.0, 3.0, 4.0, 5.0, 6.0], col2: [1.1, 2.2 3.3, 4.4, 5.5, 6.6]));ユーザーは、what-if 分析を実行する xreg 項目の値を渡すことができます。
xregFutures を季節性多変量 arimax クエリに追加して、将来の temperature と precipitation の値を使用してその都市が使用する電力量を予測します。このクエリでは、視覚化の計算値を変更するために、最後の 6 個の temperature の将来値がそれぞれ 10 度ずつ増加しています。
1q = load "nyc_power_dates3";
2q = group q by (CurrentDate_Year, CurrentDate_Month);
3q = foreach q generate CurrentDate_Year, CurrentDate_Month, sum(power) as power, sum(temperature) as temperature, sum(precipitation) as precipitation;
4q = arimax q generate power as fPower with (length=12, dateCols=(CurrentDate_Year, CurrentDate_Month, "Y-M"),
5xreg=(temperature, precipitation), arimaOrder=(0,1,1), seasonalOrder=(0,1,1,12),
6xregFutures=(temperature: [67.09, 58.49, 44.91, 41.89, 34.75, 34.20, 39.18, 61.51, 70.59, 82.13, 89.54, 84.12],
7precipitation: [0.0081, 0.0049, 0.0036, 0.0067, 0.0031, 0.0060, 0.0053, 0.0015, 0.0050, 0.0079, 0.0028, 0.0034]));
8q = foreach q generate 'CurrentDate_Year' + "~~~" + 'CurrentDate_Month' as 'CurrentDate_Year~~~CurrentDate_Month', fPower, temperature, precipitation;