第1章 データの整理と表現

注意:数式が適切に表示されるまで,少し時間がかかります。

統計検定2級対策として学習しているテキスト, 村上正康・安田正實『統計学演習』(培風館)第1章の補足解説を提供します。

この章について

データを得たら,まずは表やグラフにして,特徴を視覚的に把握します。 分布の形,中心,ちらばり,外れ値(他とはかなり異なる値)の有無などを観察します。 度数分布表,茎葉図(幹葉図),ヒストグラム,度数多角形,箱ひげ図などが用いられます。 統計検定2級の試験で表やグラフを作成することはありませんが, エクセルや R を用いて作成できるようにしましょう。 箱ひげ図は統計検定2級の範囲に含まれていますが, この問題集では扱われていませんので,別に学習してください。

データを視覚的に把握したら,次に,数値を用いてデータを要約します。 「中心」を表す統計量としては,平均値,中央値,最頻値が用いられます。 散らばりを表す統計量としては,分散,標準偏差,四分位偏差などが用いられます。

例題

例題1
データの CSV ファイル
救急車の出動回数は,整数値のみをとる 離散型(discrete type)のデータです。 度数分布表(frequency table)を作成するとき, 連続型(continuous type)のデータとは異なり, 階級(class)の設定は必須ではありません。 とりうる整数値があまり広範囲でなければ,それぞれの値について 度数(frequency)を数えます。 テキストの解答例はこれを手作業で行っていますが, 実際のデータ分析ではエクセルや R などのツールを使用できます。
上のリンク「データの CSV ファイル」からデータを入手して, エクセルを用いてこの例題に取り組んでみましょう。 以下のリンクの動画で解答例を示していますので,参考にしてください。
解説動画(YouTube): 離散型データでの度数分布表作成と中心傾向の測度の計算(エクセル編)
分析を行ったファイルは,CSV では保存できませんので,エクセルブック(*.xlsx)として保存してください。 以下のリンクから解答例のエクセルブックを入手できます。
エクセルを用いた例題1の解答例
R を用いたこの問題への解答は以下の動画で解説しています。 度数分布表を作成するために table 関数を使いました。 例題3で解説するように, ヒストグラムを描画することで度数分布表を得ることもできます。 ただし,離散型のデータでは,分布を把握する図としてヒストグラムは適切ではありません。 かわりに 棒グラフ(bar chart)を描きます。 ヒストグラムは連続型のデータでの分布の把握に用います。
解説動画(YouTube): 離散型データでの度数分布表作成と中心傾向の測度の計算(R 編)
この動画で作成した R のプログラムファイルは以下のリンクにあります。
R を用いた例題1の解答例
例題2
問題に2つの不備があります(第36刷で確認)。
  • 「相対度数を与えよ」は「累積度数を与えよ」の誤りです。
  • ヒストグラム,度数多角形,累積度数多角形の横軸ラベルが「身長(cm)」, 縦軸ラベルが「度数(人)」となってますが, 問題文には身長のデータであることが書かれていません。
もとのデータがないので,グラフ用紙を使って, ヒストグラム(histogram), 度数多角形(frequency polygon), 累積度数多角形(cumurative freqency polygon)を手書きしましょう。 面倒に思うかもしれませんが, エクセルや R に描いてもらうよりも, これらグラフの描き方がよく理解できると思います。 エクセルあるいは R を用いて度数分布表からヒストグラムを描く方法は例題7で説明します。
度数多角形 を描くとき,左端と右端が横軸上にあることに注意してください。 問題集の p.2 にある,度数多角形を見てください。 左端の階級の 階級値(class mark)が x 1 , その階級の度数が f 1 なので, x 1 f 1 に点が打たれています。 度数多角形の左端はここではないことに注意してください。 左隣に度数 0 の階級があると考えて, 横軸上に点を打ちます。度数多角形の左端はここです。 右端も同様です。
階級幅が等しいヒストグラムでは, 度数多角形と横軸で囲まれた領域の面積は,ヒストグラムの面積と同一になります。 度数多角形を描くとき,下図に示すように,線分の外側で「削られる」ヒストグラムの面積と, 線分の内側に加えられる面積が同じだからです。
度数多角形の面積
累積度数多角形 の描き方は問題集の p.2 を見てください。 左端が横軸上から始まることは度数多角形と同じです。 例題2の解答例ではそうなっていませんが, これは修正した方がよいでしょう。 横軸上で,左端の階級の下限値に点を打ち,そこを多角形の左端とします。
右端は最後の階級の上限値 a k と累積度数 F k から構成される点 a k F k です。 F k の値は測定値の数に一致します。
累積度数多角形では,度数多角形と異なり,線分で結ばれる各点の横軸座標は階級値ではなく, 階級の上限値であることに注意してください。 これは,その階級の上限値までにどれだけの度数があるかを表すためです。
例題3
データの CSV ファイル
解説動画(YouTube): 連続型データでの度数分布表作成と要約統計量の計算(エクセル編)
エクセルを用いた例題3の解答例
解説動画(YouTube): 連続型データでの度数分布表作成と要約統計量の計算(R 編)【字幕編集済み】
R を用いた例題3の解答例
70人のデータなので,紙と鉛筆,および電卓でこの問題に解答することは大変です。 エクセルや R などソフトウェアを使えばよいでしょう。
茎葉図(stem anp leaf plot)は 幹葉図 (みきはず)と呼ばれることの方が一般的です。
エクセルで茎葉図を作成することは可能ですが(どうしてもそうしたければウェブで検索してみてください), かなり面倒です。R の stem 関数を使うとよいでしょう。 R の aplpack パッケージにある stem.leaf 関数を使うこともできます。
上に CSV ファイルへのリンクを示しているこの例題のデータを使って, 以下の プログラム (例題3の解説の最初にある「R を用いた例題3の解答例」と同一です)を実行すると, 下のような 茎葉図ヒストグラム(histogram)が描画されます。

