新たに発売される商品と、過去の新商品1~4について、発売後1日目からの販売個数の推移を表にまとめています。

ここから、今回の新商品の販売開始後1~6日目の推移と最も近いものは過去の新商品1~4のうちどれかを探ります。
そして、その関連性の強さを利用して、今回の新商品の販売開始後7日目以降の販売個数について、予測を行おうとするものです。
アドイン接続後、メニューから「相似法予測」をクリックすると、次のように設定画面が表示されます。

対象データ:
過去のデータの推移に該当する部分、サンプルデータでは青色の部分をマウスでドラッグして範囲選択をします。
なお上のサンプルデータで「商品1」~「商品4」にあたる部分の最大の列数(項目数)は14列以内です。
予測データ:
予測対象となる1列をマウスでドラッグして範囲選択します。
データの方向:
共に行(方向): → 共に列(方向): ↓
設定が済んだら、「開始」ボタンをクリックします。
自動的に新しいシートを追加し、出力結果を表示します。
「中止」ボタンをクリックすると、操作を中止します。
範囲選択をしたデータが、自動的に追加された新たなシートにコピーされます。

そして、相関係数行列(Excelの分析ツール利用)と回帰分析実行結果が表示されます。
今回の新商品と最も相関の強い過去の新商品は、商品4であることがわかります。
この関連の強さを利用して、過去の新商品4の推移を基に、今回の新商品の販売個数の予測を行うことにします。

ここから、商品4の過去の推移を基に、新商品の販売個数を予測するための情報を、回帰分析実行結果の切片と回帰係数から得ます。
この場合は、次の式で新商品の予測を行います。
新商品の個数(予測)= 13.88 + 0.842 × 「商品4」
次の図は、Excelのワークシート上で得られた結果を基に、新商品の販売個数の予測値を当てはめたものです。
<例>7日目: 13.88 + 0.842 × 63個[商品4] = 67個

相似している要素とは、今回の新商品に対して、相関係数の大きい過去の新商品としています。予測は、相関係数の最も大きい項目の単回帰式を利用して行います。
参考書籍:
相似法・相関・回帰分析:
「Excelで学ぶ時系列分析と予測」(オーム社)上田太一郎・監修 ほか
相関・回帰分析:
米谷単著「7日間集中講義!Excelで学ぶ回帰分析入門」(オーム社) ほか
なお本プログラムは、Excelのデータ分析ツールを利用しているので、「データ分析ツール」も併せてアドイン接続させてください。
また分析ツールは、アドイン接続を外す操作をしていなくても、アドイン接続が外れてしまうことがあります。
その場合は、再度アドイン接続を行い、「データ分析ツール」メニューが表示されているかどうかを、確認してください。
データA・B2種類について、数値予測を行います。
それぞれ時系列データであるとご理解ください。
なお基データのデータ個数(ケース数)は、最低3個必要です。

アドイン接続後、メニューから「グレイ予測」をクリックすると、次のように設定画面が表示されます。
データAの場合:

データBの場合:

データの範囲:
データラベルを含まず、基データについてマウスでドラッグして、範囲選択をします。
上のサンプルデータでは、青色に塗られた部分を範囲選択します。
なおデータの個数は最大100個です。
予測出力を3個にする場合、基データが100個あると正常に予測値が出力されないことがあり、99個までにする必要があります。
予測数:
予測を出力させたい個数を半角数字で指定します。指定できるのは1個先・2個先・3個先のいずれかのみです。
データの方向:
行方向: ↓ 列方向: →
設定が済んだら、「開始」ボタンをクリックします。
基データとして範囲選択をした次の位置から、赤色で予測値を出力します。
「中止」ボタンをクリックすると、操作を中止します。
左側は予測値の出力を1個にした場合、右側は予測値の出力を3個にした場合の出力結果です。

このプログラムのグレイ法による予測の考え方は以下の通りです。
データ列=X(i)に対し、以下の定義を行います。
Y(i)=データ列X(i)の累積データ列
B行列として、B(i,1)=-0.5*(Y(i)+Y(i+1)) 、B(i,2)=1を設定
Z(k)=X(k+1)
C行列:Bの転置行列、 D行列:Bの転置行列*B行列
G行列:(C*B)の逆行列
以上の定義から、G*C*Zを計算します。
その結果、Aベクトルが求まりますので、これを a=A(0)、u=A(1)とします。
グレイ法では、累積データの予測値を W(k+1)=(X(1)-u/a)*exp(-a*k)+u/a
と定義しています。
従って、累積データの予測値W を用いて、データ列X(k+1)を予測します。
即ち、X(k+1)=W(k+1)-W(k) が予測値となります。
以上の予測手順を具体的なデータで以下説明します。

となります。次にAベクトルを求めるのに必要なG行列を計算します。
G行列は、Bの転置行列とB行列の乗算で得られるD行列の、逆行列です。

