裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ダメ出し:不適切な公式は使わないこと!

2012年06月15日 | ブログラミング

Rの手作りプログラム」中の「標本分散,標本共分散」について
#標本分散
sample.variance<-function(a) var(a)*(length(a)-1)/length(a)
  #以下でも同じ。
  #sample2.variance<-function(x) mean(x^2)-(mean(x))^2

#標本共分散
sample.covariance<-function(x,y) mean(x*y)-mean(x)*mean(y)

「標本分散」という使い方がおかしい。
これは詰まるところ,「変動をサンプルサイズで割る」という方の分散のこと。Excel なんかは,これは「母分散である」といっているが,これも間違い。そもそも,母分散なんか計算できるものではない。

名前は,単に「分散」という。「変動をサンプルサイズ - 1 で割る」分散は,「不偏分散」と呼ぶ。

それはさておき,mean(x^2)-(mean(x))^2 は非常にマズイ。
mean((x-mean(x))^2) とすべき。ちなみに,mean(x)^2 でよいし。
理由?それはね,場合によって計算誤差が出るから

> x <- 100000000+1:100

> sample.variance(x) # 著者が定義した関数による場合 正しい
[1] 833.25

> mean(x^2)-(mean(x))^2 # 著者が別法として提示したもの 誤り
[1] 834 # 誤った結果だ!!!

> mean((x-mean(x))^2) # 正しくは,このようにする
[1] 833.25

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:テストしてから使... | トップ | フィボナッチ数の一般項 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事