統計,確率のお勉強

統計学を主に勉強しています。勉強したことをアウトプットしていきます。 (※数式はMathJaxにより描画されています。ロードに少し時間がかかることがあります。)

Study Probability & Statistics

確率統計の理論と実践

学生時代にやっておくべきこと1位はなぜかいつも「海外旅行」

マ○ナビからメールが来た

社会人に聞いた!内定者が入社までにやっておいた方がいい遊びTOP10!
という記事がメールマガジンで紹介されてたので気になって見てみました。
そこには次のようにランキング形式でやっておいた方がいい遊びが紹介されていました。

1位 海外旅行をする 25人(9.6%)
2位 自分の好きな趣味に没頭する 17人(6.5%)
3位 国内旅行をする 13人(5%)
3位 合コン 13人(5%)
3位 飲み会 13人(5%)
6位 美術館・博物館めぐり 12人(4.6%)
7位 カラオケ 6人(2.3%)
7位 DVD鑑賞 6人(2.3%)
9位 映画鑑賞 5人(1.9%)
9位 アウトドア・スポーツ 5人(1.9%)
9位 キャンプ 5人(1.9%)

インドア派で休日は家から出ないのが基本な私にはなかなか難しい遊びが多い...

海外旅行       →そもそも日本から一回も出たこと無い。海外怖い。
趣味に没頭      →いつも思うんだけど趣味って何?
国内旅行       →お金無い。
合コン        →経験0。一度くらいは行ってみたいが呼ばれる可能性0。
飲み会        →どんだけ飲みたがりだよ...
美術館・博物館巡り  →これは面白そう。行ってみたい(博物館)。
カラオケ       →苦痛
DVD鑑賞       →寝る
アウトドア・スポーツ →インドアだっつてんだろ。
キャンプ       →あり得ない。

むしろ社会人になったほうがお金あるだろうし、旅行楽しそうだけどなあ...なんで学生時代に限定したがるんだ。
ふと、なぜこういうランキングでは海外旅行がいつも1位に来るんだろう?というどうでもいい疑問を抱いた。だってそこまでして行きたい理由分からないモン。必ず学生時代にやっておいたほうがいい事ランキングって必ず海外旅行1位だよね。もういいよ。そのランキングいらないよ。

理由1:「学生時代にやるべきこと=海外旅行」のイメージがつきすぎてる

いろいろなメディアで学生時代に海外旅行は必ず行くべき!みたいなことを言っている。これは先程のようなランキング形式のやつだったら絶対と言っていいほど出てくる。そういうものを普段から継続的に(この手の内容は毎年定期的に書かれてるよね?)目にすることで、多くの人に学生時代=海外旅行!みたいなイメージが既についてしまっている。

さて、アンケートの回答者は次のような質問を受ける。

「あなたが思う、学生時代にやっておいたほうがいいことはなんですか?」

ここで自分の周りの友達を思い出してほしい。そんなに皆が皆海外旅行に行ってる?少なくとも私の周りには片手で数えられるくらいしかいない。実際、学生の内に海外旅行に行く人達なんて一部だろう。その場合、アンケートの回答者は海外旅行に行ったことは無いが、「学生時代に海外旅行に行くべき!」という意識を刷り込まれた人達が必然的に多くなる。では先程の質問の回答はどうなるか?そう、

「海外旅行」

となるだろう。アンケートを回答する際、普通そんな真剣に考えない。そしたら当然こうなる用に思える。

理由2:社会人になって忙しくなる人達のほうが多い

当然だろ?と思うかもしれないがそうでないこともある。私は対して忙しく無いが、理系の大学に在籍しているため、特に実験などが多い研究室は週に休みがないのが当たり前みたいな教授の奴隷生活を送っている学生の話耳にすることもある。まあ、あくまで学生なので責任的な意味での大変さは無いだろうが時間的な意味での忙しさは、「社会人のほうが楽そう...」という言葉からなんとなく察する。まあ、ほとんど家から出ない私は低みの見物をするのみだが(紙とペンとパソコンと本あればなんとかなるのでそもそも研究室に行く意味ないし)。そんな私でもゼミのために勉強することは多いわ卒論書かなきゃだわと思ったより時間が無い(決して昔読んでた漫画やライトノベル等を読み返したり、アニメ見たりしているせいではない。そう、決して)。そんな中「時間のある学生時代の内に~」という言葉には違和感がある。学生時代はあくまで大学で「勉強」するための時間である以上海外「旅行」ではなく「留学」しろよ。どうせ海外いくなら。