そこで、A=G*C*Zですから、行列Aが次の通り得られます。

最終的な予測値は次の通りです。

参考著書:
「灰色理論による予測と意思決定」(日本理工出版会・刊)
「Excelで学ぶ時系列分析と予測」(オーム社・刊) 上田太一郎・監修
最近隣法単独の予測プログラム: 303 最近隣法予測プログラム
グレイ法予測単独の予測プログラム: 302 グレイ法予測プログラム

アドイン接続後、メニューから「最適手法予測」をクリックすると、次のように設定画面が表示されます。

データの範囲:
予測対象となる基データについてマウスでドラッグして、範囲選択をします。
上のサンプルデータでは、青色に塗られた部分を範囲選択します。
もちろん1列のみでも処理が可能です。
なおデータの個数は最大500個です(拡張版として最大5,000個のバージョンもあります)。項目列数に制限はありません。
複数の項目について同時に予測値を求めたい場合、データ個数は不揃いでも処理が可能になっています。
予測数:
予測を出力させたい個数を半角数字で指定します。指定できるのは1個先・2個先・3個先・4個先のいずれかのみです。
出力開始位置は、最後のデータの次のセルから、自動的に赤色で表示されます。
先頭のラベル:
範囲選択をした基データの先頭にデータラベルを含めて範囲選択をした場合は、「あり」をマウスでクリックして選択します。
グラフ出力:
予測値と同時にグラフを出力させたい場合は、「あり」をマウスでクリックして選択します。
選択手法出力:
予測値を求めるのに利用した予測手法は何かを、予測値と同時に出力する場合は、「あり」をマウスでクリックして選択します。
予測手法は次の要領で出力されます。
new : 最近隣法
opt : 直線予測
gray : グレイ法予測
設定が済んだら、「開始」ボタンをクリックします。
基データとして範囲選択をした次の位置から、赤色で予測値を出力します。
「中止」ボタンをクリックすると、操作を中止します。


まずは基データから直近の1つを取り除いたデータを基に、複数の予測手法を使って予測値を求めます。
その結果と直近のデータを比較し、誤差が最も少ない予測手法を使って、将来の予測を行います。
このような考え方を基に本プログラムでは、次のように処理しています。

直近のデータを1つ取り除いたデータを基に、本プログラムではグレイ法予測・直線予測・最近隣法の3つの予測手法を使って、それぞれの予測値を求めます。
ここで予測値を求めた後、小数点以下の数値の桁を揃える処理を行います。読込んだデータの小数点の位置を抽出し、その桁数に合わせています。
小数点の桁を揃えた後、これらの予測手法の中で、最も直近のデータに近い値を示す予測手法を1つ選択し、将来の予測値を求めます。
なお予測手法の選択は、
グレイ法予測 < 直線予測 < 最近隣法予測
この順に高くなります。
つまり小数点の位置を揃えた結果、直線予測と最近隣法による予測値が同じだった場合は、最近隣法が優先して採用されます。
将来の予測値は、直近のデータの次の行から自動的に赤字で表示されます。
参考書籍:
「データマイニング実践集」(共立出版・刊) 上田太一郎・著
「Excelで学ぶ時系列分析と予測」(オーム社・刊) 上田太一郎・監修
など
「7日間集中講義!Excel統計学入門」(オーム社・刊) 米谷学・著

アドイン接続後、メニューから「最適回帰予測」をクリックすると、次のように設定画面が表示されます。

データの範囲:
データ数は最大500個まで有効です。列数の制限はありません(Excelの制限まで)。
もちろん1列のみでも有効です。
ラベルの有無:
データの範囲で範囲選択をした部分に、データラベルを含んでいる場合は、「あり」をマウスでクリックして選択をします。
データ方向:
行(方向): ↓ 列(方向): →
予測数:
予測を出力させたい個数を半角数字で指定します。指定できるのは1個先・2個先・3個先・4個先のいずれかのみです。
出力は最終データ(直近のデータ)の次から自動的に赤色の文字で出力されます。
グラフ出力:
予測値と共に、グラフを出力させたい場合は、「あり」をマウスでクリックして選択します。
設定が済んだら、「開始」ボタンをクリックします。
基データとして範囲選択をした次の位置から、赤色で予測値を出力します。
「中止」ボタンをクリックすると、操作を中止します。

