メインコンテンツまでスキップ

「Statistics」タグの記事が2件件あります

全てのタグを見る

Rで統計: ヒストグラムの描画 - hist()関数

· 約2分
Yu Sasaki
Enterprise Security Manager / Advisor

使用データは、ある30点満点のテストの20人分です。

19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26

プロンプト

hist()関数の引数にベクトル変数を代入することでヒストグラムを描画できます。

> test <- c(19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26)
> hist(test)
>

実行結果

30点満点テスト20人分の成績のヒストグラム

横軸が階級値で縦軸が度数(階級に入るデータ数)です。例えば、15**<x≦**20点の範囲の人が5人いる、と読めます。ただし、左端の0点データは0~5の階級に入ります。ここでは範囲の境界に注意しましょう(主に私が)。

データ作成に使用した乱数生成スクリプト

>>> import random
>>> [random.randint(0, 30) for i in range(20)]
[19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26]
>>>

つい最近慣れ始めたPythonで書いてしまいました。リスト内包表記が地味に便利なところです。リスト内包表記についてはこちらをご覧ください。→Python: リスト内包表記をfor文に書き換える

そして、乱数モジュールの使い方に関してはこちらを、→Python: 乱数の生成 - random()、randint()、uniform()、seed()メソッド

また、重複のない乱数を生成するスクリプトはこちらをご覧ください。→Python: モジュールにテスト関数を定義 - 重複のない乱数(整数MIN以上MAX以下)の生成

Rで統計: データ集合中の最大、最小、平均、中央値 - summary()関数

· 約3分
Yu Sasaki
Enterprise Security Manager / Advisor

使用するデータに2007年度のセリーグの打撃成績の1位~10位までの安打を用います。

参考:2007年度 セントラル・リーグ 個人打撃成績(規定打席以上)

順 位選 手安 打
1青木 宣親(ヤ)193
2ラミレス(ヤ)204
3谷 佳知(巨)172
4小笠原 道大(巨)177
5栗原 健太(広)175
6高橋 由伸(巨)155
7佐伯 貴弘(横)122
8相川 亮二(横)118
9赤星 憲広(神)120
10宮本 慎也(ヤ)139

上表より安打の基本統計量を求めるには以下のコマンドを使用します。

> summary(c(193, 204, 172, 177, 175, 155, 122, 118, 120, 139))
Min. 1st Qu. Median Mean 3rd Qu. Max.
118.0 126.2 163.5 157.5 176.5 204.0
>

1行目の「> 」以降の文字列がコマンドで2、3行目がその実行結果となり、実行結果の項目の意味はそれぞれ下表のようになります。

summary()関数の戻り値の意味

summary()意味
Min最小値
1st Qu第一四分位数
Median中央値
Mean平均値
3rd Qu第三四分位数
Max最大値

ここで、中央値とはデータ集合中の中央の順位に位置する値であり、第一四分位数と第三四分位数はそれぞれ、下から数えて1/4、3/4の順位に位置する値です。

ただし、データ個数が偶数個の場合は、中央(1/4、3/4)の順位に近い2つの値の算術平均をとります。

コマンドの説明

c()関数の引数に10人の安打数をカンマ区切りで代入し、戻り値として10人のデータをまとめたベクトル変数を得ます。summary()関数にそのベクトル変数を代入することで今回の実行結果を得ています。

ちなみに、c()の c は combine の頭文字からきています。

中央値と平均値の使い分け

平均値はデータ集合の散らばり具合が分かりませんので、その平均値がデータ集合全体を表すのに妥当かどうか判断できません(→散らばり具合は分散、偏差から分かる)。ただ、中央値によってそれをある程度補完することが出来ます。

仮に、上のデータに年間安打1000本の選手(現実そんなに打席に入れません>_<)を入れると

> summary(c(193, 204, 172, 177, 175, 155, 122, 118, 120, 139, 1000))
Min. 1st Qu. Median Mean 3rd Qu. Max.
118.0 130.5 172.0 234.1 185.0 1000.0
>

これによって平均値がかなり押し上げられていますが、中央値は1つずれただけですね。中央値はデータの個数と順序によって決まるものなので、突出したデータが少数入っていてもあまり影響は受けません。

最大値、最小値、平均値、中央値を求める関数(別個に)

ベクトル変数を以下のように設定したとき、

> batting2007 <- c(193, 204, 172, 177, 175, 155, 122, 118, 120, 139)

最大値、最小値、平均値、中央値はそれぞれmax()、min()、mean()、median()関数で求まります。

> max(batting2007)
[1] 204
> min(batting2007)
[1] 118
> mean(batting2007)
[1] 157.5
> median(batting2007)
[1] 163.5
>