2011-06-09

ソルバーを用いた最尤推定量の求め方

今日のテーマ

最尤推定量は(対数)尤度を最大にする値としてデータから計算できます。この計算式θ=θ(X1,X2,...,Xn)を具体的に書き表すことが出来る問題もあります(以前の小テストで出しました)が、計算を間違えることもありますし、どんなに頑張っても計算式を求めることが出来ない問題もあります。
そこで今日はExcelを使って最尤推定量を求めて、AICを計算し、モデルを選ぶ方法を勉強しましょう。

準備

Excelを立ち上げたら左上の丸いボタンを押して、「Excelのオプション」をクリックします。そして左側の「アドイン」をクリックして、下の「管理:Excelアドイン」の横の「設定」をクリックします。

するとアドインの画面に切り替わるので「ソルバーアドイン」にチェックをつけてOKをクリックします。 「インストールしますか」と聞かれたら「はい」と答えます。

サンプルデータ

男児女児
期間(週)体重(g)期間(週)体重(g)
402968403317
382795362729
403163402935
352925382754
362625423210
372847392817
413292403126
403473372539
372628362412
383176382991
403421392875
382975403231
出典:一般化線形モデル入門, Annette J.Dobson 著, 共立出版
これをコピーしてエクセルに貼り付けてください。散布図を書くとこのようになります。

考えるモデル

パラメータが少ない順番に
男女共通モデル
男女ともY=α+βX+ε, ε~N(0,σ2)
つまり妊娠期間Xに対して体重Yの確率分布は
男女ともN(α+βX,σ2)
推定するパラメータはα, β, σの3つ。
傾きだけ共通モデル
男児:Y=α1+βX+ε, ε~N(0,σ2)
女児:Y=α2+βX+ε, ε~N(0,σ2)
つまり妊娠期間Xに対して体重Yの確率分布は
男児:N(α1+βX,σ2)
女児:N(α2+βX,σ2)
推定するパラメータはα1, α2, β, σの4つ。
男女別モデル
男児:Y=α11X+ε, ε~N(0,σ2)
女児:Y=α22X+ε, ε~N(0,σ2)
つまり妊娠期間Xに対して体重Yの確率分布は
男児:N(α11X,σ2)
女児:N(α22X,σ2)
推定するパラメータはα1, α2, β1, β2, σの5つ。
まず最初に、パラメータが一番少ない男女共通モデルについて、α, β, σをExcelに求めてもらいます。この問題に関しては既に小テストで、α, βをデータを用いて書き表す式を求めていますが、そのような式を求めることが出来ない場合でもExcelに求めてもらうための練習として、この問題に関してもExcelに求めてもらいます。
そのためには、まず最初に適当な初期値を与えます。するとExcelのソルバーはそこから出発して真の値に近づいていきます。初期値をどのように与えればよいでしょうか。最初から真の値が分かるならExcelのソルバーに頼る必要はないのですから、真の値に近くてしかも簡単に求められる値を初期値として使います。
直線y=α+βxのαとβの両方を簡単に知ることは出来ませんが、水平な線、つまりβ=0ならば、その高さαは平均値にしておけば大体データに近そうです。この時σは平均値からのずれ、つまり標準偏差にしておきましょう。
そこで早速体重の平均値と標準偏差を求めましょう。Excelに次のように貼り付けます。

A15に平均、A16に標準偏差と書いてから、B15に平均を求める式、B16に標準偏差を求める式を書きます。
B15にはB3からB14までとD3からD14までの平均ということで =AVERAGE(B3:B14,D3:D14) と書きます。先頭の等号を忘れないでください。
B16にはB3からB14までとD3からD14までの標準偏差ということで =STDEV(B3:B14,D3:D14) と書きます。
するとこのようになります。

セルの幅に合わせて四捨五入されますので、人によって表示される値が少し違うこともあります。
この値を参考にしてα, β, σの初期値を決めます。
まずA17, A18, A19セルにα, β, σと書いて
B17セルにはαの初期値として平均値を書きます。適当なところで四捨五入してかまいません。
B18セルにはβの初期値を書きます。傾きが良く分からなくて水平線を引くので0にします。
B19セルにはσの初期値として標準偏差を書きます。これも適当なところで四捨五入してかまいません。

対数尤度の計算