大多数の人は社会人になってからのほうが時間的余裕がなくなるので、学生時代に海外旅行行っておけばよかったと後悔の念からそのような結果になるのだろう。でも思うんだよね。学生時代に海外行くようなアクティブな人なら、社会人になって忙しくても行くよね?

結局、学生時代も社会人になっても海外旅行行ってない人が答えている可能性...

理由3:1,2ときたら3がなきゃいけない気がする。

特に思いつかない。1、2ときたから一応様式美の3。

皆が学生時代に海外旅行に行くべきって言ってたから学生時代に海外旅行にいくべき。

つまりは、みんな(ソースは不明、ネットのランキングとか)が学生時代は海外旅行に行くべきって言ってたから学生時代は海外旅行にいくべきだと社会人が答え、それを聞いて社会に出た社会人がまた学生時代は海外旅行に行くべきって言ってたから学生時代は海外旅行にいくべきだと答え(以下無限ループ)により学生時代に海外旅行に行かなきゃならない感じになってる。

とりあえず学生時代にやるべきことランキングのまとめで

学生時代は海外旅行がおすすめ!!
海外旅行は学生時代のうちに!!

みたいなこと書くのはなんかなあ。旅行代理店か何かですか?それなら旅行プランへのリンク貼っとけよ。

注意

以上全て偏見でした。

カイ二乗分布の自由度を大きくしていくと同じ平均, 分散の正規分布と変わらなくなる話

カイ二乗分布

カイ二乗分布は大丈夫だと思いますが,  X_i \sim N(0, 1) のとき,

$$
\sum_{i=1}^n X_i^2 \sim \chi_n^2
$$

となります. 自由度 nカイ二乗分布に従うということです.

カイ二乗分布正規分布 N(n, 2n) に近づいていく様子

今回は自由度 n が大きくなるにつれて, カイ二乗分布が同平均, 同分散の正規分布に近づいていく様子をgifアニメ化してみました.

その結果がこちらです.

f:id:doratai:20171116135147g:plain

ここでは, 自由度を1から100まで動かしています. 自由度が大きくなるにつれて正規分布と一致していくのがわかります.

ソースコード

Jupyter 上で動かしました. アニメーションを作成するプログラムではなく, インタラクティブにnの値を変えることができ, そのときのカイ二乗分布(緑の破線)と正規分布(赤の曲線)の密度関数と, カイ二乗分布から得られた乱数をもとに作ったヒストグラムが描画されます.

%matplotlib inline
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
from scipy.stats import norm, chi2

plt.style.use('ggplot')

bins = 100

@interact(n=(1,200))
def plot_chisquare(n=1):
    np.random.seed(0)
    data = np.random.chisquare(n, 10000)
    
    x = np.linspace(data.min(), data.max(), 1000) 
 
    param = norm.fit(data)
    pdf_fitted = norm.pdf(x, loc=param[0], scale=param[1])
    pdf = chi2.pdf(x,n)
    plt.plot(x, pdf_fitted, 'r-', label='normal pdf')
    plt.plot(x, pdf, 'g--', label='chi2 pdf')
    plt.hist(data, bins, color='pink', density=True)
    if n== 1:
        plt.ylim(0, 1)
    plt.title('Chi-square distribution with n degrees of freedom')
    plt.legend(loc='best')
    plt.show()

統計学を学ぶのにおすすめの問題集3冊

統計学を勉強しようと考えている方向けにレベル別におすすめの問題集を紹介する。統計検定やアクチュアリー等を考えている人にも十分なレベルを備えている問題集達なのでぜひ参考にしてください。

※統計検定準1級以上は範囲が広がるためここにある問題集だけでは少し不足かも...

[初級] 弱点克服 大学生の確率・統計 著者:藤田岳彦