ex03 <- read.csv("example03.csv")

str(ex03)

stem(ex03$height)

min(ex03$height) # 階級の設定のため最小値と最大値を確認
max(ex03$height)

result <-
hist(ex03$height,
     breaks = seq(from = 149.5, to = 184.5, by = 5),
     xlim = c(140, 200), ylim = c(0, 25),
     xlab = "身長(cm)", ylab = "度数",
     main = ""
)

例題3の茎葉図
例題3のヒストグラム
縦横の向きは違いますが,茎葉図とヒストグラムが同じ形であることがわかります。 データに含まれる数値の情報をすべて保持したまま分布を視覚的に把握したいとき, 茎葉図はすぐれた図的表現です。
上に示した茎葉図では,1 の位の数値が 4 未満と 5 以上で分けられています。 これを分けずに,問題集に示されている解答例と同じ茎葉図を描きたければ, stem 関数の scale という引数の値を 0.5 に設定してください。 すなわち,

stem(ex03$height, scale = 0.5)

とします。これで,幹のスケール(図の縦方向の長さ)がおよそ半分になります。
この問題ではヒストグラムの描画は求められていませんが, ヒストグラムから度数分布を簡単に得ることができるので,描画しましょう。 プログラムは上ですでに示しました。
R で ヒストグラム を描くには hist 関数を使います。 階級や軸ラベルなど,いくつかのオプションの引数を適切に設定する必要があります。 これら引数はコンマで区切ります。
階級は hist 関数の breaks 引数で設定します。 問題集の解答例にならって,一番下の階級の下限値を 149.5 として,階級幅を 5 にします。 一番上の階級の上限値は 184.5 です。 等差数列を作る seq 関数を使って,

breaks = seq(from = 149.5, to = 184.5, by = 5)

とします。 数列の初項(149.5)と末項(184.5)は, データに含まれる数値の最小値と最大値をそれぞれ min 関数と max 関数で調べておいて, すべての測定値がいずれかの階級に含まれるように設定します。
横軸と縦軸の範囲はそれぞれ,引数 xlim および ylim で設定します。 ベクトルを作る c 関数を使って,下限と上限を指定します。 上に示したプログラムでは,横軸の範囲(xlim)は 140 から 200, 縦軸の範囲(ylim)は 0 から 25 としました。
縦軸および横軸のラベルはそれぞれ,引数 xlab および ylab で設定します。 ラベルとなる文字列は2重引用符で囲みます。
上で示したプログラムのように, hist 関数の実行結果を適当な変数(たとえば,result)に入れておくと, 度数分布 を簡単に得ることができます。 この変数にはヒストグラムを描画するためのさまざまな情報が保持されています。 階級値の情報は mids,度数の情報は counts という属性の値として保持されています。 R コンソールで

result$mids
result$counts

とすると(もちろん,R エディタで書いてもいいです), 下図のように各階級の階級値と度数がわかります。
例題3の度数分布
この結果から 最頻値(mode)を知ることができます。 度数分布表に整理されたデータでの最頻値は,度数が最も多い階級の 階級値 です。 最も多い度数は 21 であり,その階級の階級値は 167 ですから, 最頻値は 167 です。 度数に目が行くため,最頻値を 21 としてしまう誤りがよく見られますので, 注意してください。
この例題で問われていることのうち,残されているのは, 平均(mean),標準偏差(standard deviation), 中央値(median)ですね。 問題集では度数分布表に整理されたデータからこれらの値を求めていますが, もとのデータが利用できますから, まずはもとのデータからこれらの値を計算しましょう。
R では, 平均値 は mean 関数,標準偏差 は sd 関数, 中央値(メジアン)は median 関数で簡単に求めることができます(下図)。 ただし,これらの計算方法は,その意味とともに,よく理解しておいてください。 たとえば,偏差の平方の平均が分散であること, 分散の正の平方根をとった標準偏差はもとのデータと同じ単位を持つこと, などを理解しておく必要があります。
例題3の要約統計量
R の sd 関数で求められる標準偏差は, 標本の大きさを n としたとき, 偏差平方和を n - 1 で割った分散の,正の平方根です。問題集 p.4 に掲載されている標準偏差の公式 (a) で求められる s の値とは異なります。 この式は偏差平方和を n で割っています。
偏差平方和を n で割った標準偏差(問題集 p.4)を求めたければ, 以下のようにすればよいでしょう。

