標本平均の分散はなぜサンプルサイズnで割るのか
標本平均の分散 (ただしは母分散、はサンプルサイズ)がなぜこのような形になっているのか。
結論から言うと、サンプルサイズが大きければ標本平均の分散は0に収束し、標本平均の期待値が母平均に収束するからである。これは大数の法則が主張したいことそのものである。
母集団から任意のサンプルサイズ個の標本を無作為に抽出し、その標本平均を求める。この復元抽出を繰り返し行い、毎回の標本平均を求め、標本平均の分散を求める。 例えば、サンプルサイズが個や個といった小さな数で抽出を繰り返せば、標本平均は毎回大きく違った値を取ることが予想される。 反対に、サンプルサイズを増やしやなどといったたくさんの標本を抽出することで、毎回似たような標本平均が得られることが予想できる。 抽出する数を増やせば増やすほど、標本平均の分散はに収束し、標本平均は母平均に収束する。
したがって、標本平均の分散は分母にサンプルサイズがあることで、サンプルサイズがのとき分散がに収束し、標本平均が母平均と一致することを表している。
参考
p.183, 184
ベイズ推定とグラフィカルモデル
Udemyの「ベイズ推定とグラフィカルモデル:コンピュータビジョン基礎1」を受講しているので、受講した範囲のノートを随時追加していく。 無料でこんなに素晴らしい講義を公開してくださっている広島大学の玉木先生には大変感謝です。
02 Introduction to probability
03 Common probability distribution
04 Fitting Probability Models
05 The Normal Distribution
ガンマ関数とは
ベータ分布やディリクレ分布の確率密度関数にΓ関数(ガンマ関数)が出てくる。 いったいこのガンマ関数は何をしているのか。
まず、ガンマ関数の概要を説明する。 ガンマ関数とは階乗の概念を複素数に拡張し、一般化したものだ。 「正の整数以外の階乗とは何だ?!」と思ってしまうが、広義積分することで複素数(もちろん実数も含む)も階乗可能になる。 ただし、筆者の使用用途では、正の実数以外の階乗を求めることはないので、ここでは複素数には踏み込まない。
ガンマ関数の定義
上の式はが正の整数以外の値を取る場合、下の式はが正の整数の値を取る場合である。 これらの関数でやなどの実数の階乗を求めることができる。
ちなみに0の階乗は1である。
なぜガンマ関数は階乗になるのか
次の動画を見ればわかるので、省略。
ガウス積分とは
ガウス積分とはガウス関数を実数全体で広義積分した、 のことである。
はガウス関数の原型に、、代入したものである。
ガウス関数をグラフにしてみると正規分布(ガウス分布)の形になる。ただし、厳密には形が似ているだけで、全体の面積(確率)は1になっていないので正規分布ではない。
は定数、は平均、は分散で、にを与えて、全体の面積を1に規格化することでおなじみの正規分布となる。
全体の面積を1に規格化したガウス関数は平均と分散の値によらず、実数全体の範囲で積分すると1になる。
参考
https://lecture.ecc.u-tokyo.ac.jp/~nkiyono/2006/miya-gamma.pdf
Pythonで欠損値を扱う。
Pythonで欠損値を扱う際、主にNone (Null), NaN(Not a Number)を扱うことになる。今回はこれらの違いについて説明する。
None (Null)
None
はPythonに標準で備わっているシングルトンオブジェクトである。PythonではNullをNone
として扱い、None
のみがNone
である。False
のように0や空のリストがNone
になることはない。
ついでなのでどういったものがFalse
と判定されるのかリストアップしておく。
以下はNone
ではなくFalse
と判定されるものなので注意すること。
- False (boolean)
- None (null)
- 0 (int)
- 0.0 (float)
- "" (空のstring)
- [] (空のlist)
- () (空のtuple)
- {} (空のdictionary)
- set() (空のset)
- NaNを比較演算する
NaN (Not a Number)
PandasでDataFrameを作ると、ある要素が空の場合その要素は自動的にNaN
になる。
したがって、実際の分析ではpd.read_csv()
やpd.read_sql()
でデータを読み込んで、欠損値があった場合NaN
を扱うことになる。
DataFrameでNaN
になる場合、その列の型がfloat64
のときはもちろんNaN
もfloat64
、文字列などのデータが入ったobject
型の列ではfloat
型となる。
ちなみにpandasで欠損値NaN
の判定をするためにはisnull()
を使う。numpyにはisnan()
があるが、一般的にpandasではisnull()
を使う。
None
はobject
型の列でしか使えないため、結論としては欠損値としてはNaN
を使うとよい。というよりも自動的にNaN
になるか、そうでない場合は、replace("None", np.nan)
でNaN
に統一してしまった方が扱いが簡単である。
>>> np.nan == np.nan False >>> bool(np.nan) True >>> np.nan == True False >>> np.isnan(np.nan) True
参考
大学数学を始めた。
久しぶりの投稿です。最近大学数学を始めました。 微分幾何と関数解析を勉強したいと思ったのがきっかけです。
一応数学科のカリキュラムを参考に勉強していけばゆくゆくはこれらの分野に足をつっこめると思い調べてみると、学部1年時は微積と線型代数ということで一通り勉強済みなのでスキップ。次に2年時あたりは1年間かけて集合と位相をしっかり勉強しているらしいので、ここから始めました。
松坂和夫先生の『集合・位相入門』から読み始めてみたが、zornの補題あたりから理解できず。選択公理はcontroversyな部分をいくつか記事を読んでみたが面白いですね。ただ公理から定義する数学に慣れていないので、やはりzornの補題等は理解できない部分が多々あるのでもう一度勉強する必要があります。
位相も勉強を始めて日は浅いが慣れかなーという感じ。結局集合にどういった構造を与えて空間を定義するといった問題なので、開集合と連続写像をもう少し論理ではなく直感的に理解したいところ。
今月末からは因果推論等をまた勉強するので、一旦その前に位相の理解を深めたいです。
Pythonのsuper()の引数!?
読んでいたPythonのコード内に
class SubClass: def __init__(self): super(SubClass, self).__init__()
というコードが出てきた。super()
に引数を取っているのは何?と思って調べてみると、Python2.x系ではこの書き方だったらしい。
3系から書き始めたので知らなかった。