次のようなデータから, 1次元の量的データをグラフや数値にまとめてみよう.
まずは, オールドフェイスフル(間欠泉)の噴出時間についてグラフでまとめてみよう. Rに用意されているオールドフェイスフルデータを読み出す.
data(faithful)
faithful とタイプするとデータが見れるが, ここでは長くなるので割愛. データ内には eruptions, waiting という2つの変数があり,ここでは waiting を扱う.
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(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.9
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
分散と標準偏差は次のように計算できる. ただしいずれもn-1で割ったものが出力される.
var(faithful$waiting)
## [1] 184.8
sd(faithful$waiting)
## [1] 13.59
データを標準化したい場合は scale 関数を用いる.ここでは全部表示すると長いので最初から20個のみ表示.
scale(faithful$waiting)[1:20]
## [1] 0.5960 -1.2429 0.2282 -0.6544 1.0374 -1.1693 1.2580 1.0374
## [9] -1.4636 1.0374 -1.2429 0.9638 0.5225 -1.7578 0.8903 -1.3900
## [17] -0.6544 0.9638 -1.3900 0.5960
外部データを読み込む場合には, R上でデータファイル(ここではcsvとするが他の形式も読み込める)を置いてあるフォルダに移動してから, read.csv 関数で読み込めばよい. フォルダを移動する方法はいくつかあるが, ここでは setwd 関数を使う方法を紹介しておく. setwdの括弧内には, 移動したいフォルダへのパスをうてばよい.
setwd("~/Documents/data")
surveydata <- read.csv("survey_data_utf8.csv", header=TRUE)
surveydata[1:10,]
## 性別 サイフの中身 脈拍
## 1 男性 5000 72
## 2 男性 15000 72
## 3 男性 2500 70
## 4 男性 27126 60
## 5 男性 10000 60
## 6 男性 8000 100
## 7 男性 10300 60
## 8 男性 304 66
## 9 男性 8000 70
## 10 男性 10000 80
hist(surveydata$脈拍,xlab="myakuhaku", main="myakuhaku")
<- は代入を表す(←を意味する). header=TRUE は, 1行目に変数名が入っていることを表している.