ねこすたっと

ねこの気持ちと統計について悩む筆者の備忘録的ページ。

高校生のためのデータ分析入門 (16):回帰モデルを当てはめてみよう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

回帰モデルは「期待値」と「誤差」でできている

前回、「回帰とは何か」について概要を説明しました。

necostat.hatenablog.jp

話の最後に「回帰分析で当てはめる関数(およびそれにまつわる色々な前提条件)のことを回帰モデルと呼ぶ」と言いました。 もう少し掘り下げて説明すると、回帰モデルは「Xが決まったときのYの期待値」と「期待値からの誤差(ズレ)」で構成されます。

例:気温を使って売り上げを予想する

例えば、あなたの部活は秋の文化祭で、毎年おでんの模擬店を出しているとしましょう。 品切れ・売れ残りをなるべく減らしたいのですが、何人分用意したらいいか決めかねています。 幸いなことに、過去の売り上げなどの記録を先輩が残してくれていたので、予想される気温をもとに売り上げ個数を予想することにしました。

  • 説明変数(X):最高気温
  • 応答変数(Y):おでんの売り上げ数

まずはデータをグラフにしてみました。 気温が低いほど、おでんがよく売れていることがわかります。

天気予報によれば、当日の最高気温は14℃でやや寒いと予想され、回帰直線で14℃のときを見ると100個程度の売り上げがありそうです。 しかし、これはあくまで予測値であり、実際はこれよりも多かったり少なかったりします。 過去のデータでも、最高気温から期待される値(=回帰直線)から、ランダムに上下にずれている、ということが言えそうです。

モデルを3つの数式で表してみる

このことを3つの数式で表してみます。

(1) XによってYの期待値が決まる

 
\begin{aligned}
E[Y_i|X_i] &= \beta_0 + \beta_1 X_i 
\end{aligned}

左辺  E[Y_i|X_i] は、Yの条件付き期待値(conditional expectation)です。 普通の期待値  E[Y_i ] は「観察されたYの平均値」、つまり1つの値ですが、 条件付き期待値  E[Y_i|X_i] は  X_i の値によって変わります。

どのように変わるかは、右辺を見れば分かります。例えば、

  • X=10℃のとき:   E[Y_i|X_i = 10 ] =  \beta_0 + 10\beta_1
  • X=20℃のとき:   E[Y_i|X_i = 20 ] =  \beta_0 + 20\beta_1

といった具合です。

右辺の  \beta_0切片(intercept) \beta_1傾き(slope)と呼ぶのは分かりますね。合わせて係数(coefficient)と呼びます*1

まとめると、1つ目の式は「それぞれのXに対応するYの期待値は、Xの式で決まる」ということを表しています。

(2) 期待値に誤差が加わった値が観察される

次に、2つ目の式です。

 
\begin{aligned}
Y_i &= E[Y_i|X_i] + \varepsilon_i
\end{aligned}

左辺  Y_i は、実際に観察される値です。 1つ目の式が正しければ、 Y_i E[Y_i|X_i ] と近い値になるはずですが、XでYが完璧に言い当てられる状況を除いて、かならずズレがあります。 右辺の  \varepsilon_i *2は、このズレ、つまり誤差を表しています。

回帰直線と観測値のズレは、Xが与えられた状況で考えるので、y軸と平行な方向で測った誤差です。点と直線の距離として、垂線を下ろして測っているわけではないことに注意してください。

(3) 誤差についての仮定

3つ目の式(と言いながら2つ書いてますが)は、誤差に関する仮定(=制約)を表しています。

 
\begin{aligned}
\varepsilon_i &\sim N(0,\sigma^2) \\
\varepsilon_i &\perp \varepsilon_j \\
\end{aligned}

まず、期待値からのズレの方向、つまり期待値より大きくなるか、小さくなるか、はバランスが取れていないとおかしいですよね。例えば、期待値から上方向にばっかりズレるのであれば、そもそも回帰直線をもう少し上に引いたらいいだけのことです。つまり、誤差の中心は0でなくてはなりません。

次に、ズレの大きさです。期待値から大きく外れることがたまにあってもいいけど、少し外れることよりも頻度が大きいようでは、回帰直線がデータを代表しているとは言えません(直線の周りがスカスカになりますね)。誤差は、中心(=0)に近い方が頻度が高く、中心から離れるほど頻度が低くなるような分布である必要があります。 正規分布を使えば、これらの性質を上手く表せます。

2行目の " \perp "は、図形だと垂直の意味で使われると思いますが、ここでは「2つの変数に関連がない・互いに独立である」ということを意味する記号です*3。つまり、それぞれの観測点における誤差に一定の傾向はないということを仮定しています。例えば、「1日目の売り上げで期待値との誤差がプラス(=予想より売れた)とき、翌日の売り上げは必ず期待値よりも下になる」のように、他の観測点における誤差が情報を持ってしまう状況は、この仮定に違反しているということになります。