n <- length(ex03$height)
v <- var(ex03$height) * (n - 1) / n
sqrt(v)

R の var 関数は偏差平方和を n - 1 で割った分散を返すので,この値に n - 1 をかけて偏差平方和に戻し,あらためて n で割ります。 こうして得られた値の,正の平方根をとります。結果は下図のようになります。
例題3の分散(偏差平方和 / n)
以上の分析すべてを実行する プログラム を入手できます。(例題3の解説の最初にリンクがある「R を用いた例題3の解答例」と同一です。)
度数分布表に整理されたデータから平均値を計算するときは, ある階級に属する測定値はすべて,その階級の 階級値 であると考えます。 たとえば,154.5cm から 159.5cm という階級に属している6人の身長は, すべて 157cm であるとします。 したがって,平均値 は次の手順で求められることになります。
  1. 階級ごとに,階級値と度数をかけた積を計算する
  2. それらの積をすべての階級にわたって合計する
  3. 合計を測定値の数で割る
問題集の解答は測定値を変換しています。 もとの測定値 x から仮平均の 167 を引いて 5 で割っていますので, 変換後の値を用いて計算された平均値 u _ を 5 倍してから 167 をたすと, もとの測定値での平均値 x _ となります。仮平均(working mean) x 0 には分布の中央付近の階級値をとり, x - x 0 を階級幅(この例題では 5)で割ると, 変換後の値が整数値になるので計算が容易です。 電卓を使うのであればこうした工夫は計算を簡単にしますが, エクセルや R を使うのであれば不要です。 ただし,測定値の変換によって平均値,分散,標準偏差がどのように変化するのかについての理解は重要です。
度数分布表に整理されたデータからの分散および標準偏差の計算では, 平均値の計算と同じく,ある階級に属する測定値はすべて,その階級の 階級値 であると考えます
問題集での 標準偏差 の計算では測定値の変換が使われています。 測定値から 167 を引いたことは,標準偏差の計算に何も影響していないことに注意してください。 もとの測定値に定数を加減すると, ヒストグラムの位置は動きますが,形は変化しません。 つまり,分散と標準偏差は変化しません。 一方,もとの測定値を a 倍( a > 0 )すると,分散は a 2 倍,標準偏差は a 倍されます。 よって,変換後の値を用いて計算された標準偏差を a で割ると, もとの測定値での標準偏差が得られます。 この例題の解答では a = 1 5 ですので,変換後の標準偏差を 5 倍しています。
もとのデータに定数を加減したときと,正の定数倍をしたときの,平均値,分散,標準偏差の変化を, 以下にまとめておきます。
  • もとのデータに定数 b を加減すると, 平均値も b だけ加減される。分散と標準偏差は変化しない。
  • もとのデータを正の定数 a 倍すると, 平均値も a 倍される。 分散は a 2 倍,標準偏差は a 倍となる。
度数分布表に整理されたデータでの 中央値 は, 下図のように,ヒストグラムの面積を左右に2分割する横軸上の位置として定義されます。 度数分布表に整理されたデータから平均値を計算するときには, ある階級に属する測定値はすべてその階級の階級値であると考えました。 これに対して,度数分布表に整理されたデータから中央値を計算するときには, ある階級に属する測定値はその階級内で等間隔に散らばっていると考えます
例題3のヒストグラムでの中央値
ヒストグラムの面積を左右に2分割する横軸上の位置(つまり,中央値)は, 相似な三角形での辺の長さの比を利用して求めることができます。 下図を見てください。 159.5から 164.5 という階級までの累積度数は 21, 次の 164.5 から 169.5 という階級までの累積度数は 42 です。 度数1あたりの面積が1であるとすると, ヒストグラム全体の面積は 70, ヒストグラムの左端から 164.5 までの面積は 21, 169.5 までの面積は 42 です。 ヒストグラムの面積を左右に2分割する位置は, 164.5 と 169.5 の間にあるはずで,その位置を x とします。 ヒストグラムの左端から x までの面積は 35 です。 以上のことが2つの相似な三角形で表現されています。 この図から,比例式を解いて x の値を求めることができます。
例題3のヒストグラムでの中央値の計算方法
比例式を使った中央値の計算は,テキストでの「公式」を使った計算と同一です。 以下に示すように,テキストでの計算式を変形すると上述の比例式から得られる等式に一致します。
M e = 164.5 + ( 169.5 - 164.5 ) × 35 - 21 42 - 21

( 42 - 21 ) × ( M e - 164.5 ) = ( 35 - 21 ) × ( 169.5 - 164.5 )
例題3の解説の最後に,エクセルでの分析について述べておきます。 最初に述べたように,エクセルで (a) 茎葉図 を作成することは大変です。 この例題で問われている (b) 度数分布,(c) 平均と標準偏差, (d) メジアンとモード,はエクセルを使って簡単に得ることができます。 度数分布表は,例題1と同様に,ピボットテーブルを利用して作成します。 例題1との違いは階級の設定が必要であることです。 最頻値は度数分布表からわかります(これは R での分析と同じです)。 度数分布表に整理する前の, もとのデータでの平均値,標準偏差,メジアン(中央値)は関数を使って求めます。 平均値は AVERAGE 関数,標準偏差は STDEV.P 関数あるいは STDEV.S 関数, メジアンは MEDIAN 関数を使います。 以下のリンクにある動画で,エクセルでのこれらの分析を解説します。
解説動画(YouTube): 連続型データでの度数分布表作成と要約統計量の計算(エクセル編)
エクセルを用いた例題3の解答例
例題4
ヒストグラムは,柱の高さではなく,柱の面積が度数を表します。 柱の面積は階級幅(底辺)と柱の高さの積ですから,

