クーポンコレクター問題の確率分布を解き明かす
クーポンコレクター問題というものをご存知だろうか?これは、例えば6種類のおもちゃが出るガシャポン*1があったとして、何回くらい引けば全種類引き当てる事ができるか?というようなことを考える問題である。
この問題に対して、平均や分散がどうなるかということは非常によく語られることである[1]。また、時として不等式による評価について議論している記事を見かけることもある[2]。
しかし、肝心の確率分布については議論される事が非常に少ない。あまりにも記事を見かけないので、私は当初クーポンコレクター問題の確率分布を求めることは不可能なのではないかとさえ思っていた。
それでもめげずに調べ続けた結果、私はついに確率分布について結論を出しているページを見つけた。本稿ではそれを紹介し、喜びを分かち合いたいと思う。
第2種スターリング数
クーポンコレクター問題の確率分布を求めるためには、第2種スターリング数について理解しておく必要がある。少し長いが、定義をWikipediaから引用する[3]。
定義も大切なのだが、第2種スターリング数は以下のように特徴付けられるということが重要である[3]。
クーポンコレクター問題の確率分布
準備が整ったので、確率分布を求めてみよう。以下の議論は全て[4][5]を参考にした。
集めるクーポンの種類を種類とし、初めて全種類のクーポンを取得できるまでの試行回数を表す確率変数をとする。この時、回目の試行で初めて全種類のクーポンを取得できる確率を求める。
回の試行により出現し得るクーポンの出方の総数はである。もし回目の試行で初めて全種類のクーポンが出るパターンの総数が分かれば、それをで割ったものが求める確率である。
回目の試行で初めて全種類のクーポンが出揃うということは、回目の時点で種類のクーポンがすでに出ている必要がある。このパターンの総数を求めるために、回目までの試行に対して1から順に番号を割り振る。そして、これらの番号付けられた試行を個のグループに分ける。同じグループに分けられた試行については同じクーポンが得られたと考える。この分け方のパターンの総数は第2種スターリング数となる。
第2種スターリング数は分けられたグループの間の順序は区別しないが、今はクーポンの種類は区別されるので、を掛ける。さらに、回目までに出る種類のクーポンは種類のうちどれであるかは問わないので、全てのパターンをカウントする必要がある。そのため、を掛ける。結局、回目の時点で種類のクーポンが出現するパターンの総数はとなる。
回目の試行でまだ出ていない最後のクーポンが出るパターンの総数は1なので、回目の試行で初めて全種類のクーポンが出るパターンの総数はとなる。以上の議論により次の式を得る。
計算してみよう
にいくつか具体的な数値を入れてを計算してみよう。手計算ではやっていられないので、pythonを利用する。第2種スターリング数はsympyのstirling関数を用いて計算することが出来るので、それを利用する[6]。数値だけ示しても分かり辛いので、結果をmatplotlibでグラフ化した。Python自体はpydroid3を使って実行した[7]。なお、sympyなどの必要なパッケージはあらかじめpipでインストールしておく必要がある。
計算に用いたソースコードを以下に示す。
from sympy.functions.combinatorial.numbers import stirling import matplotlib.pyplot as plt import math startCouponKind = 2 numCouponKind = 6 numTrial = 30 for k in range(startCouponKind, numCouponKind+1): x = [] y = [] for n in range(1, numTrial+1): stir = stirling(n-1, k-1, kind = 2) prob = math.factorial(k) * stir / (k**n) x.append(n) y.append(prob) plt.plot(x, y, label='k = {}'.format(k)) plt.legend() plt.savefig('/storage/emulated/0/coupon.png')
得られたグラフを以下に示す。
途中でピークを持ち、右側に裾野が広がっている様子が見て取れる。が小さいときに確率が0となる領域があるが、これはクーポンの種類よりも試行回数が少ないときの様子が表れているものである。
また、の増え方に対して、ピークの位置が右に移動していく速度の方がやや速いように見える。実際、全種類コンプリートするまでの試行回数の期待値はなので、これは理論的にも辻褄が合っている[1]。
まとめ
本稿ではクーポンコレクター問題の確率分布を明らかにし、実際に計算を行った結果を示した。クーポンコレクター問題ではパターンを数え上げる事が難しかったが、その難しさを既知の概念である第2種スターリング数に押し込めることで、理論的にスッキリとした結論を得ることができた。
これまで組み合わせ数学には興味がなかったが、本稿を書き上げるうちにその面白さを垣間見る事ができた。またいずれ体系的に勉強しよう。
参考
[1] クーポンコレクター問題 - Wikipedia
[2] コンプガチャの数理 -コンプに必要な期待回数の計算方法について- - doryokujin's blog
[3] スターリング数 - Wikipedia
[4] combinatorics - Probability distribution in the coupon collector's problem - Mathematics Stack Exchange
[5] CDF of probability distribution with replacement - Mathematics Stack Exchange
[6] Combinatorial — SymPy 1.3 documentation
[7] https://play.google.com/store/apps/details%3Fid%3Dru.iiec.pydroid3%26hl%3Dja%26referrer%3Dutm_source%253Dgoogle%2526utm_medium%253Dorganic%2526utm_term%253Dpydroid3%26pcampaignid%3DAPPU_1_5SOHXJe-E4-Pr7wPpLSfwAE
*1:これの呼び方は地方によって差があるような気がするが、自分の流儀で呼ばせて頂く。
いくつかのLie群がLie群であることを定義に戻って確かめる
Lie 群は難しい。この理由の1つは、議論の前提となる領域が広いことにあると思われる。Lie群とは群であり多様体であるような数学的対象である。そのため、定義を理解するだけで群論と多様体の知識が求められる。また、Lie群の教科書で最初に扱われるような基本的なLie群は行列群である。しかも、そのコンパクト性に着目した議論も多い。そのため、線形代数と位相空間の基礎的な事項も理解しておくことが望ましい。
繰り返すが、Lie群は難しい。私はここ最近Lie群を勉強し始めて、この事実を痛感している。こういう時は足元を一歩ずつ踏み固めて行くしかない。その一環として、本稿ではいくつかの基本的なLie群について、それらが本当にLie群になっていることを定義に照らし合わせて確認してみる。
本稿では私の独断で以下の2つのLie群を扱う。
- 一般線形群
- 直交群
準備
多様体上の写像が級であるということ
Lie群の定義の中で級写像という言葉が出てきた。この定義を[2]より引用する。
(1) かつ
(2) とに関するの局所座標表示が級である,
この2つの条件がなりたつことである. ただし, .
上記定義においてとすれば級写像の定義となる。
Lie群であることの確認
以上で準備が整ったので、Lie群であることの確認に移る。本稿では群であることの確認はサボり、それぞれのLie群について以下の3点を確認した。
一般線形群
級多様体であること
上次正方行列全体の集合をと書く。はの部分集合のうち、以下のように表されるものである。
実は、はの開部分集合となる。詳細は[3]の命題1.17に譲り、ここでは概要だけ説明する。まず、は連続写像である。このとき、と書ける。はの開集合なので、連続写像による逆像も開集合となる。
ここで、に属する行列の各成分を座標と見なすと、これはと同一視できる。そのため、
は級多様体となる。その開部分集合も級多様体となるので、は級多様体となる。このような多様体を開部分多様体と呼ぶ[2]。
直交群
級多様体であること
これを示すのは思いのほか難しいため、証明のアウトラインだけ述べることにする。詳細は[4]を参照されたい。
次実対称行列全体の集合をとする。はと同一視できるため、次級多様体である。
この時、以下のような写像を考える。
は級写像である。が直交行列のとき、その逆行列はとなる。そのため、となる。ここで、は単位行列である。
もしがの正則値であれば、先ほど提示した定理によりは次級多様体となる。そのためには、の全ての点における微分が全射になれば良い。具体的に微分計算を行い、それが全射であることを確かめるアプローチになるが、体力の限界なのでこれ以降は[4]にお任せする。
参考
[1] http://www.math.tsukuba.ac.jp/~tasaki/lecture/ln2010/2010t.pdf
[2]
- 作者: 松本幸夫
- 出版社/メーカー: 東京大学出版会
- 発売日: 1988/09/22
- メディア: 単行本
- 購入: 7人 クリック: 36回
- この商品を含むブログ (33件) を見る
[4] http://math.uchicago.edu/~may/REU2014/REUPapers/Rouse.pdf
今こそJordan標準形と向き合う
線形代数を勉強して、Jordan標準形という言葉を耳にしたことがない人はいないだろう。Jordan標準形とは、ざっくり言えば行列の対角化を一般化したようなものである。行列の対角化はいつでもできるとは限らず、報われない行列たちが存在する。一方、Jordan標準形は常に存在することが知られており、まさに行列界の救世主と言える。
私もかつて大学院入試の際にJordan標準形について勉強したことはある。しかし、専攻が情報系というのもあって、当時勉強したのは主にJordan標準形への変形方法だけで、その背後にある数学的な面白さについては理解していなかった。
そこで、本稿ではJordan標準形とは何なのか、その理論的な詳細について考えてみる。
行列は線形写像の映し鏡
始めに、本稿を読み進めるにあたって重要となる考え方について述べておく。
ベクトル空間上の線形写像は行列によって表現することができる。特に、線形変換は線形写像であるから、これも行列によって表現可能である。対角化やJordan標準形を考える上では、この逆を考えることが重要である。すなわち、ある行列に対して、それが何らかの線形変換の表現行列なのだと捉えるのである。
行列というのは線形変換をある基底に対して表現したものに過ぎず、基底の取り方によって姿を変え得る。唯一不変なのはその背後にある線形変換であり、線形変換を通して行列の振る舞いを考えることがJordan標準形の理解へと繋がる。
線形変換を通したベクトル空間の分解
固有空間への分解
次元ベクトル空間に対して、ある線形変換が定められており、個の固有値を持つとする。この時、各固有値について、それに対応する固有空間が存在する。ここでは線形変換の固有値、及び固有空間について述べているのであって、行列については一切触れていないことに注意されたい。
固有空間の基底は固有ベクトルであるから、固有空間に属する任意のベクトルにを作用させると、それらは単に元のベクトルの固有値倍となる。ゆえに、固有空間は不変な部分空間となる。
全ての固有空間の次元の和がに等しい場合、以下の式が成立する。
広義固有空間への分解
さて、いつもこのようになっていれば良いのだが、残念ながらそうはならないケースが存在する。すなわち、全ての固有空間の次元の和がを下回るような場合である。このような場合でも、何とかうまくを直和分解出来ないだろうか?
実は、これは可能である。が固有空間であるという条件を緩和して、不変性と直和分解されるという性質だけを担保することで、を先ほどと全く同じような直和分解の形に持ち込むことができる。
では、具体的にどのような部分空間に分解してやれば良いだろうか?それを考えるために、まずは固有ベクトルについて、以下のような式変形を行う。
これより、固有ベクトルというのはを作用させると零ベクトルになるようなベクトルであると言える。または、簡潔にである。
ここから着想を得て、だけでなく、 (は任意の自然数) を作用させて零ベクトルになるようなベクトルの集合を考えてみる。これが実はの部分空間となっており、さらに不変性と直和分解されるという性質を満たしている。このようにして得られる空間を広義固有空間と呼ぶ。これをと表記すると、やはり簡潔にと書ける。
少し確認してみよう。まず不変性について、以下の式を考える。
を作用させて零ベクトルになったので、が言える。
続いてが各の直和になることについてだが、これは思ったより証明が大変なので、ここではサボって[1]に譲ることにする。
直和分解について一点だけ注意事項を述べておく。ここまで広義固有空間への直和分解について説明したが、実は広義固有空間はさらに直和分解できる場合がある。具体的には、後述するJordan鎖の数だけさらに直和分解可能である。詳細はここでは述べないが、[2]などが参考になるだろう。
広義固有空間の基底
次に、の基底について考えてみよう。の次元をとする。固有ベクトルについて、を満たすベクトルを考える。このようなは存在するかもしれないし、しないかもしれない。もし存在すれば、となるため、が言える。しかも、これはのスカラー倍でもない。そのため、は一次独立である。
帰納的に、となるベクトルを考える。すると、となるためが言える。しかも、は一次独立になる。
基底は最大で個しか取れないので、この操作はどこかで頭打ちとなる。このようにして得られるベクトルの列をJordan鎖という。Jordan鎖は1つ以上存在し、全てのJordan鎖を構成する全ベクトルを寄せ集めると、これはの基底となる。これを広義固有ベクトルと呼ぶ。
広義固有空間の構造を完全に明らかにするためには、Jordan鎖は長さいくつのものが何本存在するのかを知る必要がある。これはの次元を順に計算し、それらがどのように増えていくかを調べれば分かる。が、込み入った話になるので詳細は[3]を参照されたい。
広義固有ベクトルを基底とした場合の表現行列
以上、線形変換の性質についていろいろと述べたが、ここからいよいよJordan標準形の話に入っていく。
いきなり天下り的だが、線形変換について、全ての固有値に対する広義固有ベクトルを全て集め、それらを基底とした場合の表現行列について考えてみよう。同じ広義固有空間から抽出した広義固有ベクトルは隣り合うように並べて、その中でさらに同じJordan鎖に属するベクトルも順に並べて添字をつけたものをとする。ここで、以下のような写像を定義する。
ここで、はの標準基底である。これによっての表現行列が定まる。によって実現される上の線形変換をとすると、以下のような可換図式が得られる。
これを成立させるためには、はどのような行列であれば良いだろうか?これを一般的な状況で説明するのは非常に煩雑なので、ここでは以下のような具体的な設定の元で議論を進める。
まず、上で示した可換図式によりとなる。また、具体的な設定の中で示した式を変形すると以下のようになる。
さらに、これらにを作用させると以下のようになる。
上式にを代入することで、は以下のような変換であることが分かる。
よって、は以下のような行列であることが分かる。
これはJordan標準形そのものである。結局、線形変換の基底として広義固有ベクトルを選んだ場合の表現行列こそが、Jordan標準形の正体なのである。
広義固有ベクトルへの座標変換
最後に、適当な行列をJordan標準形に変形するとはどういうことなのか、その意味を考えてみよう。
Jordan標準形になっていない次正方行列を考える。をあるベクトル空間上の線形変換の表現行列であると考えると、これは基底として広義固有ベクトル以外のものを選んだ場合であると解釈できる。これをJordan標準形に変形する事は、基底を広義固有ベクトルに取り替えることを意味する。
が表現行列となるようなの基底をとし、写像を以下のように定める。
すると、以下の可換図式が得られる。
これより、広義固有ベクトルを基底とした場合の変換は以下のようにして得られる。
は基底の取り替えを表す写像である。この写像の表現行列をとすると、よく見慣れたJordan標準形への変換式が得られる。
ちなみに、を具体的に求めると、これは広義固有ベクトルを列ベクトルとして順に並べた行列になっている。そのようになる理由は説明すると長くなるので、私の体力の都合により割愛する。
まとめ
本稿ではJordan標準形の理論的側面について述べた。結論として、Jordan標準形とは広義固有ベクトルを基底としたときの線形変換の表現行列であることが分かった。また、Jordan標準形への変換とは、基底を広義固有ベクトルに取り替える操作であることが分かった。
本稿ではJordan標準形の応用面について触れることが出来なかった。これについてはまた機会があれば調べてみたい。
参考
[1] ときわ台学/固有値論/一般固有値問題,一般固有空間,ジョルダン標準形
[2]
- 作者: 齋藤正彦
- 出版社/メーカー: 東京大学出版会
- 発売日: 1966/03/31
- メディア: 単行本
- 購入: 4人 クリック: 102回
- この商品を含むブログ (47件) を見る
固有ベクトルの観点から線形変換を掌握する
線形代数において、固有値と固有ベクトルの話題は花形である。これらは理論的に美しいだけでなく、応用上様々な場面に登場し、重宝されている。中でも固有値が力を発揮するのは、やはり行列の対角化を行う時であろう。すなわち、n次正方行列がある条件を満たすと、ある変換行列が存在してが対角行列になるのである。
では、対角化が可能となるための「ある条件」とは一体なんだろう?それは、固有値の (固有方程式の解としての) 重複度と、その固有値に対応する固有空間の次元が全ての固有値に対して等しいことである。これは対角化可能であるための必要十分条件となっている。
そう、固有値というのは実に厄介で、例えば固有方程式を解いた結果、が重解として得られたとしても、に対応する固有空間は必ずしも2次元になるとは限らないのである。
以上の事実から、行列は固有値の数と重複度、および固有ベクトルの次元によって、いくつかの種類に分類出来そうな気がしてくる。そのように分類された行列のクラスは、それぞれ何か特徴的な性質を持つのだろうか?
本稿ではこのぼんやりとした疑問の答えに迫るべく、前半は対角化について調べ、後半は具体例を頼りに固有値・固有空間が反映する行列の性質について調べてみようと思う。
対角化とは何か?
まずは対角化について考えてみよう。対角化と言えばという変換の仕方が特徴的である。これの意味するところを考えることによって、対角化について理解を深めていこう。
線形変換の表現
行列は線形変換と密接な関係にある。すなわち、任意の線形変換は行列によって表現することができる。の意味を理解する上では、Aをある線形変換の表現行列と捉えるのがよい。
まず、線形変換の定義を[1]より引用する。
の次元をnとする。の1つの基底をとすると、の任意の元は以下のように基底の線型結合で表すことができる。
ここで、をの線形変換で写したものはやはりの元となる。よって以下のように同じ基底で表すことができる。
すると、変換前後の係数の間には以下のような関係が成立する。
上の行列が線形変換の表現行列である。両辺のベクトルの右下にeと書いたのは、これが基底によるベクトルであることを示している。表現行列を簡潔にと表した式は以下のようになる。
基底の取り替え
次に、線形変換をの別の基底で表現するとどうなるか考えてみよう。そのような基底をとする。すると、先ほどと同じように変換前後のベクトルは以下のように表される。
基底の取り替えにおいて重要な考え方は、元の基底に対する表現行列をできる限り活かすことである。そのために、ではなく入力として与えるベクトルの方を変換することを考える。これを実現するためには、以下のような行列を利用する。
このような行列を基底の取り替え行列と呼ぶ。これより、は以下のように表現できる。
異世界を旅して帰還する
基底の変換後の式の両辺にをかけると以下のようになる。
が基底を用いた場合のの表現行列となる。
普通はここで話はおしまいである。基底を変換した後の表現行列が求められたのだから、めでたしめでたしというわけだ。しかし、という形の変換は線形代数に限らずいろんな数学の分野でよく見かける形であり、もう一段抽象的なレベルでの意味がある。これを少し掘り下げて考えてみよう。
まず、行列は基底の世界で表現されるベクトルに対して適用可能な行列である。これを別の世界のベクトル、すなわち、基底で表現されるベクトルに適用したいと思ったら、一度の世界からの世界に移動する必要がある。すると、移動後のベクトルにはを適用することができる。最後に、を適用して得られたベクトルを元の世界に戻してやれば、結局の世界のベクトルにを適用出来たことになる。以下に図を示す。
このようにで変換を挟み込むことは、その変換が適用可能な世界へと移動し、変換が終わったら元の世界に戻してやるような効果がある。これが線形変換の表現行列を別の基底で表したベクトルに適用できるからくりである。
対角化は座標変換
ここまで座標変換の話ばかりしてきた訳だが、座標変換と対角化の関係について述べておく。ずばり対角化とは、線形変換の基底を固有ベクトルから成る基底に変換する操作のことである。そして、対角化可能であるとは、基底となるような固有ベクトルの組が存在することを意味している。
逆に、もし固有値の重複度より固有ベクトルの次元が小さいものが存在すると、対象となる線形空間の次元に対して固有ベクトルの本数が足りなくなってしまい、基底を作れなくなる。この場合は対角化不可能となる。
基底の取り替え行列としては、のn個の列固有ベクトルを並べた行列を取れば対角化できる。計算の過程を以下に示す。
固有値・固有ベクトルは何に紐づくものか?
ここで注意点を1つ。世の中ではよく「行列の固有値」とか「行列の固有ベクトル」という言い方をする。これは別に間違っていない。実は、線形変換に対しても固有値・固有ベクトルという概念が存在する。
まず固有値についてだが、行列の固有値はのサンドイッチ変換に対して不変となる。そのため、線形変換の固有値とは「任意の基底に対する表現行列の固有値である」と定義しておけば、それは一意に定まる。
多様体や微分幾何学なんかが代表的であるが、座標系に依存しない量や概念というのは、その数学的対象の本質的な性質を表していると考えられるため、一般にとても重要である。
一方、固有ベクトルは座標系の取り方によって変わる。このように、固有値と固有ベクトルでは不変となる範囲が異なるので注意が必要である。
固有値・固有空間に着目した線形変換の分類
ここまでで固有値・固有ベクトルとかなりお友達になれたはずなので、本題に入ろう。線形変換が固有値の数や重複度、また固有空間の次元とどのような関係にあるのかを調べてみよう。簡単のために、話を上2次の正方行列に絞る。
上2次の正方行列は以下のように分類できる。
以下では分類された各項目の線形変換がどのような振る舞いをするのか、例を用いながら調べてみる。
異なる2つの実固有値を持つ場合
例として以下の行列を考える。
sage: A = matrix(QQ, [[1, -1/4], [-1/2, 5/4]]) sage: for var in A.eigenvectors_right(): ....: print var ....: (3/2, [ # 固有値1つ目 (1, -2) # 固有ベクトル ], 1) # 重複度 (3/4, [ # 固有値2つ目 (1, 1) # 固有ベクトル ], 1) # 重複度
この線形変換を可視化したものを以下に示す。
ここで、黒の矢印は基底、グレーの点線矢印は基底にを作用させて得られるベクトルである。赤の矢印は固有ベクトル、オレンジの点線矢印は固有ベクトルにを作用させて得られるベクトルである。また、水色の矢印は、矢印の根元の位置ベクトルが、によって矢印の先端に写ることを意味している。
これを見ると、Aの作用によって空間が2つの固有ベクトルの方向に伸び縮みしているのが分かる。これより、このタイプの線形変換は固有ベクトル方向の拡大・縮小を表すと考えられる。ただし、伸びるのか縮むのか、またその程度がどれくらいであるかは固有値によって決まる。
1つの実固有値を持ち、固有空間の次元が2の場合
例として以下の行列を考える。
sage: A = matrix(QQ, [[2, 0], [0, 2]]) sage: for var in A.eigenvectors_right(): ....: print var ....: (2, [ # 固有値 (1, 0), # 固有ベクトル1つ目 (0, 1) # 固有ベクトル2つ目 ], 2) # 重複度
この線形変換を可視化したものを以下に示す。
これを見ると、Aの作用によって空間が原点を中心に拡大されているのが分かる。これより、このタイプの線形変換は拡大・縮小を行うものと考えられる。
一点補足だが、このケースの線形変換の表現行列は単位行列の定数倍しかあり得ない。のただ1つの固有値をとすると、を対角化した行列はとなる。対角化のための変換行列をとすると、結局以下のようになる。
1つの実固有値を持ち、固有空間の次元が1の場合
例として以下の行列を考える。
sage: A = matrix(QQ, [[11/6, -1/3], [1/3, 7/6]]) sage: for var in A.eigenvectors_right(): ....: print var ....: (3/2, [ # 固有値 (1, 1) # 固有ベクトル ], 2) # 重複度
この線形変換を可視化したものを以下に示す。
これを見ると、原点を通る固有ベクトルによって引かれる直線より下側では右向きの、上側では左向きの流れがあるように見える。これより、このタイプの線形変換は固有ベクトルと平行な方向に歪みを与える働きがあると考えられる。
実固有値を持たない場合
例として以下の行列を考える。
sage: A = matrix(QQ, [[1, -1/2], [1/2, 1]]) sage: for var in A.eigenvectors_right(): ....: print var ....: (1 - 0.50000000000000000?*I, [(1, 1*I)], 1) # 固有値が虚数 (1 + 0.50000000000000000?*I, [(1, -1*I)], 1)
この線形変換を可視化したものを以下に示す。
これを見ると、螺旋のような渦巻きが現れている。これより、このタイプの線形変換は回転と拡大・縮小の組み合わせになっていると考えられる。
区間推定の理論と実践
統計学における推定の考え方は仮説検定と双璧を成す重要な理論であり、初学者がまず目指すべき最高到達点である。推定は強力な手法であるが故に、恐らく大抵の教科書では記載があるだろうし、ググればいくらでもWebページがヒットする。
そんな状況下ではあるが、推定の中でも特に区間推定は個人的に興味をそそられる内容であり、ぜひともブログを書き起こしてみたくなった。そこで、本稿ではできるだけ二番煎じにならないよう、私が得た区間推定に対する理解について説明してみたいと思う。
本稿では正規母集団から抽出した標本データを用いた母平均の区間推定のみをターゲットとする。また、適当なサンプルデータを用いて実際に区間推定を行うことで、区間推定の理論に対して確かな実感を得てみたいと思う。
なお、本稿を執筆するに辺り、全体的に[1][2]を参考にした。
母平均の区間推定
母分散が既知の場合
正規母集団に従う独立な確率変数の標本平均を考える。このとき、自体も確率変数となっており、これが従う確率分布はとなる。また、これを標準化した確率変数は、当然だが標準正規分布に従う。
今、母分散は分かっているが、母平均の値が不明な状況を考える。もちろん、実際にはこんなことはまずあり得ないのだが、このケースを考えることは後々の議論において意味がある。
この時、という関係が成り立つので、標本平均をそのまま母分散だと考えてもあながち間違いではない。しかし、当然だがの値にはぶれがあり、どんなサンプルを抽出するかによって値が変わってしまう。しかも、極端なケースでははとんでもなく大きくなったり小さくなったりすることがあり得る。そのため、の値だけをみても、母平均について何も確実なことは言えない。
では、何か確率的な議論はできないだろうか?例えば「95%の確率ではAからBの間に入ります」というようなことが言えないだろうか?
結論から言うとこれは可能である。標準正規分布において、それより大きい値を取る確率がとなるような点 (パーセント点) をと表すと、先ほど導入した確率変数Zは確率で以下の不等式を満たす。
2点注意事項がある。まず、これは正規分布が左右対称だから言えることである。さもなければ、の部分はそれより小さい値を取る確率がとなるような点を別途求めて、それと置き換えてやる必要がある。
次に、を2で割っている理由だが、これは上側のと下側のを両方排除し、残りがとなるようにするためである。
この不等式を変形すれば、以下のようにが確率で取る値の範囲が分かる。
母分散が未知の場合
先ほども述べた通り、母平均は未知なのに母分散は分かっているということは普通はあり得ない。実際に得られるのは不偏分散だけというケースがほとんどである。不偏分散の定義式を以下に示す。
不偏分散に対してはという関係式が成り立つので、これを母分散の代わりに用いることはそれほど不自然ではない。しかし、やはりサンプル数が少ない場合には母分散とかけ離れた値を取ることがあり得る。そのため、先ほど考えた確率変数Zの式に対して単にを代入すると、これはもはや正規分布には従わない。
では、これはどのような分布になるのだろうか?それを調べるために、Zの式にを代入した式を以下のように変形してみよう。
ここで、分母にという式が現れた。この式自体も確率変数であり、これは標準正規分布に従う確率変数の二乗和を表す。このような確率変数が従う確率分布は自由度n-1の分布と呼ばれる。
まとめると、標準正規分布に従う確率変数Zと自由度n-1の分布に従う確率変数Wによって、元々の確率変数tは以下のように表される。
このような確率変数tが従う確率分布は自由度n-1のt分布と呼ばれる。結論として、母分散未知のケースにおける母平均の推定にはt分布を使用する必要があることが分かった。
自由度n-1のt分布をと書くと、母分散既知のケースと同様の計算を行うことで、は確率で以下の不等式を満たすことが分かる。
ただし、は自由度n-1のt分布のパーセント点を表す。ここでもt分布が左右対称であることを利用している。
区間推定の実践
ここまでに述べたことを実践してみよう。統計処理をするにはpythonかRが簡単そうであるが、Android上で環境を構築できたのでpythonを使うことにする[3]。また、データセットとしてIrisは見飽きたので、ここではAbarone (アワビ) を使用している[4]。
Abaroneデータセットには、1列目に性別、3列目に直径の情報が入っている。今回はオスのアワビの直径データについて、母平均の区間推定を行ってみた。サンプル数は敢えて少なめに10とし、t分布を使った場合と正規分布を使った場合で比較を行った。もちろん、正しいのはt分布を使う方である。
以下に今回作成したソースコードを示す。作成の際には[5]を参考にさせて頂いた。日本語コメントは本稿のために後から付したものであり、このままでは実行できないので注意されたい。
import pandas as pd from scipy import stats import math # 全部の列に名前を付けるのは諦めた... abalone = pd.read_csv('file:///storage/emulated/0/Download/abalone.data', header=None, names=['sex', 'length', 'diameter', 'height', 'a', 'b', 'c', 'd', 'e']) # オスの情報だけ抽出 male = abalone[abalone['sex'] == 'M'] n = 10 # 自由度n-1のt分布の95%信頼区間を取得 tleft, tright = stats.t.interval(alpha=0.95, df=n-1) # 正規分布の95%信頼区間を取得 nleft, nright = stats.norm.interval(alpha=0.95) mean = male.iloc[:n]['diameter'].mean() # デフォルトで不偏分散の平方根が計算される stddev = male.iloc[:n]['diameter'].std() # 本文中の式と若干符号が異なるので注意 tleft = mean + tleft*stddev/math.sqrt(n) tright = mean + tright*stddev/math.sqrt(n) nleft = mean + nleft*stddev/math.sqrt(n) nright = mean + nright*stddev/math.sqrt(n) print("mean = {:.3f}, stddev = {:.3f}".format(mean, stddev)) print("t-dist: left = {:.3f}, right = {:.3f}".format(tleft, tright)) print("n-dist: left = {:.3f}, right = {:.3f}".format(nleft, nright))
実行結果を以下に示す。
mean = 0.339, stddev = 0.046 t-dist: left = 0.306, right = 0.372 n-dist: left = 0.310, right = 0.368
実行結果から分かるように、正規分布を使った場合は区間が狭めに出力されてしまう。そのため、正規分布での結果を元に考察を行うと判断を誤る恐れがある。
最後に特大の注意事項がある。今回はオスのアワビの直径データが正規分布に従うと仮定して分析を行ったが、本来であればこの仮定の妥当性は良く確かめる必要がある。誤った仮定を元に一生懸命計算したとしても、その結果には何の意味もないどころか、誤った帰結へと導かれる危険性がある。
データが正規分布に良く当てはまっているかどうかを判断する方法について私には知見がない。軽くググってみたらいろいろと情報がありそうだったので、興味のある方は調べてみると面白いかもしれない。
その他の話題
本稿では正規母集団から抽出したサンプルから母平均の区間推定を行った。この他にも、例えば母分散の区間推定を行う方法などは有名である[1]。また、実用上のタスクとしては正規母集団以外の母集団を考えることもあるだろう。しかし、どんな場合であれ、基本的な区間推定の考え方は本稿に述べたものと大きく異なることはないであろう。
参考
[1]
- 作者: 東京大学教養学部統計学教室
- 出版社/メーカー: 東京大学出版会
- 発売日: 1991/07/09
- メディア: 単行本
- 購入: 158人 クリック: 3,604回
- この商品を含むブログ (79件) を見る
[3] https://play.google.com/store/apps/details?id=ru.iiec.pydroid3&hl=ja&referrer=utm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_term%3Dpydroid+3&pcampaignid=APPU_1_4VFeW8v9NovS8wXKsq_4Cw
[4] UCI Machine Learning Repository: Abalone Data Set
[5] Python: SciPyを使った統計的推定 - け日記
確率分布族の再生性まとめ
確率分布はたくさんある
統計学を勉強していると、世の中には本当にたくさんの確率分布が存在する事に気付く。現実世界の現象に統計学を応用しようと考えるとき、その現象にはどのような確率分布が良く当てはまるのかを考えたくなる時がある。そのためには、数ある確率分布がそれぞれどういう現象をうまく表現できるかということを知っておく必要がある。
そこで、本稿では基本的な確率分布の特徴についてまとめてみ・・・ようと思ったのだが、途中までやりかかったところですでに素晴らしいまとめ[1]が存在することに気づいた。
劣化コピーを作っても意味がないので、ここでは[1]に記載が少ない再生性に関する事項についてのみまとめてみる。ただし、さすがに[1]に記載されている全ての分布について調べるのはしんどいので、ここでは私が個人的に興味を持った分布についてのみ紹介する。詳細は[2][3][4][5][6]等を参照のこと。
離散型
名称 | 再生性 | ||
---|---|---|---|
二項分布 | 有り | ||
ポアソン分布 | 有り |
まとめ
調べてみると、意外と多くの確率分布族が再生性を持つことが分かった。世の中うまくできているものだ。
今回は[1]を見つけたことでブログを書くモチベーションが下がってしまったが、こういうまとめが存在すること自体は大変ありがたい。困ったときに活用させてもらおう。