timeseries
使用方法
予測に必要なデータの量は、データの絞り込みやグループ化を行う方法によって変わります。たとえば、非季節性の月間モデルでは 2 つのデータポイントで十分ですが、季節性の月間モデルでは少なくとも 24 データポイント (季節サイクル 2 回分) が必要です。予測するだけの十分なデータがない場合、timeseries はデータ内に null を返します。timeseries にデータが渡されない場合は、空のデータセットが返されます。
構文
1result = timeseries resultSet generate (measure1 as fmeasure1 [, measure2 as fmeasure2...]) with (parameters);measure1、measure2 は、将来の値の予測の対象である基準です。基準はグループ化クエリや単純な値クエリから予測できます。予測値と元の値が一緒に射影されます。前の foreach ステートメントからの列も射影されます。
-
length (必須) 予測するポイント数。たとえば、length が 6 で dateCols 種別の文字列が Y-M の場合、timeseries は 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 の場合、timeseries は最後の期間を計算で使用しません。デフォルトは false です。
最後の期間に不完全なデータが含まれる場合、売上予測の精度を高めるには、このパラメータを true に設定します。たとえば、まだ四半期の途中の場合、このパラメータを true に設定すると、timeseries の売上予測はより正確になります。
-
order (省略可能) データの並び替えで使用する項目を指定します。dateCols を使用しない場合は必須です。デフォルトでは、この項目は昇順で並び替えられます。降順を指定する場合は、order=('Type' desc) のように、desc を使用します。order=('Type' desc, 'Group' asc) のように複数の項目の並べ替えもできます。
たとえば、データに日付列がなく、「Week (週)」という基準列があるとします。order='Week' を使用します。
-
partition (省略可能) は、データをパーティションに分けるために使用する列を指定します。列はディメンションである必要があります。各パーティションで最も正確なアルゴリズムが使用されるように、timeseries の計算はパーティションごとに個別に実行されます。たとえば、あるパーティションのデータに季節変動があり、別のパーティションのデータにはない場合があります。パーティション列は自動的に射影されます。
たとえば、原料の売上データに販売日付、原料の種別、販売重量が含まれるとします。原料の種別ごとに将来の販売重量を予測するには、partition='Type' を使用します。
-
predictionInterval (省略可能) 各データポイントで表示する不確実性、つまり信頼区間を指定します。使用できる値は 80 と 95 です。信頼区間の上限と下限は column_name_low_95 および column_name_high_95 という名前の列で射影されます。
-
model (省略可能) 使用する予測モデルを指定します。指定しない場合、timeseries は各モデルの予測を計算し、ベイズ情報量規準 (BIC) を使用して最適なモデルを選択します。
有効な値は、次のとおりです。- None では、timeseries は、データに最も適したアルゴリズムを選択します
- Additive では、ホルト線形傾向またはホルトウィンターズ法と加法コンポーネントが使用されます。
- Multiplicative では、ホルト線形傾向またはホルトウィンターズ法と乗法コンポーネントが使用されます。
-
seasonality (省略可能) dateCols と一緒に使用して、予測の季節性を指定します。有効な値は、次のとおりです。
- 0 季節性なし
- 2 ~ 24 までの任意の整数
例
seasonality dateCols 季節性の種別 seasonality=4 dateCols="Y-Q" 1 年間に 4 つの四半期があることによる毎年の季節性。 seasonality=12 dateCols="Y-M" 1 年間に 12 個の月があることによる毎年の季節性。 seasonality=7 dateCols="Y-M-D" 1 週間に 7 つの日があることによる毎週の季節性。
ヒント
- 現在、月、四半期、または年の途中ですか? timeseries で現在の期間の不完全なデータを使用しないように、ignoreLast を true に設定することを考慮してください。これにより、予測がより正確になります。
- timeseries がデータを返しませんか? 適切な予測を実行するだけの十分なデータポイントがない場合、timeseries は null を返します。データカテゴリの数を増やしてください。
- timeseries がエラーを返しますか? 日付または時間のギャップが存在する可能性があります。優れた売上予測アルゴリズムのすべてがそうであるように、timeseries には、各パーティション内を含め、ギャップのない連続する一連の日付が必要です。データに日付のギャップがあると思われる場合は、まず fill を使用してください。
例 - 来年訪問する旅行者の数はどの程度になるか?
あなたは小売店チェーンを経営しており、市の旅行者数が売り上げに影響しているとします。来年市を訪れる旅行者の数を予測するには、次のように timeseries を使用します。
1q = load "TouristData";
2q = group q by ('Visit_Year', 'Visit_Month');
3q = foreach q generate 'Visit_Year', 'Visit_Month', sum('NumTourist') as 'sum_NumTourist';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries()
7q = fill q by (dateCols=('Visit_Year','Visit_Month', "Y-M"));
8
9-- Use timeseries() to predict the number of tourists.
10q = timeseries q generate 'sum_NumTourist' as Tourists with (length=12, dateCols=('Visit_Year','Visit_Month', "Y-M"));
11
12q = foreach q generate 'Visit_Year' + "~~~" + 'Visit_Month' as 'Visit_Year~~~Visit_Month', Tourists;時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。結果のグラフには、可能性のある将来の旅行者数が表示されます。

