次のようなデータから, 1次元の量的データをグラフや数値にまとめてみよう.

まずは, オールドフェイスフル(間欠泉)の噴出時間についてグラフでまとめてみよう. R に用意されているオールドフェイスフルデータを読み出す.

data(faithful)

faithful とタイプするとデータが見れるが, ここでは長くなるので割愛. データ内には eruptions, waiting という2つの変数があり,ここでは waiting を扱う.

ドットプロット

ドットプロットは stripchart 関数を使って描くことができる.

stripchart(faithful$waiting, method="stack", offset=.5, at=0, pch=19, cex=1, col="red", main="old faithful data", xlab="waiting time (min)")

ただし, この stripchart は, データによってはオプションの offset などを変更する必要があるかもしれず, 少々使いにくい.

幹葉図

幹葉図は stem 関数を用いる.

stem(faithful$waiting)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   4 | 3
##   4 | 55566666777788899999
##   5 | 00000111111222223333333444444444
##   5 | 555555666677788889999999
##   6 | 00000022223334444
##   6 | 555667899
##   7 | 00001111123333333444444
##   7 | 555555556666666667777777777778888888888888889999999999
##   8 | 000000001111111111111222222222222333333333333334444444444
##   8 | 55555566666677888888999
##   9 | 00000012334
##   9 | 6

5 刻みになった. 10 刻みにしたいならば scale を半分にしてみよう.

stem(faithful$waiting, scale=0.5)
## 
##   The decimal point is 1 digit(s) to the right of the |
## 
##   4 | 355566666777788899999
##   5 | 00000111111222223333333444444444555555666677788889999999
##   6 | 00000022223334444555667899
##   7 | 00001111123333333444444555555556666666667777777777778888888888888889
##   8 | 00000000111111111111122222222222233333333333333444444444455555566666
##   9 | 000000123346

ヒストグラム

ヒストグラムは hist 関数で描くことができる.

hist(faithful$waiting, right=FALSE, main="old faithful data", xlab="waiting time (min)")

R では right=FALSE を指定すると「○○以上△△未満」と右端を含まない階級にできる.

階級の境界は breaks で指定できる.

hist(faithful$waiting, breaks=c(40,60,80,100), right=FALSE, main="old faithful data", xlab="waiting time (min)")

縦軸を密度にするには freq=FALSE とすればよい.

hist(faithful$waiting, right=FALSE, freq=FALSE)

箱ひげ図

箱ひげ図は boxplot 関数で描ける.

boxplot(faithful$waiting, horizontal=TRUE)

horizontal=TRUE で横向きにしたが, つけずに縦向きにすることもできる.

今度は iris データを読み込んで, 品種ごとに Petal Length の箱ひげ図を描いてみる.

data(iris)
boxplot(Petal.Length~Species, data=iris, horizontal=TRUE)

外れ値を描かないタイプの箱ひげ図を描くときは以下のようにする.

data(iris)
boxplot(Petal.Length~Species, data=iris, horizontal=TRUE, range=0)

数値による要約

平均, 中央値は次のように計算できる.

mean(faithful$waiting)
## [1] 70.89706
median(faithful$waiting)
## [1] 76

五数要約は以下の通り.

summary(faithful$waiting)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    43.0    58.0    76.0    70.9    82.0    96.0

summary 関数は, ここでは五数要約の出力であったが, 他にも様々な用途で用いられる.

分散と標準偏差は次のように計算できる. ただしいずれもn-1で割ったものが出力されることに注意が必要.

var(faithful$waiting)
## [1] 184.8233
sd(faithful$waiting)
## [1] 13.59497

その他

データを標準化したい場合は scale 関数を用いる.ここでは全部表示すると長いので, head 関数で最初のほうのみ表示.

sc <- scale(faithful$waiting)
head(sc)
##            [,1]
## [1,]  0.5960248
## [2,] -1.2428901
## [3,]  0.2282418
## [4,] -0.6544374
## [5,]  1.0373644
## [6,] -1.1693335

外部データの読み込み

外部データを読み込む場合には, R 上でデータファイル(ここでは csv とするが他の形式も読み込める)を置いてあるフォルダに移動してから, read.csv 関数で読み込めばよい. フォルダを移動する方法はいくつかあるが, ここでは setwd 関数を使う方法を紹介しておく. setwd の括弧内には, 移動したいフォルダへのパスをうてばよい.

setwd("~/Documents/data")
surveydata <- read.csv("survey_data_utf8.csv", header=TRUE)
head(surveydata)
##   性別 サイフの中身 脈拍
## 1 男性         5000   72
## 2 男性        15000   72
## 3 男性         2500   70
## 4 男性        27126   60
## 5 男性        10000   60
## 6 男性         8000  100
hist(surveydata$脈拍,xlab="myakuhaku", main="myakuhaku")

<- は代入を表す(←を意味する). header=TRUE は, 1行目に変数名が入っていることを表している.