確率関数や密度関数にデータを代入した値が尤度、それにlogをつけたのが対数尤度です。独立な複数の観測値に関して尤度は掛け算になっているので、logをつけて掛け算を足し算にします。
log(Πi=1nf(Xi))=Σi=1nlog(f(Xi))
正規分布N(μ,σ2)の密度関数は =NORMDIST(x, μ, σ, 0) です。最後の0を1に変えると分布関数になります。
今回の問題では、xのところが体重yで、平均値μがα+βxです。それにlogを付けますが、Excelでは自然対数は =LN(x) ですのでE3セルに =LN(NORMDIST(B3,B$17+B$18*A3,B$19,0)) と書きます。対応するセルに色がつくので確認してください。

α, β, σに相当するB17, B18, B19の数字の前には$を付けています。これはこの式をコピーして下に貼り付けても番号が変わらないようにするためです。
E4セルからE14セルにも同様に数式を書きます。一つ一つ書いていると手間がかかりますのでE3セルをコピーして貼り付けます。数式の中のセルの番号がどのように変わるか確認してください。
次にF3セルに女児の一人目の対数尤度の式 =LN(NORMDIST(D3,B$17+B$18*C3,B$19,0)) を書きます。

これもF4からF14へコピーして、E3からF14まで全部足したものが対数尤度です。
E15セルに対数尤度と書いて、F15セルに合計を求める式 =SUM(E3:F14) を書きます。

ソルバー

ここが今回のポイントです。これからα, β, σに色々な値を代入して対数尤度が最大になればよいのですが、試行錯誤するのは大変ですのでExcelのソルバーを使います。
エクセルの上の列の「データ」をクリックして、右側の「ソルバー」をクリックします。「ソルバー」が見当たらなかったら、このページの上の準備のところを見てください。

するとこのような画面が表示されるので、F15を最大にするためにB17からB19を変化させる、と指定します。

「実行」をクリックすると対数尤度が大きくなるようにα, β, σの値が調整されて次のメッセージが表示されます。

OKをクリックすると、対数尤度の値が最大になっています。

AICの計算

このようにして求めた対数尤度の最大値からパラメーターの個数を引いた値が一番大きなモデルが、一番良いモデルなのですが、この方法が考えられた経緯から、
-2×(対数尤度の最大値)+2×(パラメータの個数)
をAIC (Akaike information criterion)といい、マイナスを掛けているのでAICが一番小さなモデルが一番良いモデルです。
このモデルのAICは-2×(-159.265)+2×3=324.53です。

レポート課題

傾きだけ共通モデル、及び男女別モデルについて、最尤推定量及びAICの値を求め、どのモデルが一番良いか選びなさい。

2011-06-03

代表的な確率分布

離散型確率分布としてよく使われる二項分布とポアソン分布を、そして連続型確率分布の例として指数分布を説明しました。
小テスト

2011-06-02

最尤推定量の性質

平均対数尤度を対数尤度を用いて推定するときのバイアスを推定するために必要となる、最尤推定量の性質について説明しました。

2011-05-27

確率分布

板書の時間を取ったため、用意したスライドの一部は来週に回しました。ここに載せるスライドは、来週に回したスライドは削除しています。
小テスト

2011-05-26

バイアスの推定

平均対数尤度を対数尤度を用いて推定するときのバイアスを推定しました。

2011-05-21

たまの港フェスティバル

たまの港フェスティバルのために玉野市に来ました。

まずは「海カフェSETO NO KAZE」でお昼ごはん。以前は「カレー工房瀬戸ノ風」という名前でした。


瀬戸内海を眺めながらランチ。


あっさりした味で、一口目で感じた美味しさが最後の一口まで続きました。これまで、外食だと味が濃くて最初の一口は美味しいけれど食べ終わる頃は味がしつこく感じることが多かったですが、この店はそんなこともなく、また来たいと思います。


たまの港フェスティバルへ。


植込みの花が綺麗です。


猫のコスプレの女の子。すれ違う人たちの注目の的でした。


航海訓練船「銀河丸」が一般公開されていましたので行ってみます。


エンジン


船の中のエレベーター。階数ではなくデッキ名で表示されています。


デッキからの眺め


フェスティバル会場では自衛隊の紹介も行われていました。

google chrome安定版11.0.696.71
http://dl.google.com/chrome/install/696.71/chrome_installer.exe

2011-05-20

確率

確率に関する講義の最初として、事象を定義し、ベイズの公式について説明しました。
マンモグラフィを使った乳がん検診の例はベイズの説明によくつかわれます。また小テストに使ったテレビ番組はモンティ・ホール問題として有名です。
小テスト