例 - 95% の精度で範囲を予測する
95% の精度で翌年の市の旅行者数を予測するとします。predictionInterval=95 を使用して、旅行者数に 95% の信頼区間を設定します。上限と下限は Tourists_high_95 および Tourists_low_95 の項目で射影されます。
1q = load "TouristData";
2q = group q by ('Visit_Year', 'Visit_Month');
3q = foreach q generate 'Visit_Year', 'Visit_Month', sum('NumTourist') as 'sum_NumTourist';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries()
7q = fill q by (dateCols=('Visit_Year','Visit_Month', "Y-M"));
8
9-- use timeseries() to predict the number of tourists
10q = timeseries q generate 'sum_NumTourist' as 'fTourists' with (length=12, predictionInterval=95, dateCols=('Visit_Year','Visit_Month', "Y-M"));
11q = foreach q generate 'Visit_Year' + "~~~" + 'Visit_Month' as 'Visit_Year~~~Visit_Month', coalesce(sum_NumTourist,fTourists) as 'Tourists', fTourists_high_95, fTourists_low_95;時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。時系列グラフオプションでは、[軸モード] に「単一軸」、[基準 1] に「fTourists_high_95」、[基準 2] に「fTourists_low_95」を選択します。結果のグラフには、可能性のある将来の旅行者数と 95% の信頼区間が表示されます。

例 - 季節性データを予測する
取引先の種別ごとに収益を予測するとします。取引先収益に年間の季節性があることはわかっています。日付を四半期別にグループ化するため、dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q") および seasonality = 4 を指定します。翌年の予測値を表示するには、length=4 を使用して 4 つの四半期を指定します。
1q = load "Account";
2q = group q by ('Date_Sold_Year', 'Date_Sold_Quarter', 'Type');
3q = foreach q generate 'Date_Sold_Year', 'Date_Sold_Quarter', 'Type', sum('Amount') as 'sum_Amount';
4
5-- If your data is missing some dates, use fill() before using timeseries()
6-- Make sure that the dateCols parameter in fill() matches the dateCols parameter in timerseries()
7q = fill q by (dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q"));
8
9-- use timeseries() to predict the amount sold
10q = timeseries q generate 'sum_Amount' as Amount with (partition='Type',length=4, dateCols=('Date_Sold_Year','Date_Sold_Quarter', "Y-Q"), seasonality = 4);
11q = foreach q generate 'Date_Sold_Year' + "~~~" + 'Date_Sold_Quarter' as 'Date_Sold_Year~~~Date_Sold_Quarter','Type', Amount ;時系列グラフを使用し、予測線を設定して、計算された将来のデータを表示します。結果のグラフには、四半期の季節変動を考慮した、可能性のある収益合計が取引先ごとに表示されます。
