ハンバーガーショップで学ぶ楽しい統計学をR言語でなんとかしてみる (平均と分散を推定)
向後研究室が一般公開しているWeb教材
「ハンバーガーショップで学ぶ楽しい統計学」を利用してR言語を学んでいこうシリーズです。
詳しくは第1回目
ハンバーガーショップで学ぶ楽しい統計学をR言語でなんとかしてみる (平均)からご覧ください。
例のごとく、各語句の説明は教材にお任せしています。教材と会わせてお楽しみください。
2.1 平均的ポテトを推定する
http://kogolab.chillout.jp/elearn/hamburger/chap2/sec1.html
まずは教材のサンプリングデータをロードします。
sampling = scan("https://www.laddy.info/wp-content/uploads/2013/02/poteto_sampling.txt")
教材にあるように、一度標準偏差まで求めていきます。
> sum(sampling)
[1] 492 // 合計
> mean(sampling)
[1] 49.2 // 平均
> sum((sampling - mean(sampling)) ^ 2)
[1] 31.6 // 平均値から差分の二乗の合計
> sum((sampling - mean(sampling)) ^ 2) / length(sampling)
[1] 3.16 // 分散
> sqrt(sum((sampling - mean(sampling)) ^ 2) / length(sampling))
[1] 1.777639 // 標準偏差
母集団の中から限られた数のデータを取ってきます。こうして取ってくることを「抽出」(あるいは「サンプリング」)と呼びます。またこうして取ってきたデータを「標本」と呼びます。
2.2 母集団の平均と分散を推定する
http://kogolab.chillout.jp/elearn/hamburger/chap2/sec2.html
関数間違いに注意
ここの記事を書いている途中で気がついたのですが、
不偏分散と不偏標準偏差の関数を分散と標準偏差を求める関数として紹介している記事が多いようです。
直接計算式を組み立てていった場合と数字が異なっていたため気がつきました。。。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/59.htmlより
データの不偏分散を求める関数 var() は不偏分散を求める関数であって,標本分散を求める関数ではないことに注意.すなわち,データ x のデータ数を n,平均を求める関数を E() とすると,var(x) は以下を求めている.
よって,標本分散を求める場合は var() の結果を (n-1)/n 倍する必要がある.標本標準偏差を求める場合も同様である.
いよいよ難しくなってきました。
不偏分散を求める
不偏分散=((データ-平均値)の二乗)の総和÷(個数-1)
R言語では不偏分散の関数が用意されていて内容がよくわからなくてもすぐに出せてしまいます。
> var(sampling)
[1] 3.511111 // 不偏分散
var(x)で不偏分散は導きだせますが、
今までの計算式だとlengthを-1した数が不偏分散になります。
> sum((sampling - mean(sampling)) ^ 2) / (length(sampling) - 1)
[1] 3.511111 // 不偏分散
不偏分散が理解しにくいので解説しているサイトへリンク貼っておきます。
次の章は区間推定/信頼区間です。
だんだん計算式だけプログラミング言語に任せればいいやというなまぬるい感じではなくなってきたように思えます。
-
前の記事
unix系の/dev/nullをwindowsで実現する 2013.02.23
-
次の記事
ハンバーガーショップで学ぶ楽しい統計学をR言語でなんとかしてみる (区間推定/信頼区間) 2013.03.15