2011-05-19

推定量の偏り

平均対数尤度を対数尤度を用いて推定しようとするときに生じるバイアスについて説明しました。

学内の池にハスの花が咲いていました。

2011-05-18

最近使っているデジタルカメラ

私の現在のデジカメの使い方をメモ代わりに記録しておきます。

NIKON D7000+AF-S DX NIKKOR 16-85mm f/3.5-5.6G ED VR
主として使っている組み合わせです。あらゆる操作に対して反応も速くAFも正確で、撮りたいと思った瞬間に撮りたいと思った通りに撮れます。これで綺麗に撮れなければ自分の腕のせいだと諦めがつきます。
撮影時は
アクティブDライティング:オート
ピクチャーコントロール:スタンダード、明るさ-1
にしてRAW+JPEG撮ります。そしてパソコンでCaptureNX2を使って現像するときに
アクティブDライティング:OFF
ピクチャーコントロール:ニュートラル、明るさ0
にします。
ニコンのマルチパターン測光は逆光の時にも暗い部分が真っ黒にならないように明るく写してくれますが、そのために明るい部分が真っ白になることがあります。 アクティブDライティングをONにすると、明暗差が大きい時は明るい部分が真っ白にならないように少し暗めに写して、画像処理によって暗い部分を少し明るくなるように補正します。 その画像処理も年々向上しているので不自然さは少なくなりましたが、画像を分割して処理するので若干の不自然さが残りますから、CaptureNX2を使ってOFFにします。 撮る時からOFFにしていると明るい部分が真っ白になることがありますので、撮影時はONで現像時にOFFにします。
現像時にOFFにすると、撮影時のJPEGと比べて画像が暗く、コントラストが大きくなるので鮮やかに見えます。その差が目立たないように撮影時は暗め、ピクチャーコントロールをニュートラルより鮮やかなスタンダードにしています。
CaptureNX2だけで処理を完結させても良いのですが、周辺減光の自動補正はDxOでなければ出来ませんし、歪曲収差補正の正確さ、補正によって切り捨てられる部分の少なさという点でもDxOの方が優れているので、CaptureNX2で歪曲収差補正をOFFにしてTIFFで保存して、DxOで歪曲収差と周辺減光を補正しています。 以前はそんな手間をかけずにDxOで最初から現像していましたが、色がどうしてもDxO独特の色になり、それが好きな人もいますが、私はNIKON本来の色にしたいので現像はCaptureNX2を使っています。
処理の順序としては、まずCaptureNX2のバッチ処理で上記設定をNEFファイルに記録。FaststoneImageViewerでNEFファイルに埋め込まれたJPEG画像ファイルを見ながら、調整した方が良さそうな画像はCaptureNX2で設定を変更。この方法だとNEFファイル自身を見ながらチェックするので、撮り損ねを削除するときもすぐできます。全画像の調整が終わったら、バッチ処理で歪曲収差を補正せずにTIFFファイルに保存して、DxOで歪曲収差と周辺減光を補正します。
CaptureNX2のノイズリダクションを「高速」から「高品位」にすると効果が強くなってボケます。撮影時の「高感度ノイズリダクション」の設定を一段階落としておいてからCaptureNX2で「高品位」にすると良いです。さらにもう一段階落としてからCaptureNX2のノイズリダクションの中の「シャープネス」を0に落としています。ノイズリダクションを強くかけて、それによってボケる分をシャープネスを強くかけることで補うか、ノイズリダクションを強くかけず、シャープネスをかけないことでノイズを目立たせないか、は好みによります。前者の方がパッと見の見栄えは良いですが、エッジと平らな部分の差が不自然なので、私は後者が好みです。
追記:日中屋外の写真ならそれで良いのですが、夕方以降、感度1600以上の写真を解像度の低下を最小限に抑えつつノイズを消すという点ではDxOの方が優れています。
最近気づいた問題点として、暗いとピントが合わないことがD90よりも多い気がします。一つの理由として、D90はちょっとでも暗いとAF補助光が光っていたと思うのですが、D7000はかなり暗くなるまで光らないようです。もう少し明るくても光った方が良いと思います。