度数 階級幅 × 柱の高さ

という関係です( は比例を意味する記号です)。 すべての階級の階級幅が同一であるとき,結果的に柱の高さも度数を表すことになります。
上の比例式より,

柱の高さ 度数 階級幅

であり,

度数 階級幅

度数密度(frequency density)と呼びます。 横軸にとられた変数1単位あたりの度数です。 この例題のように, 階級幅が階級によって異なるときのヒストグラムは,度数密度を縦軸にとります。 軸のラベルは,「度数」でなく,「度数密度」とします。
階級幅の異なるヒストグラムは,エクセルで描くことはできませんが, R を使えば描くことができます。 R の hist 関数を実行した結果を変数 result に代入すると(変数名は任意です), ヒストグラムを描くために必要な情報がここに保存されます。 こうした情報のひとつに,各階級の密度(density)があります。 この情報には result$density でアクセスできます。 密度の値に,測定値の数(すべての階級にわたっての度数の和)をかけると,度数密度になります。 これを使ってヒストグラムを描きます。
この例題のデータを R で作成し,ヒストグラムを描くプログラムを以下に示します。

# データの作成
age <- c(rep(8:12, length.out=9), rep(13:20, length.out=22),
        rep(21:60, length.out=35), rep(61:64, length.out=14))

# ヒストグラムの情報を result に保存
result <-
hist(age,
     breaks = c(8, 13, 21, 61, 65),
     right = FALSE # 階級を,8以上13未満,13以上21未満,... とする(最後の階級は65も含むが,データにその値はない)
)

# 測定値の数,すなわち,すべての階級にわたっての度数の和
n <- length(age)

# density の値に測定値の数をかけて,上書き保存する
result$density <- result$density * n

# あらためてヒストグラムを描画する
plot(result,
     xlim = c(0, 70),ylim = c(0, 4),
     xlab = "年齢", ylab = "度数密度", main = ""
)

このプログラムを実行すると,以下のヒストグラムが得られます。
例題4のヒストグラム(度数密度)
ヒストグラムを描くのに必要な情報のひとつである density には, もともと 確率密度(probability density)と呼ばれる値が保存されています。 確率密度と測定値の数の積が度数密度です。 階級幅が一定でないとき,R の hist 関数は確率密度を用いたヒストグラムを描きます。 プログラムを以下に示します。 データの生成は上に示したプログラムと同じです。

# データの作成
age <- c(rep(8:12, length.out=9), rep(13:20, length.out=22),
        rep(21:60, length.out=35), rep(61:64, length.out=14))

# 確率密度を用いたヒストグラム
hist(age,
     breaks = c(8, 13, 21, 61, 65),
     xlim = c(0, 70),ylim = c(0, 0.05),
     xlab = "年齢", ylab = "確率密度", main = "",
     right = FALSE
)

このプログラムを実行すると,以下のヒストグラムが得られます。
例題4のヒストグラム(確率密度)
確率密度を用いたヒストグラムでは,すべての柱の面積の合計が 1 になります。 度数密度を用いたヒストグラムでは,すべての柱の面積の合計が測定値の数になります。
問題の後半の小問 (b) では,階級値と度数を用いて,平均と標準偏差を計算します。 このときの階級値は,階級幅がすべて等しい場合と同じく,階級の中央の値となります。 階級の中央を決めるとき,階級の両端として真の境界を考えることに注意してください。 たとえば,8歳になった直後から13歳になる直前までが 8-12 歳という階級に分類されていますので, この階級の真の境界は8歳と13歳です。したがって,階級値は10.5歳となります。 例題3で解説したように,度数分布表に整理されたデータから平均と標準偏差を計算するときには, ある階級に属する測定値はすべて,その階級の階級値であると考えます。
例題5
データの CSV ファイル
データを CSV ファイルで用意しました。上のリンクからダウンロードできます。 このファイルをエクセルで開くと,下図のようになります。
例題5のデータ
テキストに掲載されたデータと比べればすぐわかるように, 第2列の TeamW が勝ちチームのスコア(W は Winner の意味), 第3列の TeamL が負けチームのスコアです(L は Loser の意味)。 第1列の Game は試合の通し番号です。
小問 (a) から (c) には,いずれもエクセルや R などのツールを使って解答すればよいでしょう。 勝ちチームのスコアから負けチームのスコアを引けば得点差が得られます。
得点差は整数値のみをとる離散型のデータで, 実際に得られた値のバリエーションはそれほど多くない(1 から 9 と,11,18)ので, 階級は構成せずに度数分布表と累積度数分布表を作成しましょう。 離散型データでの度数分布表の作成方法は例題1で解説しました。 累積度数分布表は度数分布表から簡単に作成できます。
平均,標準偏差,メジアン,モードは,もとのデータから関数を使用して求めてもいいですが, テキストでの解答例のように度数分布表から計算することもできます。 以下のリンク先は解答例となるエクセルブックです。 もとのデータから計算された記述統計量は D50 セルから D53 セルに, 度数分布表から計算された記述統計量は J18 セルから J21 セルに示されています。
エクセルを用いた例題5の解答例
以下のリンク先は解答例となる R プログラムです。 記述統計量は関数を用いて計算しています。 プログラムを実行するときには,作業ディレクトリにデータの CSV ファイルを入れてください。
R を用いた例題5の解答例
例題6
テキストの解答例におかしなところがあります(第36刷で確認)。 「3つとも6とすると,平均値が7にならないから2つが6である」という記述は不要です。 少なくとも2つは6なのだから, xy を6として, テキストに示されている方程式を立てることができます。 残る z の値が何であるかは方程式を解けばわかることで, 6ではないことを前もって明らかにする必要はありません。
例題7
解答に誤植があります(第36刷で確認)。 四分位偏差は第3四分位数と第1四分位数の差を2で割った値です。この例題では

