データの分析第 5 回

変量の変換と標準化

はじめに

測定したデータの調整をしたいときや,複数のデータを比較するときには,変量の変換をしたいことがあります。 変換の方法や影響を学びましょう。

目次

変量の変換

モノを容器に入れて,重量計で量った重さという変量を考えます。 もしデータ収集の際に容器の重さを差し引かなければ,その値には,容器の重さという要らない情報が乗っています。

このような場合には,変量の調整をしたくなります。 この例でいえば,「元の変量\(-\)容器の重さ」という新しい変量が欲しいです。 このような変量の変換について考えましょう。

変量の変換といっても色々考えられますが,ここではシンプルな定数倍と定数の加算を考えます。 元の変量を\(x\),変換後の変量を\(u\)としたとき,この変換はある定数\(a\)\(b\)を用いて次のように表せます。

\( \begin{align} u = ax + b \end{align} \)

変量の変換は,このように何らかの計算をすれば自由に行えます。 次は変換によって何が起こるかを確認しましょう。

変換後の平均と散らばり

変量の変換によって,変量の平均と分散・標準偏差がどう変わるかを確認しておきましょう。 変換前の平均,分散,標準偏差を\(\overline{x}\)\({s_x}^2\)\(s_x\),変換後のそれらを\(\overline{u}\)\({s_u}^2\)\(s_u\)とします。

まず平均は,変量の変換と同じように変化します。 全ての値が\(10\)減れば平均も\(10\)減るし,全ての値が倍になれば平均も倍になるわけです。 これは直感的にもそうですよね。

変量変換後の平均

変量\(x\)\(u = ax + b\)と変換したとき,平均は次のようになる。

\( \begin{align} \overline{u} = a\overline{x} + b \end{align} \)

また分散と標準偏差,つまりデータの散らばりの変化は,次の式のようになります。

変量変換後の散らばり

変量\(x\)\(u = ax + b\)と変換したとき,分散・標準偏差は次のようになる。

\( \begin{align} {s_u}^2 &= a^2{s_x}^2 \\[5pt] s_u &= |a| s_x \end{align} \)

ヒストグラムを考えると理解しやすいです。 全ての値が一定値増減してもヒストグラムが移動するだけで,散らばりは変わりません。 なので\(b\)は散らばりに影響しません。

しかし,全ての値が倍になればヒストグラムは伸縮して,散らばりも倍になります。 そういうわけで\(a\)だけが分散・標準偏差に影響します。 分散は2乗を計算しているので,\(a^2\)がつきます。 実際にこの式が成り立つことは,確認問題で証明することにします。

仮平均

変量の変換を活用すれば,変量の平均を楽な計算で求めることができます。 次のデータの平均を求めてみましょう。

\( \begin{align} 656, \ 672, \ 669, \ 651, \ 662 \end{align} \)

別に普通に計算しても良いのですが,めんどくさそうな計算はなるべく避けたいです。 そこで役立つのが仮平均の考え方です。 平均の値を大体これくらいかなー,と決めておいて,実際の値とのズレを調整する方法です。

とにかく実践してみましょう。 このデータの値は大体\(650\)とちょっとですね。 そこで仮平均を\(650\)として,データの値の\(650\)との差を見てみましょう。

\( \begin{align} 6, \ 22, \ 19, \ 1, \ 12 \end{align} \)

この値の平均は\(12\)です。 これくらいの計算なら楽勝ですね。 というわけで,実際の平均は仮平均から,平均して\(12\)だけズレていたのですから,実際の平均は次のようになります。

\( \begin{align} 650 + 12 = 662 \end{align} \)

仮平均を使えば,このように楽な計算で平均を求めることができます。 元の変量\(x\)から仮平均\(650\)を引いた変量\(u = x - 650\)をつくり,次の計算で元の平均を求めたわけです。

\( \begin{align} \overline{u} &= \overline{x} - 650 \\[5pt] \overline{x} &= \overline{u} + 650 \end{align} \)

標準化

変量の変換は,変量の尺度の調整のためによく使われます。 変量の平均と標準偏差を統一して,複数のデータを比べられるようにするためです。

変量\(x\)の平均を\(\overline{x}\),標準偏差を\(s_x\)としましょう。 このとき,次の新しい変量を考えます。

\( \begin{align} z = \displaystyle\frac{x - \overline{x}}{s_x} \end{align} \)

この変量の平均\(\overline{z}\),標準偏差\(s_z\)は次のようになります。

