タグチメソッド

T法

T法とは、タグチ流の多変量解析手法の一つであり、予測のための方法です。

T法について細かく見ていきましょう!

T法とは?

用いられる、データタイプは重回帰分析と同じです。

つまり、一つの目的変数と複数の説明変数があり、連続変量を考えています。

重回帰分析との違いは、データ発生の背景にあります。
重回帰分析では、説明変数から目的変数が発生していると考えています。
一方でT法では、目的変数から説明変数が発生していると考えています。

左図:重回帰のモデル(説明変数は独立)、右図:T法のモデル

T法では、「重り」と「秤」のモデルとしてよく知られています。

一つの「重り」を複数の「秤」で測ったときにそれぞれの秤の重要性によって総合して「重り」の重さを推定する方法と考えられています。
秤の重要性はSN比と呼ばれます。

図:重りと秤の図

T法の解析手順

T法による解析の手順は以下の通りです。

  1. 学習データの中から目的変数が中位にある\(m\)個のデータを単位空間とします。学習データから単位空間の平均を引くことでデータの基準化を行います。
    \begin{eqnarray*}
    \bar{x}_{j}&=&\frac{1}{m}\sum_{i=1}^n{x^{unit}_{ij}}, \bar{y}=\frac{1}{m}\sum_{i=1}^n{y^{unit}_{i}}\\
    X_{ij}&=&x^{signal}_{ij}-\bar{x}_{j}, M_{i}=y^{signal}_{i}-\bar{y}\\
    \end{eqnarray*}
  2. 比例定数\(\hat{\beta_j}\)とSN比\(\hat{\eta_j}\)を算出します。
    \begin{eqnarray*}
    \hat{\beta_j}&=&\frac{\sum_{i=1}^lX_{ij}M_i}{r}\\
    \hat{\eta_j}&=&
    \begin{cases}
    \frac{\frac{1}{r}(S_{\beta_j}-V_{e_j})}{V_{e_j}} & (S_{\beta_j}>V_{e_j})\\
    0 & (S_{\beta_j} \leq V_{e_j})
    \end{cases} \\
    r&=&{\sum_{i=1}^lM_{i}^2}\\
    S_{T_j}&=&{\sum_{i=1}^lX_{ij}^2}\\
    S_{\beta_j}&=&\frac{(\sum_{i=1}^lX_{ij}M_i)^2}{r}\\
    S_{e_j}&=&S_{T_j}-S_{\beta_j}\\
    V_{e_j}&=&\frac{S_{e_j}}{l-1}\\
    \end{eqnarray*}
  3. 逆推定をすることで各説明変数に対する目的変数の推定値\(\hat{M}_{ij}\)を求めます。
    $$\hat{M}_{ij}=\frac{X_{ij}}{\hat{\beta_j}}$$
  4. 各説明変数に対する目的変数の推定値\(\hat{M}_{ij}\)をSN比\(\hat{\eta_j}\)によって重み付け総合をして基準化済みの総合推定値\(\hat{M}_{i}\)を算出します。
    \begin{eqnarray*}
    \hat{M}_{i}&=&\frac{1}{\sum_{j=1}^p\hat{\eta}_j}{\sum_{j=1}^p{\hat{\eta}_j\hat{M}_{ij}}}\\
    \end{eqnarray*}
  5. 単位空間の平均を加えることで基準化前の総合推定値\(\hat{y}_{i}\)を求めます。
    \begin{eqnarray*}
    \hat{y}_{i}&=&\frac{1}{\sum_{j=1}^p\hat{\eta}_j}{\sum_{j=1}^p{\hat{\eta}_j\hat{M}_{ij}}}+\bar{y}\\
    \end{eqnarray*}

T法の計算詳細

ここではT法の計算について比例項による変動とSN比の算出の仕方の説明します。
また、比例定数の二乗の推定値の求め方からもう一つのSN比が用いられることがあるのでその紹介をします。

まず、T法のモデル次は次のように式で表されます。
\begin{eqnarray*}
X_{ij}&=&\beta_jM_i+\epsilon_{ij},\epsilon_{ij} \sim N(0,\sigma_j^2)\\
\end{eqnarray*}