統計学を勉強し始めたならまずはこの問題集に手を付けるのがいいと思います。高校生向けの問題集のようなデザインでとっつきやすく、確率統計の要点をしっかりおさえている、初学者にうってつけの問題集です。確率統計を勉強したことがある人なら必ず何処かで手にしたことがあるはず。初学者でなくとも、一度は通してやっておきたい一冊です。

[中級] 明快演習 数理統計 著者:小寺平治

弱点克服で確率統計に慣れたら次にやるべきはこの「明快演習 数理統計」です。難易度は弱点克服とそんなに変わりません。こちらのほうが、タイトル見れば分かる通り、数理統計が中心となっており、数理統計学の関する、いわば王道の問題を扱っています。受験的にいうと、数理統計学の頻出問題集のような感じです。統計学関連の問題を一通り網羅しているので、ここまでやればまず大学の数理統計学の授業で困ることは無いと思います。アクチュアリー、統計検定もここまでやればもう十分、といったレベル。

[上級] 確率統計演習2-統計- 著者:国沢清典

上記2冊をやってまだ物足りないという方がやるべきはこの一冊。結構レベルが上がります。数理統計の専門書すら扱ってないようなマニアックなものもあり、これ一冊でかなりの範囲を網羅可能。難しそうな見た目の割に全ての問題に解答がついており、問題集としてだけでなく参考書としても利用できるレベル。数理統計で難しめのレポート出されても、国沢統計を調べれば結構書けたりする。持っておくと結構役に立つ名著。ちなみにこれは「2」とありますが「確率統計演習1-確率-」もあります。

標本(不偏)分散の期待値, 分散[正規分布]

正規分布に従う確率変数の期待値, 分散等は統計に関連する本ならばまず間違いなく載っています. しかし, 標本(不偏)分散の期待値, 分散となってくるとなかなか取り扱っている本もサイトも少ない気がします. 定義から求めればいいといえばいいのですが, バカ正直に計算しようとすると結構大変です. 今回は標本分散の期待値, 分散について見ていこうと思います.

標本分散, 標本不偏分散の定義

標本分散S^2と標本不偏分散U^2を次のように書くことにします.

\begin{eqnarray}
S^2 &=& \frac{1}{n}\sum_{i=1}^{n} (X_i - \bar{X})^2 \\
U^2 &=& \frac{1}{n-1} \sum_{i=1}^{n} (X_i - \bar{X})^2
\end{eqnarray}

モーメント

期待値の計算に際し, モーメントを用いるので, 正規分布積率母関数と, 1次と2次モーメントを計算おこうと思います. 正規分布N(\mu, \sigma^2)に従う確率変数X積率母関数M_X(t) = \exp(\mu t + \sigma^2 t^2 /2)であるので,


E(X) = \frac{d}{dt}M_X(t)|_{t=0} = (\mu + \sigma^2 t) e^{\mu t + \sigma^2 t^2/ 2}|_{t = 0} = \mu
E(X^2) = \frac{d^2}{dt^2} M_X(t)|_{t=0} = \sigma^2 e^{\mu t+\sigma^2 t^2/2} + (\mu + \sigma^2 t)^2 e^{\mu t + \sigma^2 t^2/2}|_{t=0} = \mu^2 + \sigma^2

ちなみに, 標本平均\bar{X}\sim N(\mu, \sigma^2/n)より, そのモーメントは,
 \displaystyle
E(\bar{X}) = \mu \\
E(\bar{X}^2) = \mu^2 + \frac{\sigma^2}{n}

標本分散

まず初めに標本分散の方の期待値を見ていこうと思います.

期待値

期待値の定義から,

\begin{eqnarray}
E(S^2) &=& E \left[ \frac{1}{n}\sum_{i=1}^n (X_i - \bar{X})^2 \right] \\
&=& E\left[ \frac{1}{n} \sum_{i=1}^{n} X_i^2 - \bar{X}^2\right] \\
&=& \frac{1}{n} \sum_{i=1}^{n} E(X_i^2) - E(\bar{X}^2)
\end{eqnarray}

先程求めたモーメントを考慮すると,

 \displaystyle