RICOH GXR+GR LENS A12 28mm F2.5
NIKON D90と同じAPS-Cセンサーに、単焦点レンズを組み合わせていますから、写りだけならズームレンズのNIKKOR 16-85mmよりも綺麗です。 手振れ補正はありませんが、レンズシャッターですので、ミラーアップしてフォーカルプレーンシャッターを動かす一眼レフと比べれば手振れしにくいです。
但しコントラストAFがあまり速くなく、少し暗くなると不正確になり、夜景の点光源だと全く合わなくなります。 またD90と同じセンサーなのでD7000と比べると高感度ノイズも多く、低感度側もISO200までしか下げられないのでD7000のISO100と比べればノイズが多いです。
従って、撮影者が撮りたいものを撮るのではなく、このカメラが綺麗に撮れるもの、具体的には昼間の風景を撮る、という使い方になります。 単焦点レンズなので画角に合わせて撮るのが当たり前なのかもしれませんが、それ以外を撮ると「D7000で撮れば良かった」と後悔することになります。 D7000と比べれば小さく持ち運びしやすいですが、コンパクトデジカメと比べれば大きいですし、コンパクトデジカメならズームも使えます。 勿論画質はコンパクトデジカメより圧倒的に良いのですが、遠くの小さいものをこのカメラで撮ってトリミングするくらいなら、コンパクトデジカメのズームの方がマシです。

Canon Powershot S95
この小ささのコンパクトデジカメの中では一番綺麗に撮れます。手振れ補正が強力なので、少々暗くても動いていない被写体ならシャッター速度を落とすことで感度を上げずに撮れるので綺麗な写真が撮れます。 D7000やGXR A12ほど綺麗には撮れませんが、どんなに綺麗に撮れるカメラでも撮りたいときに手元に無ければ撮れないので(仕方なく携帯電話のカメラで撮ることになります)、小さくて常に持ち歩けることも重要です。 RAWで撮れるので、パソコンでデジタル一眼レフ同様の処理ができます。レンズの歪曲収差が大きいですが、JPEGでは補正されていますし、DxOでも補正できます。

Nikon|技術・研究開発|VR(手ブレ補正)システム
サポート対象レンズプロファイル(Photoshop Lightroom 3/Photoshop CS5/Camera Raw)

2011-05-13

線形回帰

今日で第一章は終わりです。
教室後方のディスプレイは今日はちゃんと映りました。今後映らなくなることがあったら、遠慮なくその場で教えてください。
小テスト

2011-05-06

分散

教室後ろ側のディスプレイに映っていませんでした。少し加筆しました。
小テスト

2011-05-04

福岡都心100円バス

福岡都心100円バス
博多駅~天神間のバスは100円均一です。
だけどバス停を1つ間違えて100円均一の外で乗ってしまったので220円になってしまいました。

google chrome安定版11.0.696.68
http://dl.google.com/chrome/install/696.68/chrome_installer.exe
映画にまつわるトリビア

2011-05-03

JQ CARD

新しい博多駅でJQ CARDの勧誘がなされていました。
先日、山陽・九州新幹線に安く乗るために1か月も待ってJ-Westカードを作りましたが、このJQカードでも同じ割引額のeきっぷを買うことができ、しかも即日カードを受け取れます。
また、JR九州旅行の商品を3%引きで買うことができるのでカードを作りました。でも岡山ではあまり使う機会がないと思います。
博多口側のアミュプラザ博多や筑紫口側の博多デイトスでこのカードで買い物すると請求時に5%引きになるそうです。
但し、アミュプラザの東急ハンズや一部店舗(飲食店など)では値引く代わりにJQポイントを3%、博多阪急では2%くれるだけですし、ポイントには有効期限があります。SUGOCAにチャージするなら100円分から出来そうですが(詳細がホームページに書いていないので断言できません)JR九州エリアのオートチャージ設定対応自動券売機が必要ですし、郵送で交換するには2000円分のポイントが必要みたいですので、ポイントを使えないまま期限切れになる可能性があります。それならば確実にポイント還元出来る他のカードを使った方が良いかもしれません。
ポイントの確認はJQ Net Clubに登録する必要があり、このカードを使って安く切符を買うにはJR列車予約サービスに会員登録してクレジットカードを登録する必要があります。

天神地下街ではてんちかカードというポイントカードを使うと、単にポイントがたまるだけでなく、店によっては色々特典があります。ポイントを使うには500ポイント貯める必要があり、福岡に住んでいないとなかなかそこまでは貯まりませんが、特典期待で作りました。無料ですし。

関係ないですが
google chrome安定版11.0.696.65
http://dl.google.com/chrome/install/696.65/chrome_installer.exe