誤差に関する仮定をまとめると、

  • 誤差の平均が0である
  • 誤差は互いに関連がない(独立性, independentency
  • 誤差が正規分布する(正規性, normality
  • 誤差の分散が均一である(等分散性, homoscedasticity

となります。

4つ目の等分散性は初出ですが、誤差が全て同じ正規分布に従うと仮定しているから、分散が同じになるのも当然の制約です。下の図ではXが大きくなるにつれて直線周囲のバラツキ方が大きくなっていますね。これは等分散性の仮定を満たしていないということになります。

おまけ:どうやって計算するの?

回帰分析の目的は、回帰直線の切片と傾きを推定することです。実際の計算は統計ソフトを使うので、手計算でできるようになる必要は全くないんですが、興味があれば読んでみてください。

前回の記事で、

このズレの総和が1番小さくなるような直線を選べば、みんな納得してくれそうです

と説明しましたね。「ズレ」とは期待値と観測値の差であり、これを残差(residual)と呼びます*4。 データ全体で残差を足し合わせると、プラスマイナスが打ち消しあって0になってしまうので、2乗して和をとります。分散のときと同じですね。

 
\begin{aligned}
\sum_i^n e_{i=1}^2 &= \sum_{i=1}^n \{Y_i - (b_0 + b_1 X_i) \}^2
\end{aligned}

ここで、XとYには実際の観測値が入りますから、未知の変数は b_0, b_1 の2つですね。この2つの変数の関数であることが分かりやすいように、 H(b_0, b_1) と書いて変形していきます。

 
\begin{aligned}
H(b_0, b_1) &= \sum_{i=1}^n \{Y_i - (b_0 + b_1 X_i) \}^2 \\
&= \sum \{ Y_i^2 - 2(b_0 + b_1 X_i)Y_i +(b_0 + b_1 X_i)^2 \} \\
&= \sum \{Y_i^2 - 2Y_i b_0 - 2X_i Y_i b_1 + b_0^2 +2 X_i b_0 b_1  +X_i^2 b_1^2 \} \\
&= \sum Y_i^2 - 2\left(\sum Y_i \right) b_0 - 2\left(\sum X_i Y_i \right) b_1 + n b_0^2 +2 \left(\sum X_i \right)b_0 b_1  + \left(\sum X_i^2 \right) b_1^2 \\
\end{aligned}

最小値を求めたいので微分します。 H(b_0, b_1) が最小となるような  b_0 を求めたい場合は、  b_0 のみ変数とみなして( b_1 は定数と考えて)微分することを、  b_0 について偏微分する、といいます。 H(b_0, b_1) b_0, b_1 のそれぞれで偏微分すると、

 
\begin{aligned}
\frac{\partial H(b_0, b_1)}{\partial b_0} &= - 2\left(\sum Y_i \right)  + 2n b_0 +2 \left(\sum X_i \right) b_1  \\
\frac{\partial H(b_0, b_1)}{\partial b_1} &=  - 2\left(\sum X_i Y_i \right)  +2 \left(\sum X_i \right) b_0  + 2 \left(\sum X_i^2 \right) b_1
\end{aligned}

両方が0になる点が最小値なので、下の連立方程式を解くと H(b_0, b_1) を最小にする  b_0, b_1 が求められます。

 
\begin{aligned}
- 2\left(\sum Y_i \right)  + 2n b_0 +2 \left(\sum X_i \right) b_1 &= 0  \\
- 2\left(\sum X_i Y_i \right)  +2 \left(\sum X_i \right) b_0  + 2 \left(\sum X_i^2 \right) b_1 &= 0
\end{aligned}

頑張って解くと、

 
\begin{aligned}
b_1 &= \frac{n\sum XY - \sum X \sum Y}{n \sum X^2 - (\sum X)^2} \\
&= \frac{\frac{\sum XY}{n} - \left(\frac{\sum X}{n}\right)\left(\frac{\sum Y}{n}\right)}{\frac{\sum X^2}{n} - \left(\frac{\sum X}{n}\right)^2} \\
&= \frac{Cov(X,Y)}{Var(X)}
\end{aligned}

となります(分子が共分散になる説明は割愛します)。 b_0 は、求めた b_1 を使って、

 
\begin{aligned}
b_0 &= \frac{\sum Y}{n} -  \frac{\sum X}{n} b_1
\end{aligned}

で求められます。

おでん売り上げデータでは、

  • n = 20
  • ΣX = 312.3
  • ΣY = 1645
  • ΣX2 = 4920.03
  • ΣY2 = 146891
  • ΣXY = 25128.8

でしたので、これを代入すると、

 
\begin{aligned}
b_1 &= \frac{n\sum XY - \sum X \sum Y}{n \sum X^2 - (\sum X)^2} \\
&\approx -12.8
\end{aligned}

となります。これは回帰直線の傾きが-12.8であることを意味していて、「最高気温が1℃上がると、おでんの売り上げは平均して12.8個減る」ということを意味しています。

この方法は、残差の2乗の和が最小になる係数を求めるので、「最小二乗法(least square method)」と呼ばれています。

おわりに

  • 今回説明したモデルは、線形回帰モデル(linear model)と呼ばれ、応答変数が連続変数の場合に用いられるモデルです。「線形とは何か」は次回説明します。
  • おまけのつもりが計算説明が長くなってしまいました。

*1:分野によっては傾きのことだけを係数と呼ぶこともあるので注意してください。

*2:イプシロンと読みます

*3:垂直と紛らわしいので縦棒を2本にすることがあります

*4:正確に言うと、誤差は「真の値と観測値の差」です。真の値が何かは分からないので、誤差を測定することはできませんので、代わりに期待値との差を使って誤差の様子を推定します。

高校生のためのデータ分析入門 (15):変数の関係性を関数で表そう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (14):2つの変数の間には相関がある? - ねこすたっと

回帰ってなに?

回帰(regression)という用語は、元々は「平均への回帰」(優秀な親から生まれた子は、親よりも平均に近くなる)という遺伝学の現象に由来します*1。その現象を解析する段階で、親の能力と子の能力の関係を関数として捉えたところが、現在の統計学の「回帰」の元になったということでしょう(多分)。

ただ、現在の統計学の「回帰」において、「回って帰る」という意味はありません(少なくとも私は感じません)。回帰とは、変数の関係性を数式で表すこと・関数を当てはめることである、と理解してください。

例えば、40日間の夏休みに、最高気温と学校のアイス自販機の売り上げ個数を記録して、下のような散布図が描けたとしましょう。「暑い日ほどアイスがたくさん売れる」という関係性が見てとれますね。

グラフに赤点線で加えた、気温とアイス売り上げの関係性を代表する線を、回帰直線(regression line)と呼ばれます*2。 下のように数式で書くこともあります。

例:(アイスの売り上げ) = 10 + 5 × (最高気温)

回帰直線を使えば、「明日は最高気温が38℃になりそうだから、アイスは200個くらい仕入れておかないと」のように、予測の参考にすることができそうですね。

相関と回帰の違い

前回、2変数の関係を見る方法として「相関」を説明しました。回帰とはどう違うんでしょうか。 端的に言えば、「相関は2変数が対等、回帰は上流・下流の区別あり」です。

相関係数の計算方法を思い出してください(忘れた場合はこちら)。XとYを入れ替えても、元の式と同じものになりますね。相関関係においては、2つの変数は交換しても同じ結果になります

これに対して、回帰の場合は「X→Y」と表せるような上下関係(どっちが偉いという意味ではない)があります。さっきの例で言えば、「気温 → アイスの売り上げ」は自然ですが、「アイスの売り上げ → 気温」は違和感がありますよね。だって、アイスをいくら売ったって、気温が上がる訳ではないですから*3

「Xが原因でYが結果」と考えられる状況もありますが、必ずしも因果関係を考えているばかりではないですし、仮に2つの変数に関連があったとしても、それをもって因果関係があるとは言い切れないので、ここでは「上流・下流」という表現にしました。統計学の用語を使うと、Xは独立変数(independent variable)とか、説明変数(explanatory variable)と呼ばれます。これに対し、Yは従属変数(dependent variable)とか、応答変数(response variable)などと呼ばれます。

どうやって回帰直線を引いたらいいの?

何となく真ん中を通る感じで線を引いたのでは、同じデータでも人によって引き方が異なりますし、同じ人でも気分によって違う線になるでしょう。「データを代表している線」を、客観的にどのように定義したらいいでしょうか?

データ分析において、全ての観測点がぴったり直線上に並ぶことは、まずありえません。必ずと言っていいほど、直線とズレがあります。このズレの総和が1番小さくなるような直線を選べば、みんな納得してくれそうです*4

おわりに

  • 回帰分析で当てはめる関数(およびそれにまつわる色々な前提条件)のことを回帰モデル、あるいは単にモデル(model)と言います。次回は最も簡単なモデルである線形回帰モデルについて説明します。
  • 回帰分析(回帰モデルを使った解析)はいろんな派生形があり、データ分析の土台と言えます。リバウンドを制するものはゲームを制すように、回帰を制するものはデータ分析を制す!
  • 次回:高校生のためのデータ分析入門 (16):回帰モデルを当てはめてみよう - ねこすたっと

*1:regress = 退行する

*2:ちなみに、北回帰線はthe tropic of Cancer、南回帰線はthe tropic of Capricornと言います。星占いで、夏至(6/22)から蟹座(Cancer)が始まり、冬至(12/22)から山羊座(Capricorn)が始まることに由来します。"The north/south regression line"ではないんですね〜。

*3:アイスの売り上げはすぐに分かるけど、最高気温は分からない状況で、アイスの売り上げをもとにして気温がどれくらいなのか知りたい、という状況なら「アイスの売り上げ → 気温」と書けますが、そんな変な状況はないですよね。

*4:もちろん他の決め方もあります

高校生のためのデータ分析入門 (14):2つの変数の間には相関がある?

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (13):分散を計算しよう - ねこすたっと

相関ってなに?

相関(correlation)は、2つの変数において一方が増えると他方も直線的に増える(あるいは減る)ような関係にあること、と説明されます。 一般的に色々な状況・分野で使われる用語なので、これで間違いではないんですが、統計学においては相関係数で定義される狭い意味の言葉として理解しておく方がいいです(つまり、相関係数をつけずして、「相関がある・ない」みたいな話はしない方がよい、ということ)。

相関係数ってなに?

相関係数(correlation coefficient)は、対をなす2つの連続変数X, Yの相関の強さを表します。 「対をなす」というのはペアを作っている、という意味で、例えば、X=身長、Y=同じ人の体重、のような変数の組です。 ペアを作っているデータなので、XもYも同じ数(n個)だけあります。

相関係数*1は下の式で表されます。

 
\begin{aligned}
r &= \frac{Cov(X,Y)}{\sqrt{Var(X)Var(Y)}} \\
&= \frac{E[(X-E[X])(Y-E[Y])]}{\sqrt{E[(X-E[X]^2)]E[(Y-E[Y]^2)]}} 
\end{aligned}

ここで、分母はXとYの標準偏差の積、分子はXとYの共分散(covariance)です。分散は、ある変数について平均からの距離の2乗を足し合わせたものでした。共分散は、2つの変数について、それぞれの平均からの距離の積を足し合わせたものです。

実際の計算はどうなるでしょうか。 変数X, Yの平均をそれぞれ \bar{X}, \bar{Y} とすると、

 
\begin{aligned}
r &= \frac{\frac{\sum_i^n (X_i - \bar{X})(Y_i - \bar{Y})}{n-1}}{\sqrt{\frac{\sum_i^n (X_i - \bar{X})^2 }{n-1}\frac{\sum_i^n(Y_i - \bar{Y})^2}{n-1}}} \\
&= \frac{\sum_i^n (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum_i^n (X_i - \bar{X})^2 \sum_i^n(Y_i - \bar{Y})^2}}
\end{aligned}

となります。共分散も、「nで割るか・n-1で割るか問題」がありますが、分母と分子に同じものが登場することになるので、どちらを使っても同じ値が計算されます。

相関係数が意味するものを図で考えてみよう

まずは分子である共分散がどのように決まってくるか、見てみましょう。 下の図は、X, Yの平均を中心としたx-y座標平面です。

観測値が右上のエリアに入る場合、 X_i - \bar{X} Y_i - \bar{Y} も正になるので、その積も正になります。左下のエリアに入った場合は、両方とも負になるので、このときも積は正になります。 左上と右下の場合は、 X_i - \bar{X} Y_i - \bar{Y}の一方が正で他方が負になるので、積は負になりますね。

もし、観察されたデータにおいて、積>0のエリア(緑)に入るものばっかりだったら、相関係数は正になりますよね。

一部のデータが積<0のエリア(青)に入ってくると、その分、総和は小さくなります。

さらに積<0のエリア(青)に入るものが増えて均等になってくると、打ち消しあって総和が0近辺になります。

さらにさらに積<0のエリア(青)に入るのが増えると、総和は負になります。

このことから、共分散について次のことが分かります。

  1. 分散と違って、共分散は負になることがある。
  2. データが右肩上がりに並べは正、右肩下がりに並べば負になる。
  3. データが直線的に並べは並ぶほど、共分散の絶対値は大きくなる。

このままだと1つ困ったことがあります。平均からの距離が大きいデータほど、共分散の絶対値は大きくなってしまうので、共分散が大きくても、直線的関係が強いからなのか、データのバラツキが大きいからなのか、判断できないのです。

そこで、それぞれの変数の分散で割ることで、後者の影響を取り除きます。分子と分母の次数を揃えた方がキレイなので、分母は平方根を取ることにしましょう。こうして出来たのが相関係数です。

相関係数を解釈する

共分散を分散で補正した結果、相関係数は-1〜+1の範囲に収まります。

相関係数の正負は、関係性が右肩上がりなのか、右肩下がりなのかを示します。

  • r>0のとき「XとYの間には正の相関関係がある」
  • r<0のとき「XとYの間には負の相関関係がある」
  • r=0のとき「XとYの間には相関関係はない」

相関係数の絶対値は、直線的関係性の強さを示します。慣例的な目安として、

  • | r | = 0.7〜1.0のとき「強い相関関係がある」
  • | r | = 0.4〜0.7のとき「やや相関関係がある」
  • | r | = 0.2〜0.4のとき「弱い相関関係がある」
  • | r | = 0.0〜0.2のとき「ほとんど相関関係はない」

と表現します。 下の図は、Wikipedia - 相関係数からお借りしました。相関係数と実際の散布図でどのように見えるかがよくわかりますね。

相関係数を解釈するときの注意

P値を気にしすぎない

ときどき(というかしばしば)相関係数の横にP値が書かれていることがあります。これは「相関係数が0である」という仮定のもとで手元のデータが得られる確率を表しています。

例えば、r=0.1, P<0.001という結果が得られたとしましょう。P値だけを見れば「統計的有意な相関関係があった」と言いたくなるところですが、相関係数はとても小さく、「ほとんど相関関係はない」と解釈する方が適切です。サンプル数が多くなれば、ほとんどの場合でP値は十分小さくなるので、P値だけで語るのは意味がないんです。

相関係数を使うときは必ず散布図を描くこと!

変数の関係性を見るときには必ずグラフが必要です。数字(=相関係数)だけで判断すると間違いのもと!

下の図は、またWikipedia - 相関係数からお借りしました。

ここに描かれてある散布図は、明らかなパターンがあるにも関わらず、相関係数は全て0です。相関係数で捉えられるのは、直線的な関係のみであることに注意してください。

相関係数は直線の傾きの大きさには関係ない

下の図は、またまたWikipedia - 相関係数からお借りしました。

直線の傾きが急でも緩やかでも、ピッタリ直線上に並べば相関係数は1(または-1)です。 例外は、上の図の真ん中にあるように、水平(あるいは垂直)に並んでいる場合です。この場合は、Y(あるいはX)の分散が0になるので、相関係数の分母が0になってしまい、相関係数が定義できません。

傾きの大きさの話は、この後の回帰分析で説明予定です。

おわりに

*1:相関係数にも色々あって、代表的なPearsonの積率相関係数を示した。

高校生のためのデータ分析入門 (13):分散を計算しよう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (12):期待値を計算しよう - ねこすたっと

分散とは?

期待値の次は分散(variance)です。以前、分布のバラツキの指標として標準偏差を紹介しましたが、計算上の性質は分散の方が便利なので、こちらの方がよく使います。「標準偏差の2乗が分散」というよりも、「分散の正の平方根が標準偏差」といった感じです。

分散で表したいのは、中心(つまり平均)から各観測点までの平均的な距離はどれくらいか、です。これが小さければ、データは平均値の近くにかたまっていることになりますし、大きければバラついてることになりますよね。

では、中心からの距離が-100の観測値と、+50の観測値があった場合、遠いのはどっちでしょう?前者の方が遠いですが、数値だけ比べると+50の方が大きくなってしまいますよね。絶対値を取れば距離を比較できますが、数学の問題でも「絶対値は扱いが面倒だから2乗しろ」と言われたことがあると思います。絶対値はそのままだと扱いが面倒だからです。

以上より、分散V(X)は次のように定義されます。

 
\begin{aligned}
V(X) = E[(X- E[X])^2]
\end{aligned}

日本語で言えば、「分散は平均E(X)からの距離の2乗の期待値である」ですね(数式を見ながら確認してみましょう)。

分散を計算する

例として、次のサイコロの目Xの分散V(X)を計算してみましょう。

まずは平均E[X]ですが、これは前回計算したので割愛します(E[X] = 3.5でしたね)。

分散V(X)は(X-E[X])2の期待値、すなわち(X-E[X])2を出現確率で重みづけした平均なので、

 
\begin{aligned}
V(X) &= \sum_{i=1}^6 \frac{1}{6}(X_i - 3.5)^2 \\
&= \frac{(-2.5)^2 + (-1.5)^2 + (-0.5)^2 + 0.5^2 + 1.5^2 + 2.5^2}{6} \\
&\approx 2.91
\end{aligned}

となります(分数で計算すると  \frac{35}{12} )。

nで割るか、n-1で割るか

「あれ、分散はn-1(=5)で割るんじゃないの?」と思った人もいるかもしれません。確かに以前の記事でそのように説明しました。

例えば、箱から球を6つ取り出して、その数字が1,2,3,4,5,6だったとします。箱の中身全体(=母集団)の様子を、この6個の数字(=サンプル)から推測しなければなりません。このとき、母集団の特性の推定値は、

  • 平均:
     \frac{(1 + 2 + … + 6)}{6} = 3.5
  • 分散:
     \frac{(1-3.5)^2 + (2-3.5)^2 +... + (6-3.5)^2 }{6-1} = 3.5

次に、箱から球を12個取り出して、その数字が1,1,2,2,3,3,4,4,5,5,6,6だったとします。さっきの例のサンプル {1,2,3,4,5,6} が2セットの場合ですね。このとき、母集団の特性の推定値は、

  • 平均:
     \frac{(1 + 1 + 2 +… + 6)}{12} = 3.5
  • 分散:
     \frac{(1-3.5)^2 + (1-3.5)^2 + (2-3.5)^2 +... + (6-3.5)^2 }{12-1} \approx 3.18

となります。平均はそのままですが、分散は下がりました。サンプル数が増えて、母集団がそんなにバラついてないと分かってきたということです。

このままサンプルのセット数sを増やしていくと、推定される分散は下のグラフのようになります。

セット数がすごく大きくなると、最初にn=6で割って求めた分散、約2.91に段々と近づいていくことがわかります。そもそも最初の例では、サイコロの目の確率(=1/6)は理論値であって、サンプル数n(=何回サイコロを振ったか)が与えられていたわけではない、というのが混乱の元かもしれませんね。

実際のデータ分析では「n-1で割る」と覚えておいて差し支えないと思います。

分散の計算が少し簡単になる方法

期待値の計算の性質

まず、期待値の計算に関して、基本的な3つの性質を確認します。 1つ目は、「定数の期待値は定数」です。cを定数とすると、

 
\begin{aligned}
E[c] &= c
\end{aligned}

ということです。定数はその値をとる確率100%だから当たり前ですね。

2つ目は、「ある変数を定数倍したものの期待値は、元の変数の期待値を定数倍したもの」です。

 
\begin{aligned}
E[cX] &= cE[X]
\end{aligned}

計算の過程で定数cで括ったら証明できます。

3つ目は、「2つの変数の和の期待値は、それぞれの変数の期待値の和」です。

 
\begin{aligned}
E[X+Y] &= E[X] + E[Y]
\end{aligned}

これも計算の過程で、XはX、YはYでまとめ直せば証明できます。

どうやって証明するか気になるけど分からないという場合は、下の記事が丁寧に書いてくださっていますので読みましょう。

risalc.info

この3つの性質を使って、分散の計算を砕いていきます。

 
\begin{aligned}
V(X) &= E[(X- E[X])^2] \\
&= E[X^2 - 2XE[X] + E[X]^2 ] \\
&= E[X^2] - 2E[XE[X]] + E[E[X]^2 ] \\
&= E[X^2] - 2E[X]E[X] + E[X]^2 \\
&= E[X^2] -  E[X]^2 \\
\end{aligned}

以下、式変形のヒント:

  • 右辺1行目→2行目:単に展開しただけ
  • 2行目→3行目:各項の期待値の和に分割した
  • 3行目→4行目:E[X]は定数であることに注意(既に1つの値が計算されているでしょ?)。定数だから第3項はそのままE[ ]を外せますね。第2項は定数を前に出してやっただけです。
  • 4行目→5行目:第2項と第3項をまとめるとこうなります。

日本語でまとめると、「分散は、変数の2乗の期待値から、期待値の2乗を引いたもの」となります。 これを使って、さっきのサイコロの目の分散を計算してみましょう。

 E[X^2] を計算します。

 
\begin{aligned}
E[X^2] &= \frac{1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 6^2}{6} \\
&\approx 15.1667
\end{aligned}

E[X] = 3.5なので、

 
\begin{aligned}
V(X) &= E[X^2] -  E[X]^2 \\
&= 15.1667 - 3.5^2 \\
&\approx 2.91
\end{aligned}

となり、冒頭の計算と一致しました。こっちの方法なら暗算でできるかもしれませんね。

おわりに

高校生のためのデータ分析入門 (12):期待値を計算しよう

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (11):比較の質を落とすもの - ねこすたっと

期待値とは?

期待値とは、一言で言えば平均でのことなので、もう計算できる!と言われそうですね。 これまで平均とか分散について適当な説明でごまかしてきましたが、 この先、相関係数や二項分布の話をする前に、一度「期待値・平均・分散」を整理しておきましょう。

期待値(expectation)をもう少し正確に表現すると、ある確率変数が取る値を、その値が出る確率で重みをつけて平均(加重平均, weighted average)を取ったものです。

普通の平均(算術平均, 相加平均という)は、全ての数値を足して、足し合わせた個数で割るので、それぞれの数値が計算結果に影響する度合いは同じです。全ての観察値を対等に扱っていることになります。例えば、「150cm, 160cm, 170cmの平均は?」と問われたら、 (150+160+170)/3 = 160 と計算しますね。特に条件を与えられていないので、3つの値は対等に扱っています。

これに対し、加重平均は観測値によって、計算結果に影響する度合いは変わります。例えば、身長150cmの人が1人、160cmが1人、170cmの人が3人いたとしましょう。このとき、平均身長を160cmとはしないですよね。170という数字は登場回数が多いので、他の2つよりも結果に影響力があって、平均は160よりも大きい方向に引っ張られるはずです。

せっかくなので、きちんと数式で示しておきましょう。変数xの  i 番目に対して割り当てられている重みを  w_i とすると、xの加重平均  M_{wt} は、

 
\begin{aligned}
M_{wt} &= \frac{\sum_i^n w_i x_i}{\sum_i^n w_i}
\end{aligned}

と定義されます。全ての観測値に等しい重みが割り振られている場合は、 w_i = 1 とすると、普通の平均を求める式になりますね(確認してください)。

前の例のように、登場回数が多いものに重みを置く、というのは自然な考え方ですね。期待値は確率を重みにした加重平均です。

離散変数の期待値

Xが離散変数の場合、その期待値 E[X] は次のようになります。

 
\begin{aligned}
E[X] &= \frac{\sum_i^n P(X = x_i) x_i}{\sum_i^n P(X = x_i)} \\
&= \sum_i^n P(X = x_i) x_i
\end{aligned}

変数Xがいずれかの値を取る確率は合計で1になるはずなので、2行目への変形は理解できると思います。

例として、下のように5と6がめっちゃ出やすいインチキサイコロの目の期待値を考えてみましょう。

サイコロの目とその出現確率をかけて、全て足すと、

 
\begin{aligned}
E[X] &= \frac{1}{12}(1+2+3+4) + \frac{1}{3}(5+6) \\
&= 4.5
\end{aligned}

となります。公平なサイコロの目の期待値  (1+2+3+4+5+6)/6 = 3.5 よりも、大きい値になっているのがわかります。

連続変数の期待値

連続変数の場合は、和を取ることは積分を計算することに相当します。確率密度をf(x)とすると、

 
\begin{aligned}
E[X] &= \frac{\int_{-\infty}^{+\infty} f(x) x dx}{\int_{-\infty}^{+\infty} f(x) dx} \\
&= \int_{-\infty}^{+\infty} f(x) x dx
\end{aligned}

となります。確率密度関数の全体の面積は1になるので、分母=1になりますね。

ちょっと記憶が怪しい場合は、下の記事を復習してください。

necostat.hatenablog.jp

例えば、 N(\mu, \sigma^2)に従う連続変数xの平均は、

 
\begin{aligned}
E[x] &= \frac{1}{\sigma\sqrt{2\pi}} \int_{-\infty}^{+\infty}x \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) dx\\
\end{aligned}

で求められます。一応、高校で習う積分で計算できますが、文系数学だと範囲外かもしれません。式変形ができなくても、「こうやって計算するんだな」ってのが分かればOKです。

おまけ

計算できなくていいとは言っても気になると思いますので、

 
\begin{aligned}
E[x] &= \frac{1}{\sigma\sqrt{2\pi}} \int_{-\infty}^{+\infty}x \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) dx\\
\end{aligned}

を頑張って計算してみます。

 
\begin{aligned}
z &= \frac{x - \mu}{\sigma}
\end{aligned}

とおくと、 x = \mu + \sigma z で、 dx = \sigma dz となります。

 
\begin{aligned}
E[x] &= \frac{1}{\sigma\sqrt{2\pi}} \int_{-\infty}^{+\infty}(\mu + \sigma z) \exp\left(-\frac{z^2}{2}\right) \sigma dz\\
&=  \mu \int_{-\infty}^{+\infty} \frac{1}{\sqrt{2\pi}} \exp\left(-\frac{z^2}{2}\right) dz + 
\frac{\sigma}{\sqrt{2}} \int_{-\infty}^{+\infty} z \exp\left(-\frac{z^2}{2}\right) dz \\
\end{aligned}

前半部分は、標準正規分布の確率密度を全範囲に渡って積分すると1になるから、

 
\begin{aligned}
\int_{-\infty}^{+\infty} \frac{1}{\sqrt{2\pi}} \exp\left(-\frac{z^2}{2}\right) dz = 1
\end{aligned}

後半部分は、奇関数を対称な区間で積分すると0になるから、

 
\begin{aligned}
 \int_{-\infty}^{+\infty} z \exp\left(-\frac{z^2}{2}\right) dz  = 0
\end{aligned}

よって、

 
\begin{aligned}
E[x] &= \mu
\end{aligned}

となります。

おわりに

高校生のためのデータ分析入門 (11):比較の質を落とすもの

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (10):サンプル同士を比較する - ねこすたっと

現実世界は複雑だ!

ケーブルテレビを見てると「サプリメントで体重が減った!」というCMがしょっちゅう流れてきますね。 サプリメントと減量の関連をみるためには、サプリメントを飲んだ人と飲まなかった人を比べることが必要だ、という話を前回しました。

necostat.hatenablog.jp

仮に、サプリメントを飲んだ人の方が体重が減ったとしましょう。あなたはすんなり効果を信じて、サプリを購入しますか? おそらく、次のようなことを疑って、効果を懐疑的にとらえるんじゃないでしょうか。

  • サプリを飲んだ人は、他に食事や運動にも気をつけたのでは?
  • サプリ飲んだ人は体重が減った人だけがモニターになってるんじゃないの?
  • サプリを飲む人は空腹時、飲まない人は食後に測ってるんじゃないの?

このような状況だったら、サンプルを比べても意味がないですよね。これらの状況は比較の質を落としている、と言えます。

データ分析における比較の質を、内的妥当性(internal validity)と言います。これに対し、分析結果を他の状況に適用できるかどうか、を外的妥当性(external validity)と言います。

比較の質を落とすもの

比較の質を落とす要因を整理していきましょう。

原因と結果の両方に影響している要因がある

例えば、健康意識の高い人がサプリを飲みたがって応募してきたとしましょう。健康意識が高い人は、食事や運動に気を使うので、体重をコントロールしやすいはずです。

もし、サプリを飲んだ人と飲んでない人で、食事や運動習慣が異なっていれば、結果で見られた差がサプリによるものとは限りませんよね。

図にすると次のようになります。「健康意識」がサプリ(原因)と体重(結果)の両方に影響を与えている様子が分かると思います。

このように、原因と結果の両方に影響を与える要因があると、原因と結果の関係性を適切につかめません。この状況を交絡(confounding)がある、と言います。

測定されている交絡は、データ分析で影響を調整した結果を推定することができます。しかし、測定されていない交絡(未測定交絡)は、データ収集後はどうしようもありません*1

サンプルの選ばれ方が違う

例えば、サプリを配られた人の中で、体重が減ったと回答した人にだけモニター募集の案内が配られていたらどうでしょうか。サプリを飲んでない人は体重の変化に関わらずサンプルとして選ばれるのであれば、サプリを飲んだ集団の方が体重が減っていて当然ですよね。

「サンプルに選ばれる」という変数が、サプリ(原因)と体重(結果)の両方から影響を受けていることになります。図に描くと下のようになります。

このように、原因と結果の両方から影響を受けている要因でサンプルを限定してしまうと、原因と結果の関係性を適切に評価できません。これを選択バイアス(selection bias)と言います*2。サンプルを選ぶときに起こりやすい「ゆがみ・偏り」ということで、このように呼ばれます。

測定の仕方が違う

測定には誤差がつきものですが、その誤差がサプリを飲んだかどうかで変わる場合を考えましょう。このように一定の傾向を持った誤差を、系統誤差と言うんでしたね。

例えば、サプリを飲んだ人には「体重は絶対朝イチの空腹時に測ってください」という注意書きが配られていたとします。おそらく一日で1番軽いときでしょうから、サプリを飲んでいる人たちの方が少し軽めの値を記録されるはずです。

別のケースとして、サプリを飲んでいたかどうかを思い出してもらって記録することを考えます。体重が思うように減った人は、サプリのことをよく覚えているかもしれませんよね。そうすると、体重の減り方が思い出し方に影響することになります。これは、「サプリを飲んだ」という変数を測定する際に、系統誤差が生じていると言えます。

このように、原因や結果の測定誤差が、それぞれ結果や原因に影響を受けていると、原因と結果の関係性を適切に評価できません。これを、情報バイアス(information bias)あるいは測定バイアス(measurement bias)と言います。

系統誤差があっても、グループ間で差がなければバイアスは生じません。体重計がいつも-1kgの値を表示していても、比較には影響ないですよね。

選択バイアスと同じく情報バイアスも、データが収集されてしまった後で対応することは難しいので、計画段階で注意する必要があります。

おわりに

  • 比較の質を落とす要因には、交絡、選択バイアス、情報バイアスがある。
  • バイアスは発生しやすい状況にちなんで名前がついているものもあるが、選択バイアス・情報バイアスのどちらなのかを整理して理解しよう。
    • 病気になった人の方が過去の原因を頑張って思い出そうとする(思い出しバイアス→情報バイアスの一種)
    • 健康に自信がある人が研究に積極的に応募する(ボランティアバイアス→選択バイアスの一種)
  • バイアスの中には、比較の質(内的妥当性)を落とすだけでなく、他の集団に分析結果を当てはめること(外的妥当性)を妨げるものもある
  • 次回:高校生のためのデータ分析入門 (12):期待値を計算しよう - ねこすたっと

*1:データ分析による対処方法がないわけではないですが難しいです

*2:領域によっては、選択バイアス(=研究参加に関する歪み)が交絡(=治療の選択に関する歪み)の意味を含んでいるかもしれません。特に計量経済学を習うときは用語の使われ方を確認しましょう。

高校生のためのデータ分析入門 (10):サンプル同士を比較する

数学が苦手なうちのJKに、将来必要となるかもしれないデータ分析への抵抗感をなくしてもらう目的で記事を書くことにしました。

前回:高校生のためのデータ分析入門 (9):サンプルから推定する(後編) - ねこすたっと

関連を見るには比較が必要

「日照りが続いたから雨乞いをしたら、雨が降った!」なんてことを聞いて、雨乞いの効果を信じる人は現代にはいませんよね。雨乞いをしてなくても雨は降ったんです。 何かの効果や影響を示すためには、したときだけを見るのではなく、しなかったときと比べる必要があります。比較の基準となる「しなかった状態」のことを、対照(control)と呼びます。

  • 対照との差が0より大きい・小さい
  • 対照との比が1より大きい・小さい

を示して初めて、効果があったと言えるのです。

サンプルを通して母集団を比較する

例えば、「文豪は猫好きが多そうだから、猫好きの人は犬好きの人よりも国語が得意なんじゃない?」という疑問を解決したいとします。

世界中から猫好きと犬好きを集めて、国語のテストを受けてもらえば答えが出そうですが、現実的じゃないですね。そこで、自分のクラスの人を猫好きと犬好きに分けて、国語の点数を比べることにしました。

仮に下のような結果だったとしましょう。

  • 猫好き20人:平均80点
  • 犬好き20人:平均75点

確かにこのサンプルにおいては、猫好きの方が国語の点数が高い結果でした。でも、比較したいのはサンプル同士ではありません。これを見て、世界中の猫好きの方が国語が得意と言えるでしょうか?

まずは言いたいことを否定する

猫好きを贔屓することなく、統計学的観点から比べることにしましょう。統計的仮説検定(statistical hypothesis testing)という、背理法を使った手法を使います。流れは次のとおりです。

まず、証明したい仮説とそれを否定した仮説を立てます。

証明したい仮説:
「猫好きは犬好きよりも国語の点数が高い(猫派 ≧ 犬派)」

上を否定する仮説:
「猫好きは犬好きよりも国語の点数が低い(猫派 < 犬派)」

このあとデータを分析して、「データを見る限り、否定したい仮説が正しい可能性は非常に低い」ということができれば、否定した仮説を否定して、元の証明したい仮説が正しい、と主張できるという流れです。

否定する仮説(否定されることを期待している仮説」を帰無仮説(null hypothesis)と言います。無に帰ることを期待している仮説、という意味です。

これに対して、「元々の証明したい仮説」を対立仮説(alternative hypothesis)と言います。証明したいことなのに「対立」というのが変な感じですが、帰無仮説に対立しているからこう呼ばれます。

どうやって帰無仮説の正しさを測るの?

直接、帰無仮説が正しい確率を測定することはできませんが、仮説と手元のデータの矛盾の強さは測ることができます。

例えば、「猫好きは犬好きよりも国語の点数が低い」という仮説が正しいならば、20人ずつのサンプルの平均点は、次のようになるはずです。

  • 猫好き20人:平均70点
  • 犬好き20人:平均80点

母集団の差が僅差であれば、たまたま次のような結果になったとしても、そんなにおかしくはないですよね。

  • 猫好き20人:平均78点
  • 犬好き20人:平均76点

でも、

  • 猫好き20人:平均100点
  • 犬好き20人:平均50点

だったらどうですか? 「猫派 < 犬派」という仮定と、大きく矛盾した結果が得られてしまったと言えるでしょう。 矛盾の程度が大きい場合、データは事実なので、間違っているのは仮説の方です。そもそも「猫好きは犬好きよりも国語の点数が低い」という仮説に無理があった、と考えるのです。

統計的検定の流れをまとめます。

まず、帰無仮説が正しいという仮定のもとで、手元のデータ、あるいはそれよりも極端なデータが発生する確率(P値, P-value)を計算します。計算する方法は、データの種類や構造によって様々であり、〇〇検定と名前がついていますが、今は詳細は覚えなくてもいいです。

P値が前もって決めた基準(例えばP<0.05)よりも小さい場合、帰無仮説は正しくないと判断します(「帰無仮説を棄却する」と言います)。

P値が前もって決めた基準よりも大きい場合は、「帰無仮説は正しくないと判断する根拠に乏しい」として結論を保留します。P値が小さい場合と非対称的ですが、「証拠がないからといって、無実というわけではない」みたいなものです。

P値の大小の基準

P値の大小を判断する基準を、有意水準(significant level)と言います。絶対的な決まりはありませんが、医学界では慣習的に0.05(5%)が用いられることが多いです。

有意水準を小さく(帰無仮説が棄却されにくく)設定すれば、本当は差がないときに間違って差があると判断してしまう可能性は減りますが、本当に差があるのに見逃してしまう可能性は高くなります。ストライクゾーンを厳しく待ちすぎて、見逃し三振しちゃうみたいなものです。

反対に、有意水準を大きく設定すれば、本当は差がないのに間違って差があると判断しやすくなってしまいます。今度は多少ボール気味でも振りにいって空振り三振しちゃうみたいなものですね。 どちらにしろ判断間違いをゼロにはできないので、バランスをみて決めるしかないんです。

有意水準を決めるときは、大小関係の方向を気にするかどうかも考えておく必要があります。 つまり、(猫好きの点数)-(犬好きの点数)=15というデータが観察されたとき、これよりも極端な状況として、

  • 差が15点より大きくなる状況だけを考える
  • 差の絶対値が15より大きい状況も考える(つまり、さっきの差が<-15も含める)

の2つでは求めるP値が異なります。前者を片側検定(one-sided test, one-tailed test)、後者を両側検定(two-sided test, two-tailed test)と呼びます。

もちろん、両側検定の方がP値が大きくなります。 「猫好きの人の点数が犬好きの人の点数を下回ることなんか、科学的に考えて絶対ありえない!」というなら、片側検定でも良いですが、普通は両側検定を用います。

大事なこととして、両側か片側かも含めて、有意水準は事前に決めておかなくてはいけません。例えば、P=0.06という結果が得られたとき、「基準はP=0.1にしようと思ってたんだよね〜」はズルっこです!

おわりに