E(S^2) = \frac{1}{n} \cdot n( \mu^2 + \sigma^2 ) - (\mu^2 + \frac{\sigma^2}{n})
       = \sigma^2 - \frac{\sigma^2}{n}
       = \frac{n-1}{n} \sigma^2
となる.

分散

続いて分散について見ていく. ここでは, \frac{\sum(X_i - \bar{X})^2}{\sigma^2} = \frac{nS^2}{\sigma^2} \sim \chi_{n-1}^2となる事実を用いる.
自由度n-1カイ二乗分布の分散が2(n-1)であることから,(環境の都合で \sigma^2 = s^2で表記します.)
\begin{eqnarray}
V(\frac{nS^2}{s^2}) &=& 2(n-1) \\
\frac{n^2}{s^4}V(S^2) &=& 2(n-1)\\
V(S^2) &=& \frac{2(n-1)s^4}{n^2}
\end{eqnarray}
よって(表記を戻すと)V(S^2) = \frac{2(n-1)\sigma^4}{n^2}になることが分かる.

※なんか,はてなでeqnarray環境使うとギリシャ文字がうまくいかないんだよなあ...

標本不偏分散

続いて標本不偏分散を見ていきます. といってもやることはほとんど同じ. 標本不偏分散のほうが期待値も分散もきれいになります.

期待値

先ほどと同様に定義からでも求まりますが, U^2 = \frac{n}{n-1}S^2の関係を用いれば,

 {\displaystyle
E(U^2) = E \left( \frac{n}{n-1} S^2 \right) = \frac{n}{n-1} E(S^2) = \frac{n}{n-1} \frac{n-1}{n} \sigma^2 = \sigma^2
}

標本不偏分散なので当然といえば当然.

分散

標本分散の時と同様に\frac{(n-1)U^2}{\sigma^2} \sim \chi_{(n-1)}^2であることを用いる.
{\displaystyle
V(\frac{(n-1)U^2}{\sigma^2}) = 2(n-1) \\
\frac{(n-1)^2}{\sigma^4} V(U^2) = 2(n-1) \\
V(U^2) = \frac{2\sigma^4}{n-1}
}
となる.

※eqnarray環境使わなかったため見た目が悪くなってます.


分散の分散を馬鹿正直にやると4次モーメントまで考えなくてはならなかったり, 式もかなり煩雑になるので, カイ二乗分布から持ってくる方が簡単で便利だと思います.
国沢統計を読んで見ると「4次モーメントを考えると...」という記述があってやろうとしたのですが途中で挫折しました...

Daftでグラフィカルモデルを作成してみる[Python]

森北出版の「Pythonで体験するベイズ推論」を読み進めていたら、2章で、Pythonのdaftというライブラリを用いて、グラフィカルモデルを作っていたのですが、そのソースコードは載っていなかったので自分で作ってみました。

作ったのは以下のグラフィカルモデル

f:id:doratai:20170605163828p:plain


参考にしたのは次のサイト。
daftでグラフィカルモデル
このサイトがかなり詳しく説明してくれています。

ソースコード

import daft
from matplotlib import rc
rc("font", family="Ricty", size=15)
rc("text", usetex="True")

pgm = daft.PGM(shape=[6,6])

# Nodes
pgm.add_node(daft.Node("alpha", r"$\alpha$", 4, 5)) # 名前 ラベル 座標
pgm.add_node(daft.Node("tau", r"$\tau$", 1, 4.5))
pgm.add_node(daft.Node("lambda_1", r"$\lambda_1$", 3, 4))
pgm.add_node(daft.Node("lambda_2", r"$\lambda_2$", 5, 4))
pgm.add_node(daft.Node("lambda",  r"$\lambda$", 2, 3))
pgm.add_node(daft.Node("obs", "obs", 2, 2, observed=True))

# Edges
pgm.add_edge("alpha", "lambda_1")
pgm.add_edge("alpha", "lambda_2")
pgm.add_edge("tau", "lambda")
pgm.add_edge("lambda_1", "lambda")
pgm.add_edge("lambda_2", "lambda")
pgm.add_edge("lambda", "obs")

pgm.render()
pgm.figure.savefig("pymc_p43.png")