1 2 ( Q 3 - Q 1 ) = 1 2 ( 56 - 46 ) = 5

です。テキストの解答は第3四分位数と第1四分位数の差であり,これは 四分位範囲(interquartile range)と呼ばれます。 四分位偏差よりも四分位範囲の方がよく用いられるので, 訂正すべき誤植は解答ではなく,問題文かもしれません。
エクセルを用いた例題7の解答例
R を用いた例題7の解答例
もとのデータがないので,ヒストグラムと累積度数多角形は, 例題2と同様にグラフ用紙を使って手書きすればよいでしょう。
エクセルを使う場合は,度数分布表と累積度数分布表を直接に入力して, そこからヒストグラムと累積度数多角形を作成します。 下図は作成例です。 ヒストグラムでは度数を選択して「集合縦棒」グラフを描きます。 横軸には階級値を使います。 累積度数多角形では累積度数を選択して「マーカー付き折れ線」グラフを描きます。 横軸には階級の上限を使います。 累積度数多角形のために, 度数 0 の階級(22.5 km/h から27.5 km/h)を左端に追加しています。
例題7での作図
このエクセルファイルは以下のリンクからダウンロードできます。 (この例題の解説の最初にあるリンクから入手できるファイルと同一です)
エクセルを用いた例題7の解答例
R を使ってヒストグラムを描くには,エクセルの場合と同じく, 階級値と度数を用意します。プログラムを以下に示します。

ClsMark <- seq(from = 30, to = 65, by = 5) # 階級値
Freq <- c(3, 12, 37, 61, 89, 130, 58, 10) # 度数

tmp <- # 階級のみ設定してヒストグラムのオブジェクト tmp を作成。すべての階級で度数は1。
hist(ClsMark, breaks = seq(from = 27.5, to = 67.5, by = 5))

tmp$counts <- Freq # 属性 counts に記録されている度数を書き換え

plot(tmp,
     xlim = c(20, 70), ylim = c(0, 150),
     xlab = "時速(km/h)", ylab = "度数(台)",
     main = ""
) # ヒストグラムを描画

階級値と度数はそれぞれベクトル(ここでは ClsMark と Freq)で用意します。 最初に,階級値を記録したベクトル(ここでは ClsMark)を使って,「仮の」ヒストグラムを hist 関数で作成します。 階級の設定を breaks 引数で行う他には,細かな設定は不要です。 階級値を記録したベクトルには各階級の階級値がひとつずつ含まれていますから, ヒストグラムでの各階級の度数は 1 となります。 このヒストグラムを適当な名前の(ここでは tmp)のオブジェクトとして保存しておきます。 このオブジェクトの counts 属性に度数が記録されているので, これを正しい度数に書き換えます。 最後に,plot 関数でもう一度ヒストグラムを描きます。
R で累積度数多角形を描画するには,上のプログラムの続きに以下のコードを加えます。

# 左端に度数 0 の階級を追加してから,累積度数を求める。
CumFreq <- cumsum(append(Freq, 0, after = 0))

# 階級の上限値は ClsmMark + 2.5
# 左端に追加した階級の上限値(27.5)を先頭に追加
upper <- append(ClsMark + 2.5, 27.5, after = 0)

plot(upper, CumFreq, type = "b",
     xlim = c(20, 70), ylim = c(0, 400),
     xlab = "時速(km/h)", ylab = "累積度数(台)"
) # 累積度数多角形を描画

