今日は緑本第2章を読んで実装しました。
以下のコードは本に載っているものと異なります。オリジナルのコードはRなのですが、ここでは私が慣れているPythonで進めていきます。
色々言葉でまとめてある部分は、私のメモなので、オリジナルの文章と異なります(引用させて頂いている部分もありますが)。間違いに気づいた方は是非、指摘して頂けると幸いです。よろしくお願いいたします。
第2章:確率分布と統計モデルの最尤推定
例題:植物の種子数の統計モデリング
目標:ある架空植物50個体それぞれの種子数を統計モデルで表す。
データを読み込む前に…
データを眺める時は以下を意識する。
説明したい変数(モデル化したい確率変数)は
- 離散か連続か?
- 範囲は?
- 標本分散と平均の関係は?
1. データ読み込み
ある架空植物50個体についての種子数データ
(http://hosho.ees.hokudai.ac.jp/~kubo/stat/iwanamibook/fig/distribution/data.RData )
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from scipy.stats import poisson
%matplotlib inline
df = pd.read_csv('ch2_data.csv') df.head()
x | |
---|---|
0 | 2 |
1 | 2 |
2 | 4 |
3 | 6 |
4 | 4 |
→種子数(モデル化したい確率変数)はカウントデータ
2. データ可視化
データの可視化はデータ解析で最も重要なパート
# ヒストグラム df.hist(bins=10) # binsで表示する棒の数を指定(何個の階級に分けるかを調整、とりあえずデフォルト値の10)
# データの要約
df.describe()
x | |
---|---|
count | 50.00000 |
mean | 3.56000 |
std | 1.72804 |
min | 0.00000 |
25% | 2.00000 |
50% | 3.00000 |
75% | 4.75000 |
max | 7.00000 |
→
- 植物50個体分が格納
- 種子数は0~7個(中央値は3個)
- 種子数の標本平均は3.56個((不偏)標準偏差は約1.73)
# (不偏)標本分散
df.var()
x 2.986122
dtype: float64
→標本分散は約2.99
(わざわざ.var()で求めなくても、describe()で求めた標準偏差を2乗すれば同じ…)
ここまでで掴めた特徴
- データはカウントデータ(非負の整数)
- 種子数の標本平均は3.56、分散2.99
- 個体ごとの種子数のヒストグラムはひと山の分布で表せそう
今日はここまで。
次回は、このデータがどのような確率分布から発生したかを考えてモデリングします。
現象を数理モデルで表現・説明するのに慣れていない人のために、章ごとに異なる例題を解決していく過程を通して、統計モデルの基本となる考えかたを説明する。前半では、応用範囲のひろい統計モデルのひとつである一般化線形モデルの基礎を、後半では、実際のデータ解析に使えるように、それらをベイズ統計モデル化する方法を説明する。
コメント