このプログラムで予測を行う場合の基本的な考え方は、相関係数が最大となるときの(直近のデータからの)データ範囲を選択して予測する方法です。
予測の手順は以下の通りです。
サンプルデータのデータFで説明します。
上のサンプルデータから、「データF」について、相関係数、LIC(線形基準--後述)、回帰分析の切片と係数と、予測値を求めます。
まず1番目のデータから順にを経過日(月・年)のように1・2・3と置き、データとデータ番号との相関係数を求めます。
LICは次の要領で求めます。
LIC: ln(相関係数^2)*n
切片と回帰係数はデータNo.を説明変数(x)、実データ(ここでは「データF」)を被説明変数(目的変数、y)として求めています。
なおそれぞれの指標は、直近から1番目までさかのぼったデータについて求め、古いデータから1つずつ減らしてゆきます。
なおデータ個数が2個の場合だと相関係数は常に1になるので、データの個数が直近から3個になるまで求めます。
データFでは、データ個数が8個あるので、6番目~8番目(直近のデータ)の3個が直近の指標として求めています。

この結果から、LIC・相関係数が最大となるのは、データを全て使用したときです。
予測値は、回帰式に直近のデータの次のデータ番号「9」を代入しています。
10番目(2個先)・11番目(3個先)の予測値を求める場合は、それぞれ10、11を回帰式に代入して求めます。
データDの場合は次のように、No.2~No.7のデータを採用したときの回帰式を採用しています。
予測値は、回帰式に8・9・10……と順に代入しています。


アドイン接続後、メニューから「マハラノビス予測」をクリックすると、次のように設定画面が表示されます。

基準データの行列範囲:
サンプルデータでは「基準データ」に当たる青色の部分をマウスでドラッグして、範囲選択します。
なおデータ行列は最大で、200列(変数)×500行以内です。
予測データの行列範囲:
サンプルデータでは「予測データ」に当たるオレンジ色の部分をマウスでドラッグして、範囲選択します。
なおデータ行列は最大で、200列(変数)×50行以内です。
予測データの行とラベル:
範囲選択をした中にデータラベルを含んでいる場合は、「共にあり」をマウスでクリックして選択します。
出力先:
結果を出力させたい最初のセルをマウスでクリックして、選択します。
図表示:
結果から、併せてグラフを表示させたい場合は、「あり」をマウスでクリックして、選択します。
設定が済んだら、「開始」ボタンをクリックします。
基データとして範囲選択をした次の位置から、赤色で予測値を出力します。
「中止」ボタンをクリックすると、操作を中止します。


処理のポイントは、マハラノビス距離を求めることです。
基準データと予測データそれぞれについて以下の計算をします。まずは基準データについて求めます。
(1)まず基準データを標準化します。

↓標準化した基準データ = (データ-平均値)/標準偏差

(2)標準化した基準データの相関係数行列を求めます。

(3)相関係数行列の逆行列を求めます。

(4)次に示す関係式を使ってマハラノビス距離を計算します【B】。
マハラノビス距離=標準化した基準データ【A】*相関係数行列の逆行列*【A】の転置行列/変数の個数

【B】行列の1行目*【A】の置換行列の乗算を行い、(変数が4のため)結果を4で割ると、 次に示すマハラノビスの距離が得られます。

上の表で、最大値はH項目の1.778です。
従って、このH項目の「1.778」が、外れ値の基準、つまり閾(しきい)値となります。
次に予測データについても同様な計算を行います。
結果は次の通りです。

この表のx2項目のマハラノビス距離は基準閾値より大きいので、外れ値と判断します。
予測用基データの行数(ケース数)は、4行以上必要です。

アドイン接続後、メニューから「最近隣法予測」をクリックすると、次のように設定画面が表示されます。

データの範囲:
データ数は最大500個まで有効です。列数の制限はありません。
もちろん1列のみでも有効です。
データ方向:
行(方向): ↓ 列(方向): →
先頭にラベル:
データの範囲で範囲選択をした部分に、データラベルを含んでいる場合は、「あり」をマウスでクリックして選択をします。
予測数:
予測を出力させたい個数を半角数字で指定します。指定できるのは1個先・2個先・3個先・4個先のいずれかのみです。
出力は最終データ(直近のデータ)の次から自動的に赤色の文字で出力されます。
設定が済んだら、「開始」ボタンをクリックします。
基データとして範囲選択をした次の位置から、赤色で予測値を出力します。
「中止」ボタンをクリックすると、操作を中止します。

最近隣法による予測の基本は、以下の通りです。
サンプルデータの「データB」列で具体的に示します。
与えられたデータから、データ列を後ろに2個ずらしたデータ系列(2区間前)と、後ろに1個ずらしたデータ系列(1区間前)を作ります。
次に「1区間前」の値と「直近から2番目のデータ(3831.75)」の差、「2区間前」と「直近のデータ(4180.32)」の差を、それぞれ2乗して合計した「距離の2乗」を求めます。
「距離の2乗」の平方根を求めた値について逆数を求めます。
この距離の逆数の大きい順に3個選び、これに重み付けをして合計したものを予測値としています。

なお、直線の傾向が表れている場合など、(最近隣法予測を行うのに)特殊な推移を示すデータの場合は、距離の逆数の上位3つではなく、上位2つの合計を採用する場合があります。