度数を記録したベクトル(ここでは Freq)の先頭に append 関数で 0 を挿入します。 それから,cumsum 関数で累積度数のベクトルを作って変数(ここでは CumFreq)に保存します。 階級値を記録したベクトルに(ここでは ClsMark)に 2.5 を加えると, 階級の上限値を並べたベクトルとなります。 追加した階級の上限値は 27.5 なので,append 関数でこのベクトルの先頭に挿入してから, 変数(ここでは upper)に保存します。 階級の上限値(upper)と累積度数(CumFreq)の組を plot 関数でプロットします。 このとき,type 引数を "b"(both という意味)と指定すると, プロットされた点が線で結ばれ,累積度数多角形を描くことができます。
この例題でのヒストグラムと累積度数多角形を描く R プログラムは, 以下のリンクからダウンロードできます。 (この例題の解説の最初にあるリンクから入手できるファイルと同一です)
R を用いた例題7の解答例
四分位偏差(quartile deviation)は 第3四分位数(3rd quartile)と 第1四分位数(1st quartle)の差を2で割った値です(テキスト p.4)。 第2四分位数(2nd quartile)は中央値です。 度数分布表に整理されたデータから中央値を計算する方法は例題3で解説しました。 第1四分位数と第3四分位数も同様の方法で計算できます。 この例題での第1四分位数の計算方法を以下に述べます。
第1四分位数はヒストグラムの面積を 1:3 に分割する横軸上の位置です。 この例題でのヒストグラムの全面積を度数と同じ 400 とすると, 分割された左側の面積が 100,右側の面積が 300 となります。 第1四分位数は,中央値(第2四分位数)と同じく,相似な三角形での辺の長さの比を利用して求めることができます。 下図を見てください。 37.5 から 42.5 という階級までの累積度数は 52, 次の 42.5 から 47.5 という階級までの累積度数は 113 です。 度数1あたりの面積が1であるとすると,ヒストグラム全体の面積は 400, ヒストグラムの左端から 42.5 までの面積は 52,47.5 までの面積は 113 です。 ヒストグラムの面積を 1:3 に分割する位置は, 42.5 と 47.5 の間にあるはずで,その位置を x とします。 ヒストグラムの左端から x までの面積は 100 です。 以上のことが2つの相似な三角形で表現されています。 この図から,比例式を解いて x の値を求めることができます。
例題7のヒストグラムでの第1四分位数の計算方法
例題8
有名公式ですから,証明できるようにしておきましょう。 この公式の両辺に 1 n をかけると,

1 n i = 1 n ( x i - x _ ) 2 = 1 n i = 1 n x i 2 - x _ 2

となります。「分散は,2乗の平均,ひく,平均の2乗」と覚えます。 第3章で,確率変数の分散について,本質的に同じ公式を学習します。
この証明で躓きやすいところはおそらく2か所です。 第1に,テキストでの証明の1行目から2行目の変形です。平均値 x _ は定数として扱うことができるので,シグマ記号の外側に出すことができて,

i = 1 n 2 x i x _ = 2 x _ i = 1 n x i

となります。
もう1か所は,テキストでの証明の2行目から3行目の変形です。

x _ = 1 n i = 1 n x i

より,

i = 1 n x i = n x _

となります。平均値を n 倍すると総和になるということです。
平均値を n 倍すると総和になるという事実は, この例題の後半で3年生全員の身長の平均を計算するときに用います。 男女別の平均値はわかっているので,それぞれ男女の人数をかけ算すると, 男女別の身長の総和がわかります。 この2つの総和を合計すれば3年生全員の身長の総和となります。 この総和を男女合計人数の 263 + 282 = 545 でわれば,3年生全員の身長の平均となります。
3年生全員の身長の標準偏差は,最初に証明した等式を利用して計算します。 3年生全員の身長の平均はわかったので,あとは3年生全員の身長の2乗和がわかれば, 「分散は,2乗の平均,ひく,平均の2乗」より3年生全員の身長の分散が計算できます。 その正の平方根が3年生全員の身長の標準偏差となります。
女子生徒263人の身長の標準偏差は 4.0cm なので,女子生徒の身長の分散 s 2

s 2 = 1 263 i = 1 263 ( x i - x _ ) 2 = 4.0 2

です。平均は 155.5cm なので,最初に示した公式を使うと,

263 × 4.0 2 = i = 1 263 x i 2 - 263 × 155.5 2

より,

i = 1 263 x i 2 = 263 ( 155.5 2 + 4.0 2 )

となります。男子生徒の身長の2乗和も同様に計算できます。 男女別の身長の2乗和をあわせると,3年生全員の身長の2乗和となります。
3年生全員の身長の標準偏差は,大きな数があらわれるので, 電卓では計算できないかもしれません。
最後に,高校数学でのベクトルの知識がある人のために,公式

i = 1 n ( x i - x _ ) 2 = i = 1 n x i 2 - n x _ 2

の図形的意味を解説しておきましょう。 n 個の測定値を並べたベクトル

x = x 1 x 2 x n

と,平均値を n 個並べたベクトル

x _ = x _ x _ x _

から,ベクトル

x - x _ = x 1 - x _ x 2 - x _ x n - x _

を作ります(ベクトルは太文字で表しています)。 すると,これら3つのベクトルは下図のように直角三角形を構成します。
例題8で証明した等式のベクトル図
ベクトル x _ x - x _ が直交することは,内積 x _ x - x _ を計算すれば確かめられます(直交するベクトルは内積が 0 です) 。 実際,

x _ x - x _ = i = 1 n x _ ( x i - x _ ) = x _ i = 1 n x i - i = 1 n x _ 2 = n x _ 2 - n x _ 2 = 0