\( \begin{align} \overline{z} &= \displaystyle\frac{\overline{x} - \overline{x}}{s_x} \\[5pt] &= 0 \\[5pt] s_z &= \left|\displaystyle\frac{1}{s_x}\right|s_x \\[5pt] &= 1 \end{align} \)

このように変量\(x\)からその平均を引き,標準偏差で割ることで,変換後の変量\(z\)は平均\(0\),標準偏差\(1\)の変量になります。 この\(z\)\(x\)標準化といいます。

例えば国語と数学のテストの点数を比べたいとき,そのまま数字の大小で比べることはできませんね。 テストの難易度が均一じゃないからです。 標準化を考えれば,値の尺度を合わせることで,この比較が可能になるわけです。

偏差値

よく聞く偏差値という言葉ですが,今ならその正体を理解できます。 標準化は,変量を平均\(0\),標準偏差\(1\)に調整したものでした。

偏差値も似たようなもので,変量を平均\(50\),標準偏差\(10\)に調整したものです。 標準化よりも親しみやすそうな数に調整しているだけで,標準化と大きくは変わりません。

変量\(x\)の標準化を\(z\),偏差値を\(T\)とすると,これらは次の式で結ばれます。 \(x\)の平均を\(\overline{x}\),標準偏差を\(s_x\)と表します。

\( \begin{align} T &= 10z + 50 \\[5pt] &= 10 \displaystyle\frac{x - \overline{x}}{s_x} + 50 \end{align} \)

一応,偏差値の平均\(\overline{T}\)と標準偏差\(s_T\)を確認しておきましょう。 \(z\)の平均を\(\overline{z}\),標準偏差を\(s_z\)とします。 \(\overline{z} = 0\)\(s_z = 1\)ですね。

\( \begin{align} \overline{T} &= 10\overline{z} + 50 \\[5pt] &= 10 \cdot 0 + 50 \\[5pt] &= 50 \\[5pt] s_T &= |10|s_z \\[5pt] &= 10 \cdot 1 \\[5pt] &= 10 \end{align} \)

ちゃんと狙い通りの平均・標準偏差に調整できていることが分かりますね。

確認問題

定数\(a\)\(b\)を使って,変量\(x\)\(u = ax + b\)と変換したとき,次の(1)~(2)の式が成り立つことを証明してください。 \(x\)の平均,標準偏差をそれぞれ\(\overline{x}\)\(s_x\)と表し,\(u\)のそれらをそれぞれ\(\overline{u}\)\(s_u\)と表すことにします。

  1. \(\overline{u} = a\overline{x} + b\)

  2. \({s_u}^2 = a^2{s_x}^2\)

答え

実際に計算してみるだけですが,文字式の計算に慣れていないと,ゴチャゴチャして混乱するかもしれません。

  1. 変量\(x\)のデータを次のように表します。

    \( \begin{align} x_1, x_2, \cdots , x_n \end{align} \)

    変量の\(u\)への変換によって,データは次のように変換されます。

    \( \begin{align} ax_1 + b, ax_2 + b, \cdots , ax_n + b \end{align} \)

    このデータの総和を計算すると,次のようになります。

    \( \begin{array}{r} ax_1 + b\phantom{n} \\ ax_2 + b\phantom{n} \\ \vdots\phantom{nnb} \\ \underline{+)ax_n + b\phantom{n}} \\ a(x_1 + x_2 + \cdots x_n) + nb \end{array} \)

    \(\overline{u}\)は,この値をデータの大きさ\(n\)で割ったものですから,次のように計算できます。

    \( \begin{align} \overline{u} &= \displaystyle\frac{a(x_1 + x_2 + \cdots x_n) + nb}{n} \\[5pt] &= a\displaystyle\frac{x_1 + x_2 + \cdots x_n}{n} + b \\[5pt] &= a\overline{x} + b \end{align} \)
  2. (1)の結果を利用します。 \(u\)の分散\({s_u}^2\)を計算するには,まず平均\(\overline{u}\)からの偏差の2乗を考える必要があります。 例えばデータの1つめの値は次のようになります。

    \( \begin{align} &\quad(ax_1 + b - \overline{u})^2 \\[5pt] &= \{ax_1 + b - (a\overline{x} + b)\}^2 \\[5pt] &= (ax_1 - a\overline{x})^2 \\[5pt] &= a^2(x_1 - \overline{x})^2 \end{align} \)

    分散はこれらの値の平均ですから,次のように計算できます。

    \( \begin{align} {s_u}^2 &= \displaystyle\frac{a^2(x_1 - \overline{x})^2 + a^2(x_2 - \overline{x})^2 + \cdots + a^2(x_n - \overline{x})^2}{n} \\[5pt] &= a^2\displaystyle\frac{(x_1 - \overline{x})^2 + (x_2 - \overline{x})^2 + \cdots + (x_n - \overline{x})^2}{n} \\[5pt] &= a^2{s_x}^2 \end{align} \)

