PR

5分でわかる!Rで平均値や中央値を計算するのは簡単な方法

医学統計学
記事内に広告が含まれています。

データの中心を見つける

集めたデータを一つの数字で代表させるにはデータの中央つまり、平均値が最適です。 

一般に平均値とは算術平均のことを指しています。他にも相加平均と呼ばれることもあります。

平均値の公式はシンプルで、日常茶飯事に使用していますね。

平均 = データの合計 ÷ データ数

この平均値の

長所:

  • 平均値を見れば、データ全体の中心的な傾向を見ることができます。
  • 統計学に詳しくなくても計算が簡単で、理解しやすい。
  • 統計学では多くの公式に用いられる。

短所:

  • 外れ値の影響を受けやすい。(対策として中央値や最頻値を用いる)

もう一つ注意点として、統計学では母集団と標本があるように、平均にも母平均(population mean)と標本平均(sample mean)の区別ができるようしておきましょう。

  • 母平均とは母集団の平均値
  • 標本平均とは母集団から抽出された標本の平均値

Rを使った平均値(算術平均)の求め方

では、平均値の例として5人の男性の年齢が次の通りだったとします。 

23, 27, 51, 35, 41

この5人の男性の平均年齢は、35.4歳となります。 

Rで平均値を計算する関数としてmean()関数があります。
mean()関数を上の5人の男性の年齢の例に当てはめてみましょう。
まず、ageというベクトルを作ってから平均値を求めます。

age <- c(23, 27, 51, 35, 41) 
mean(age)
[1] 35.4 

5人の男性の平均年齢は35.4歳でしたね。
Rのmean関数を使えば簡単です。

データフレームの数値から平均を求める

次はエクエルのシートに入力したデータ等のデータフレーム形式になっているデータの項目を選択して平均値を求めてみましょう。

最初にサンプルデータ(physical_assessment)をインポートしてください。
データのインポート方法は下のリンクを参照してください。

では、サンプルデータから女性(2)の年齢(age)の平均値を求めてみます。

  1. 女性の年齢(age_female)というベクトルを作ります。(下を参照)
  2. $記号は「~列名」を意味して「physical_assessmentのage列」を選択しています。
  3. [ ]は列の特定の値を指摘するもので、「physical_assessmentのsexが2(女性)」を選択しています。

age_female <- mean(physical_assement$age[physical_assement$sex == 2])

age_female
[1] 74.44828

上記の方法では、$を使ってデータフレーム内の変数を選択しました。
$の場合、毎回、データフレーム名を入力する必要があります。

他にも、$の代わりにwith()を使うことで、データ・フレーム名前を何度も入力しなくていい方法もあります。

with()関数では、()内の最初の引数はデータフレーム名、2番目の引数はテータフレーム内の変数を選択するだけです。 

先程の例ならば、

age_female <- with(physical_assement, mean(age[sex == "2"]))

age_female
[1] 74.44828

となります。

Rで外れ値をトリミング(削除・除去)する方法

外れ値とは、データ中の極端な値のことを指します。そして平均値の短所として、外れ値の影響を受けやすいことは既に述べました。

外れ値の対策として、標本平均を計算する前に、データをトリミングすることによって、外れ値に対処することができます。つまり、平均値を計算する時に上限と下限の極端な値を排除してしまう方法です。

例えば、スコアの上限と下限の任意のパーセントをトリミング(削除・除去)するためのR関数として、mean()にtrimという引数を追加することができます。

先程の女性の年齢の例を使って、5%上限・下限をトリミングすると、

age_female <- with(physical_assement, mean(age[sex == "2"], trim = .05))

age_female
[1] 74.74074

となり、トリミングしていない平均値より少し高い結果になりました。 

しかし、忘れていはいけないのは平均値をトリミングして報告するときは、

  • トリミングを行ったこと
  • トリミングした割合

を報告する必要があります。

Rで中央値(メディアン)を求める

外れ値のような極端な値を含むデータを扱う場合、算術平均はデータを代表する代表値としてふさわしくない場合があります。

一方で、中央値とはデータを小さい順に並び替え、その中央に位置する値をデータの代表値とします。

中央値の

長所:

  • 外れ値の影響を受けない

短所:

  • 多くのデータが未使用となる

例えば、次のデータの平均値を求めると

x <- c(0, 1, 5, 5, 5, 7, 8, 90)
mean(x)
[1] 15.125

と、平均値は15.125と最後の90以外はすべて10以下であるにも関わらず、平均値が90に大きく影響されています。

一方で、median()関数を使えばRで簡単に中央値を求めることができます。 

median(x)
[1]5

中央値は5となりましたね。

練習問題

  1. 以下のデータの算術平均と中央値を求めよ

6, 10, 1, 8, 46, 4, 7, 0, 5, 3, 9

x <- c(6, 10, 1, 8, 46, 4, 7, 0, 5, 3, 9)
mean(x)
[1] 9
median(x)
[1] 6

  1. 以下のデータは担任教師が生徒の1年間の読書数(冊)を調べた結果です。

10, 27, 4, 12, 8, 2, 7, 13, 6, 22, 20, 4, 71, 8, 10, 5, 15, 3, 12, 7

算術平均と中央値と5%トリミングした平均値を求めよ

x <- c(10, 27, 4, 12, 8, 2, 7, 13, 6, 22, 20, 4, 71, 8, 10, 5, 15, 3, 12, 7)
mean(x)
[1] 13.3
median(x)
[1] 9
mean(x, trim = .05)
[1] 10.72222

まとめ

Rを使った平均値・中央値と平均値でのトリミング方法についてまとめてみました。エクセルでも可能ですが、R操作もとてもシンプルですので、是非、使ってみてください。

コメント