となります。
3つのベクトルは直角三角形を構成していますから,ピタゴラスの定理(三平方の定理)が成立します。 斜辺であるベクトル x の大きさ x

x = i = 1 n x i 2

であり,直交する2つのベクトルの大きさはそれぞれ

x _ = i = 1 n x _ 2 = n x _ 2

x - x _ = i = 1 n ( x i - x _ ) 2

なので,ピタゴラスの定理により,

n x _ 2 + i = 1 n ( x i - x _ ) 2 = i = 1 n x i 2

となります。これはこの例題で証明した公式

i = 1 n ( x i - x _ ) 2 = i = 1 n x i 2 - n x _ 2

です。

1章の問題

1.1
(a), (c), (d) の階級は「AからB」と読めますが,(b) はわかりにくいです。 「150から」という階級と「180から」という階級が連続しており, 「150から」という階級について問われています。
1.2
小問 (a) の問題文中の「計算によらずに」は,「定義に従った計算を直接的に実行せずに」という意味です。 もちろん,間接的には計算を行うことになります。 たとえば,(i) のデータは {3, 5, 4, 1, 7} という数値それぞれに10を加えていますから, もと(10を加える前)のデータの平均がわかっていれば, 1 5 ( 13 + 15 + 14 + 11 + 17 ) という計算を行う必要はありません。
小問 (a) での計算とは逆に,{13, 15, 14, 11, 17} というデータが先に与えられているときは, 仮平均(working mean)の考え方を使って平均値を計算することができます。 つまり,値それぞれから仮平均10を引いて {3, 5, 4, 1, 7} というデータに変換し, 変換されたデータの平均値を求めて,その値に仮平均10を加えます。
もとのデータに定数を加減したときと,正の定数倍をしたときの, 平均値(mean),分散(variance), 標準偏差(standard deviation)の変化を, 以下にまとめておきます。(例題3の解説で述べたことと同一です)
  • もとのデータに定数 b を加減すると, 平均値も b だけ加減される。分散と標準偏差は変化しない。
  • もとのデータを正の定数 a 倍すると, 平均値も a 倍される。 分散は a 2 倍,標準偏差は a 倍となる。
1.3
データの CSV ファイル
エクセルを用いた問題1.3の解答例
R を用いた問題1.3の解答例
例題1での救急車の出動回数と同じく,電話呼び出し数は整数値のみをとる 離散型(discrete type)のデータです。 度数分布表(frequency table)を作成するとき, 連続型(continuous type)のデータとは異なり, 階級(class)の設定は必須ではありません。 とりうる整数値があまり広範囲でなければ,それぞれの値について 度数(frequency)を数えます。
テキストの解答例は手作業で度数を数えていますが, 実際のデータ分析ではエクセルや R などのツールを使用できます。 上のリンクからこの問題のデータを入手して度数分布表を作成してください。 エクセルおよび R での解答例を示します。 この解答例では,度数多角形の描画と,要約統計量(平均,メジアン,モード)の計算を行っています。
度数多角形(frequency polygon)は例題2で解説しました。 度数分布表を作成したら,電話呼び出し数(横軸)と度数(縦軸)の組をプロットすれば,度数多角形となります。 エクセルや R などのツールを使って作図できますが, グラフ用紙を使って手書きすると理解が深まるでしょう。 度数多角形の両端は横軸上にとることが一般的ですので, 左端は -1 0 , 右端は 7 0 とします。
例題2のデータは連続型なので,度数多角形はヒストグラムの柱の頂点を結びました。 一方,問題1.3のデータは離散型です。 離散型のデータでは,ヒストグラムではなく,棒グラフ(bar chart)を描きます。 ヒストグラムの柱は隙間なく並んでいますが,棒グラフでは棒と棒の間は離れており, 離散型のデータであることを意味しています。 棒グラフでは,棒の高さが度数を表しています。 棒グラフの頂点を結ぶと度数多角形となります。 問題1.3では棒グラフの描画は要求されていませんので,度数多角形だけを描けばよいでしょう。
下図は度数多角形を描いたエクセルシートです。 ピボットテーブルを使用して度数分布表(D列とE列)を作成した後。 左端と右端(度数分布表では一番上と一番下)に度数 0 を追加しています(G列とH列)。 度数 0 を追加した度数分布表から度数多角形を描画します。 呼び出し数 7 回であった時間帯の度数を 0 とすることは自然ですが, 呼び出し数 -1 回という時間帯を考えることは不自然なので, ここ(呼び出し数 -1 となるセル)は空白としています。 よって,度数多角形の横軸目盛りにも -1 はありません。
エクセルで描いた問題1.3の度数多角形
電話呼び出し回数の平均値は AVERAGE 関数, 中央値(median)は MEDIAN 関数, 最頻値(mode)は MODE.SNGL 関数で求めることができます。 エクセルを用いた問題1.3の解答例 (この問題の解説の最初にあるリンクから入手できるファイルと同一です)の, B52 セルから B54 セルを見てください。
この問題1.3に解答する R プログラム (この問題の解説の最初にあるリンクから入手できるファイルと同一です)を以下に示します。