T法における比例項による変動\(S_{\beta_j}\)は次のように求めています。
\begin{eqnarray*}
S_{\beta_j}&=&{\sum_{i=1}^l\hat{X}_{ij}^2}\\
&=&{\sum_{i=1}^l{(\hat{\beta}_jM_i)}^2}\\
&=&{\sum_{i=1}^l{\left(\frac{\sum_{t=1}^lX_{tj}M_t}{r}M_i\right)}^2}\\
&=&{\sum_{i=1}^l{\frac{\left({\sum_{t=1}^lX_{tj}M_t}\right)^2}{r^2}{M_i}^2}}\\
&=&\frac{\left({\sum_{t=1}^lX_{tj}M_t}\right)^2}{r^2}{\sum_{i=1}^l{{M_i}^2}}\\
&=&\frac{\left({\sum_{i=1}^lX_{ij}M_i}\right)^2}{r}\\
\end{eqnarray*}
続いてSN比\(\eta_j\)の定義は
\begin{eqnarray*}
\eta_j&=&\frac{\beta_j^2}{\sigma_j^2}
\end{eqnarray*}
であるので、\(\hat{\eta}_j\)は
\begin{eqnarray*}
\hat{\eta}_j&=&\frac{\hat{\beta}_j^2}{\hat{\sigma}_j^2}
\end{eqnarray*}
となります。\(\hat{\sigma}_j^2\)は誤差分散の推定値を表すので\(V_{e_j}\)になります。
そして\(\hat{\beta}_j^2\)は二つの計算方法があります。
一つ目は、\(\hat{\beta}_j\)の二乗つまり\(\beta_j\)の推定値の二乗を用いる方法です。
この場合、\(\hat{\eta}_j\)は
\begin{eqnarray*}
\hat{\eta}_j&=&\frac{\hat{\beta}_j^2}{\hat{\sigma}_j^2}\\
&=&\frac{\left({\frac{\sum_{i=1}^lX_{ij}M_i}{r}}\right)^2}{V_{e_j}}\\
&=&\frac{{\frac{1}{r}}S_{\beta_j}}{V_{e_j}}\\
\end{eqnarray*}
となります。
二つ目は、\(\beta_j^2\)の推定値を用いる(推定値の二乗ではなく二乗の推定値を用いる)方法です。
\(\beta_j^2\)の推定値は\(\beta_j^2\)と\(S_{\beta_j}\)の関係から次のように求めます。
\begin{eqnarray*}
S_{\beta_j}&=&\frac{\left({\sum_{i=1}^lX_{ij}M_i}\right)^2}{r}\\
E[S_{\beta_j}]&=&E\left[\frac{\left({\sum_{i=1}^lX_{ij}M_i}\right)^2}{r}\right]\\
&=&\frac{1}{r}E\left[\left({\sum_{i=1}^lX_{ij}M_i}\right)^2\right]\\
&=&\frac{1}{r}\left(E\left[{\sum_{i=1}^lX_{ij}M_i}\right]^2+V\left[{\sum_{i=1}^lX_{ij}M_i}\right]\right)\\
\end{eqnarray*}
ここで、
\begin{eqnarray*}
E\left[{\sum_{i=1}^lX_{ij}M_i}\right]&=&{\sum_{i=1}^l{E[X_{ij}]}M_i}\\
&=&{\sum_{i=1}^l(\beta_jM_i)M_i}=\beta_j{\sum_{i=1}^lM_i^2}=\beta_jr\\
V\left[{\sum_{i=1}^lX_{ij}M_i}\right]&=&{\sum_{i=1}^l{V[X_{ij}]}M_i^2}\\
&=&{\sum_{i=1}^l{\sigma_j^2}M_i^2}=\sigma_j^2r\\
\end{eqnarray*}
であるので、
\begin{eqnarray*}
E[S_{\beta_j}]&=&\frac{1}{r}\left(E\left[{\sum_{i=1}^lX_{ij}M_i}\right]^2+V\left[{\sum_{i=1}^lX_{ij}M_i}\right]\right)\\
&=&\frac{1}{r}\left((\beta_jr)^2+(\sigma_j^2r)\right)\\
&=&\beta_j^2r+\sigma_j^2\\
\end{eqnarray*}
となります。したがって、
\begin{eqnarray*}
\beta_j^2&=&\frac{1}{r}\left(E[S_{\beta_j}]-\sigma_j^2\right)\\
\hat{\beta}_j^2&=&\frac{1}{r}\left(S_{\beta_j}-V_{e_j}\right)\\
\end{eqnarray*}

この場合、\(\hat{\eta}_j\)は
\begin{eqnarray*}
\hat{\eta}_j&=&\frac{\hat{\beta}_j^2}{\hat{\sigma}_j^2}\\
&=&\frac{\frac{1}{r}\left(S_{\beta_j}-V_{e_j}\right)}{V_{e_j}}\\
\end{eqnarray*}

この二つの違いは式を見れば\(V_{e_j}\)を引くかどうかになっています。
田口玄一氏がT法を考案されたときは二つ目の方法でSN比を算出しています。
一方で、近年の論文では一つ目の方法を用いているものも多いです。
一つ目の方法は場合分けの必要がなく簡便です。
二つ目の方法は\(V_{e_j}\)が\(S_{\beta_j}\)よりも大きい場合にはその項目のSN比は0と定義するので変数選択がされます。

しかし、全てのSN比が0になる場合もありそのときには総合推定値が計算不可能になってしまいます。

結局どちらの方法も\(\eta_j\)の不偏推定量ではないのでどちらが良いかは分かりませんが、僕としては計算が簡便な一つ目の方法をおすすめします。

Pythonを初学者が最短で習得する勉強法

Pythonを使うと様々なことができます。しかしどんなことをやりたいかという明確な目的がないと勉強は捗りません。

Pythonを習得するためのロードマップをまとめましたのでぜひチェックしてみてくださいね!