データ解析のための統計モデリング入門 2章 - ①
一回目から(中身のない一回目)時間空きすぎで自分でも結局やらないような気はしてましたが、やります。できるだけ、少しづつ。
今日はタイトルの通り久保拓弥さんの「データ解析のための統計モデリング入門」の2章の内容をまとめていきたいと思います(が、やってみて半分までしか進みませんでした)。1章は、気になる人は読んでみてください笑
この章のポイントは下記だと思ってます。
- データの発生メカニズムが確率分布に従っているという仮定を理解すること
慣れない人にとっては確率分布って何、という所がもやもやする所だと思います。僕の考えですが、ざっくり言えば「起こりうる事象に対して、もれなく生起確率を割り当てるもの」だという理解でいいと思っています。もちろん、事象の確率の総和が1になるとか、確率が必ず0以上であるとか、厳密には色々と制約がついてきますが、そこら辺に興味がある方は数理統計の入門書など見ていただければと思います。
さて、2章では架空の植物から得られた種子数データを使って、このデータが、あるポアソン分布を使ってうまい具合に表現できるよねということを確かめていきます。この、うまい具合に表現できる、というのは、再現できる確率が高い、という意味で僕は理解をしています。
使われているデータはこんな感じでした。
gist98bbd458ba96f99215d5583a4cfc36ad
Rのコードを貼り付けたものですが、
生態学データ解析 - 本/データ解析のための統計モデリング入門、ここで本に扱われているデータをダウンロードできるので、ここから持ってきました。
ls() という関数は今R上で保存されているオブジェクトを全て列挙する関数です。立ち上げた時点では何も表示されないはずですが、load()関数でデータを読み込んだのでdataというオブジェクトが保存されていることが確認できます。よく今何があるんだっけ、とか、作りすぎて消したいけどどれを消していいんだっけ、見たいな時に僕は使います。
読み込んだらとりあえず要約値を見たり図示したりしてデータがどんなもんかを把握するのが、データ解析の第一歩だ、ということがよく言われているので、そうしてみましょう。
summary()関数は四分位点と平均値を返してくれて、table()関数は数値毎に何個あるのかを表形式で返してくれます。また、var()関数は分散を返してくれます。ぱっと見て、平均が3.56で平均に近い値が多く見られているといった感じですね。分散は約2.99でした。つまり、この中から1つデータをとってきた時に、平均すると、平均3.56と取り出したデータとの差の二乗が2.99です、ということです。なんで差の二乗なんだって所ですが、今の所は分散の計算をする時に「各データと平均との差の二乗」を使っているから、ということにしておきます。でもこれだとややこしくて、じゃあ一体実際の数値としてどのくらいなの?という話になるので、これの平方根を取って単位を直してあげます。これが標準偏差です。
標準偏差を使って言い直すと、このデータから1つ値をとってきた時に、平均すると、平均3.56との差が標準偏差1.73くらいあるでしょう。ということになります。大分すっきりしましたね。
ヒストグラムで図示もしてみます。
- 「種の数」なので、負の値はとらない(種の数が-3ということはありえない)
- 同様に、1.4などの少数点以下に0以外の値を持たない。
gist65465013b1fdab935be94045ddba473c
ヒストグラムに重ね書きしてます。par(new=T)と入力すると、次に出力された図をそのまま重ね書きしてくれます。軸とか軸名とかも全部。なので後から出力される図はそれらを全部消す形で書いてます。こういう重ね書きの仕方は本当は良くなくて、できるならpoints()とかlines()で書いたほうがいいんですけど、縦軸の値を合わせたくなかったので力技で書いてます。ちなみに、各ポアソン分布については縦軸を合わせて書いてます。
これをみると、図の中で、データの分布と同じ形をしてそうなのはλ=3.56かな〜というあたりがつきますね。(出来レース感がすごい笑)
ということで今回はここまでです。次は「見た目」、じゃなくて「数値的」に最適なポアソン分布を探そうという所からです。
ブログって書くの疲れますね。内容や文章など拙いもので申し訳有りません。何かご指摘があれば是非いただければと思っています!
ここまで読んでくださった方がいたら、本当に有難うございました。これからも細々と書いていこうと思います。では。m(_ _)m