次の変量\(x\)のデータのついて,(1)~(2)に答えてください。 必要があれば,平方根は電卓を使って小数第2位まで求めてください。

\( \begin{align} 172, \ 164, \ 161, \ 158, \ 170 \end{align} \)
  1. \(x\)の平均と標準偏差を求めてください。

  2. 変量\(u = 2x - 30\)の平均と標準偏差を求めてください。

答え

変量\(x\)の平均を\(\overline{x}\),標準偏差を\(s_x\)と表し,変量\(u\)の平均を\(\overline{u}\),標準偏差を\(s_u\)と表します。 変換後の変量の平均と標準偏差は,元の変量での値を利用して求められます。

  1. まず平均を求めます。 せっかくなので仮平均を\(160\)として計算してみます。 データの値と仮平均の差は次のようになります。

    \( \begin{align} 12, \ 4, \ 1, \ -2, \ 10 \end{align} \)

    この平均は次のように求められます。
    \( \begin{align} \displaystyle\frac{12 + 4 + 1 - 2 + 10}{5} &= \displaystyle\frac{25}{5} \\[5pt] &= 5 \end{align} \)

    したがって,\(\overline{x}\)は次のようになります。

    \( \begin{align} \overline{x} &= 160 + 5 \\[5pt] &= \textcolor{red}{165} \end{align} \)

    次に標準偏差を求めます。 まず偏差を一通り求めておきます。

    データの値 偏差 偏差\(^2\)
    \(172\) \(7\) \(49\)
    \(164\) \(-1\) \(1\)
    \(161\) \(-4\) \(16\)
    \(158\) \(-7\) \(49\)
    \(170\) \(5\) \(25\)

    この値を使って,まず分散を求めます。

    \( \begin{align} {s_x}^2 &= \displaystyle\frac{49 + 1 + 16 + 49 + 25}{5} \\[5pt] &= \displaystyle\frac{140}{5} \\[5pt] &= 28 \end{align} \)

    これで標準偏差を求められます。

    \( \begin{align} s_x &= \sqrt{28} \\[5pt] &= \textcolor{red}{5.29} \end{align} \)
  2. (1)の結果を利用して,まず平均を求めます。

    \( \begin{align} \overline{u} &= 2\overline{x} - 30 \\[5pt] &= 2 \cdot 165 - 30 \\[5pt] &= \textcolor{red}{300} \end{align} \)

    次に標準偏差を求めます。

    \( \begin{align} s_u &= |2|s_x \\[5pt] &= 2\sqrt{28} \\[5pt] &= \textcolor{red}{10.58} \end{align} \)

ある変量\(x\)を変換して,平均を\(m\),標準偏差を\(d\)とする変量\(u\)を作りたいです。 どう変換すれば良いか答えてください。 \(x\)の平均を\(\overline{x}\),標準偏差を\(s_x\)と表します。

答え

偏差値をつくったときと同様に,まず\(x\)の標準化\(z\)を考えます。 標準化は平均\(0\),標準偏差\(1\)ですから,考えやすいですね。

\( \begin{align} z = \displaystyle\frac{x - \overline{x}}{s_x} \end{align} \)

変量の変換の際,定数を加減しても標準偏差は変わりませんが,変量を定数倍すると標準偏差も変わります。 したがって,標準偏差を\(d\)にするためには\(z\)\(d\)倍または\(-d\)倍するしかありません。

\( \begin{align} \pm d z \end{align} \)

\(z\)の平均が\(0\)ですから,この変量の平均は\(0\)です。 あとはこれに\(m\)を加えれば,平均を\(m\)にできます。 もちろん,\(m\)を加えることで標準偏差が\(d\)から変わってしまうことはありません。 つまり,次のような変換により,題意の変量が得られます。

\( \begin{align} u &= \pm dz + m \\[5pt] &= \pm d \displaystyle\frac{x - \overline{x}}{s_x} + m \end{align} \)