prob1_3 <- read.csv("prob1_3.csv")

str(prob1_3)

# 度数分布表
table(prob1_3$call)

Freq <- as.vector(table(prob1_3$call)) # 度数をベクトルにする

# 左端と右端に度数 0 を追加
Freq <- append(Freq, 0, after = length(Freq)) # 右端
Freq <- append(Freq, 0, after = 0) # 左端

Ncall <- -1:7 # 呼び出し数

plot(Ncall, Freq,
     type = "b", # 点をプロットして折れ線で結ぶ
     xlim = c(-2,8), ylim = c(0, 15),
     xlab = "呼び出し数", ylab = "度数",
     xaxt = "n" # 横軸の目盛りは後から入れる
)

axis(side = 1, at = 0:7) # 横軸目盛りを入れる

# 要約統計量の計算

mean(prob1_3$call)
median(prob1_3$call)

度数分布表は table 関数を使って得ることができます。 度数多角形の描画は少し面倒です。 縦軸にとる度数は table 関数で得られますが,as.vector 関数を使ってベクトルにして, 変数 Freq に保存しています。 両端への度数 0 の追加は append 関数を用いています。 この関数は例題7で使用しました。 横軸にとる電話呼び出し数は -1 から 7 の整数値で,変数 Ncall に保存しています。 度数多角形を plot 関数で描画するとき,xaxt 引数の値を "n" として, 横軸に目盛りを入れないようにします。これは -1 を表示したくないためです。 横軸目盛りは axis 関数を使って後から入れます。 引数 side = 1 は横軸であることを意味しています。 目盛りを入れる位置は引数 at で指定します。 この R プログラムを実行すると,次のような度数多角形が描画されます。
R で描いた問題1.3の度数多角形
最後に,mean 関数と median 関数で平均値とメジアン(中央値)をそれぞれ求めています。 モード(最頻値)は度数分布表からただちにわかります。
1.4
データの CSV ファイル
エクセルを用いた問題1.4の解答例
R を用いた問題1.4の解答例
100人のデータなので,小問 (a) の度数分布表を手作業で作成することは大変です。 エクセルや R などソフトウェアを使えばよいでしょう。 データは上のリンクからダウンロードできます。 連続型データでの度数分布表作成と要約統計量の計算は, 例題3にリンクがある動画で解説しています。
エクセルで度数分布表を作成する方法はいくつかありますが, 動画でも解説しているように,ピボットテーブルを使う方法が最も簡単でしょう。 上のリンクからダウンロードしたデータで,IQ を「行」,SID を「値」にして, SID の「個数」を集計します。 「ピボットテーブル分析」タブの「グループ」から,「フィールドのグループ化」をクリックすると, 下図のような「グループ化」ダイアログボックスが現れます。
ピボットテーブルによる問題1.4の度数分布表の作成
階級の選び方は問題文で指示されています。 階級の真の境界に注意してください。 たとえば,最初の 55-64 という階級は,真の境界を考えると 54.5-64.5 です。 ダイアログボックスで,「先頭の値」を 54.5,末尾の値を 144.5 とします。 「単位」は階級幅ですから,10 のままにします。 すると,下図のような度数分布表が得られます。
ピボットテーブルによる問題1.4の度数分布表
テキストの解答では,IQ の平均,標準偏差,メジアンを度数分布表から計算しています。 もとのデータがありますから,エクセルを使うのであればもとのデータから計算すればよいでしょう, 平均は 99.3,(STDEV.P 関数による)標準偏差は 14.2,メジアンは 100.5 となります。 エクセルを用いた問題1.4の解答例 をダウンロードできます(この問題の解説の最初にあるリンクから入手できるファイルと同一です)。
テキストの解答でのメジアンは,ヒストグラムの面積を左右に2分割する横軸上の位置です, 例題3で解説したように,これは相似な三角形での辺の長さの比を利用して, 下図のように求めることができます。
問題1.4での度数分布表からの中央値の計算方法
R で以下のプログラムを実行すると,ヒストグラムを描き,階級値と度数を表示します。

prob1_4 <- read.csv("prob1_4.csv")

result <-
hist(prob1_4$IQ,
     breaks = seq(from = 54.5, to = 144.5, by = 10),
     xlim = c(40, 160), ylim = c(0, 40),
     xlab = "IQ", ylab = "度数", main = ""
)

result$mids
result$counts

続いて,以下のコードで,平均,標準偏差,メジアンを計算します。

mean(prob1_4$IQ)
sd(prob1_4$IQ)
median(prob1_4$IQ)

以上の分析を実行する R プログラム をダウンロードできます(この問題の解説の最初にあるリンクから入手できるファイルと同一です)。
1.5
平均値とメジアン(中央値)の定義を使って解く,簡単なパズルです。
大きさの順に並べられた4つの数の中央値は,2番目の数と3番目の数の中点です。 したがって,

5 + y 2 = 6

より, y = 7 となります。
残る x の値は,平均値の定義から簡単に求められます。 テキストの解答は容易に理解できるでしょう。
4つの数値がそろったら,あとは分散を計算するだけです。
1.6