バイオインフォ道場、くまぞうです。
統計では、データの特徴をあらわすデータの代表値を考えることが多いと思います。良く知っているものばかりですが、Rでの算出方法なども確認しながら整理します。
まずは、まとめて要約
summary関数を使うと、基本統計量をまとめて計算・表示できるので便利です。最小値、第1四分位数、中央値、平均値、第3四分位数、最大値を表示します。
R> data <- rnorm(10, mean=5, sd=2) #母平均=5, 母標準偏差2の正規乱数10個生成 R> summary(data) R> data [1] 3.926160 6.505888 2.852456 8.927205 5.584508 3.365058 6.953775 2.385656 [9] 5.906996 5.055567 R> summary(data) Min. 1st Qu. Median Mean 3rd Qu. Max. 2.386 3.505 5.320 5.146 6.356 8.927
データの代表値を求める
代表値とは、データの特徴をあらわす値です。平均値や、最大値・最小値などいった値がふくまれます。
平均値
平均値を計算します。以下2つの計算は同じ結果です。
R> mean(data) [1] 5.146327 R> sum(data)/length(data) [1] 5.146327
データの範囲
最小値・最大値を計算します。
R> range(data) [1] 2.385656 8.927205
中央値(メディアン)
中央値は、データを大きさ順に昇順した場合、真ん中に位置する値です。データが偶数個ある場合は、真ん中2つの値の平均をとって中央値とすることが多いです。
R> median(data) [1] 5.320037
最頻値(モード)
モードは最も頻繁に観測されるデータです。Rでは頻度情報をtable関数で計算することが多いです。
R> data <- sample(1:10, 100, replace=T) R> data [1] 1 6 4 1 8 2 4 1 3 6 1 5 8 2 10 5 5 4 2 7 2 6 1 4 1 [26] 5 6 7 4 9 4 4 4 2 7 3 10 1 9 9 4 7 1 9 5 2 1 9 10 1 [51]10 3 3 8 2 3 10 7 7 5 4 4 9 4 3 2 5 1 3 2 8 5 7 5 8 [76] 6 3 1 8 6 2 4 1 7 5 10 7 7 4 2 10 8 5 3 7 4 2 6 3 1 R> tdata <- table(data) R> tdata data 1 2 3 4 5 6 7 8 9 10 14 12 10 15 11 7 11 7 6 7 R> tdata[tdata == max(tdata)] 4 15
連続値の出現頻度をみるには、範囲を区切ってみると便利です。
R> tdata2 <- table(cut(data, breaks=seq(1,10,2))) #1〜10までを、2つとびで区切る R> tdata2 (1,3] (3,5] (5,7] (7,9] 2 2 4 1 R> tdata2[tdata2 == max(tdata2)] (5,7] 4
モードの計算が一発でできないので、少し不便さを感じます。modeestというライブラリを使うと簡単に計算できます。
R> library(modeest) R> data [1] 1 6 4 1 8 2 4 1 3 6 1 5 8 2 10 5 5 4 2 7 2 6 1 4 1 [26] 5 6 7 4 9 4 4 4 2 7 3 10 1 9 9 4 7 1 9 5 2 1 9 10 1 [51]10 3 3 8 2 3 10 7 7 5 4 4 9 4 3 2 5 1 3 2 8 5 7 5 8 [76] 6 3 1 8 6 2 4 1 7 5 10 7 7 4 2 10 8 5 3 7 4 2 6 3 1 > mfv(data) [1] 4
ライブラリインストールは、「modeest_2.1.tar.gz」をダウンロードして、install.pakages(‘modeest_2.1.tar.gz’)します。