≪度数分布表,円グラフ,ヒストグラムの作り方≫

◇この教材は,高校生が表計算ソフトを使って,数学Tの「データ分析」レベルの内容を扱うときの「演習の手引き」として書いたものです.(筆者自身用の備忘録でもある)
◇●1〜●4のソフトについて操作方法を解説していますが,全部読む必要はありません.自分のパソコンで使えるソフトを選んで,読んでください.
【要約】 《筆者の実験結果です.異論はあり得ます》
●1「Microsoft Office 2021」(インストール型)
●2 無料で使える「Excel for the web」
●3 無料で使える「Google スプレッドシート」
●4 無料でインストールできる統計用ソフト「R」

●1●2●3●4
T質的データ:度数分布表,円グラフ〇*#〇*#
U量的データ:度数分布表,ヒストグラム
(直接)
(表→グラフの2段階)



▼*
〇*

〇*


青文字のクリックで解説の記述にジャンプできる
◎印:できる,〇:概ねできる,▼:薦めない
*印:斜線パターンの表示は無理
#印:「その他」を末尾に→要工夫

1. 質的データと度数分布表,円グラフ

-表1-
好きなスポーツ
サッカー
野球
テニス
陸上
水泳
サッカー
野球
テニス
サッカー
その他
陸上
水泳
野球
その他
その他
サッカー
バレー
バスケット
 データには,身長,体重のように数値として表される量的データと,ものの名前のように数値ではなく分類名(カテゴリ)からなる質的データがある.
 たとえば,生徒18人に「好きなスポーツ」をアンケート調査したところ,右の表1の回答が得られたものとする.これは質的データである.
 このような質的データから,
@スポーツの種目ごとの人数を調べたい
 ⇒ 度数分布表を作るには,どうすればよいか?
Aそれらを百分率に直して円グラフに表すとき
 ⇒ 円グラフの作り方,項目順の変更パーセント表示の仕方
を調べる

 概して,表1のように与えられたデータから
@度数分布表を作る
Aそれを円グラフにする
の基本操作は●1〜●4を通して簡単にできる.
B円グラフの常識に沿って,百分率の大きいものから順に並べる
C「その他」は百分率が大きくても末尾に並べる
などの項目の順序を入れ替える操作は,やや難しい.
●1 「Microsoft Office 2021」(インストール型)
◎:できる
(1) 表1のデータがExcel上にあるとして,タイトル(好きなスポーツ)を含めて,データの範囲をドラッグして反転表示にする.
(2) 挿入→で集合縦棒グラフになる.(→@はピボットテーブルとして自動でできる)
(3) グラフを右クリックして,グラフ種類の変更→円グラフを選ぶ.(→A)右図のような円グラフができる.
 次に,できた円グラフについて,常識に従って「百分率の大きい順に,時計回りに並べる」「その他は,値が大きくても最後の位置に置く」には
(4) 値の大きい順に並べるには「個数」の列のどこかの値をポイントしてから,右クリック→降順
(5) (4)の段階で「その他」が大きい方のあるので,「その他」のセルだけをドラッグして末尾に回す(「その他」のセルだけをドラッグすることが意外に難しいので,ピボットテーブルをコピー・値の貼り付けの後,「その他」だけを後回しにして,円グラフにするとできる.)
(6) 凡例の位置,百分率表示,値を外に出すなどの設定変更は,グラフをクリックすれば分かる.(カラーセット&色順は系列になっているので,簡単には変えられない)
(7) 斜線パターンの塗分けは,グラフをポイントしてから,絵筆アイコン→スタイルと進んだときに表示される選択肢にある.
ここまでの作業で,次のような円グラフになる.

-図1-
●2 無料で使える「Excel for the web」
⇒導入方法は前のページ
〇:概ねできる(斜線パターンはできない)
 作業手順は,●1と(4)まで同じ.
 (5)において,excel for the webの方は「ピボットテーブルの左欄だけをドラッグして移動させる機能」はないようなので,「ピボットテーブル」そのものではなく,その値をコピー・値の貼り付けをした表を右とか下に作り,その他とその値だけを切り取り・貼り付けで並べ替えた表を作り,その表について「挿入→円グラフ」とすればよい.
 図1と比較すると,塗りこみ方を選ぶ余地は少ない.

●3 無料で使える「Google スプレッドシート」
⇒導入方法は前のページ
〇:概ねできる(斜線パターンはできない)
 作業手順は,●1,●2とほぼ同じであるが,次の点に注意
@) 挿入→グラフによって,ピボットテーブルを飛び越えて,いきなり円グラフを表示することもできるが,その場合は,円グラフの項目の並び順を変更できない.実際には,各項目が最初に登場する順に並んでいる.
A) はじめに「挿入→ピボットテーブル」という作業を入れておくと,そのピボットテーブルを使って,項目の大きい順に並べ替えることができる.
 画面の右端に「ピボットテーブルエディタ」が表示されているときに,行に追加ボタンをクリック,好きなスポーツを入れる.
 デフォルトのままでは,好きなスポーツの50音順になっているので好きなスポーツのCOUNTAを選ぶ(下の値を追加したら選べるようになる)「順序」は降順
B) 以上の方法では「その他」が項目の途中に入るのは●2と同じ.そこで,「その他」を末尾に並べ替えるには,●2と同様に,「ピボットテーブル」そのものではなく,その値をコピー・値の貼り付けをした表を右とか下に作り,その他とその値だけを切り取り・貼り付けで並べ替えた表を作り,その表について「挿入→円グラフ」とすればよい.

●4 無料でインストールできる統計用ソフト「R」
⇒導入方法は前のページ
◎:できる(「その他」を末尾に置くには,出力データを書き換える)
• Rのコマンドプロンプトから,次のように入力する.
• Rでは変数名(ここではベクトル名)に日本語漢字も使える.代入する記号は,山かっこ(<)とハイフン(−)を組み合わせたもの,cは数字の束(ベクトル)を表すときに使う.
各行末でエンターキーを押す.pie()が円グラフを表示する関数.パラメータは後で示す.
sports<-c('サッカー','野球','テニス','陸上','水泳','サッカー','野球','テニス','サッカー','その他','陸上','水泳','野球','その他','その他','サッカー','バレー','バスケット')
pie(table(sports))
• table(sports)により,次のような度数分布表が得られ,それを円グラフ pie() にしたものが表示されている.
サッカーその他テニバスケットバレー水泳野球陸上
43211232
• 項目は「かなカナの50音順,漢字コード順」で,x軸から反時計回りに並んでいるので,これらをパラメータの指定によって,日本で通常使われる並び方にする.
M2<-M1[order(M1, decreasing=T) ]
pie(M2,clockwise=T, init.angle=90) により,北から時計回りに並ぶ
 ここまでの作用で,右のグラフになるが「その他」が最後という問題は,解決できていないが,次のようにデータの順序を直接書き換えれば,「12時の角度から」「右回り」「その他は最後」にできる.
names<-c('サッカー','テニス','バスケット','バレー',' 水泳',' 野球','陸上','その他')
vals<-c(4,2,1,1,2,3,2,3)
pie(vals,labels=names,clockwise=T,init.angle=90)


2. 量的データと度数分布表,ヒストグラム

-表2-
数学
11
21
23
32
36
40
40
41
45
51
53
56
58
59
67
68
68
73
78
82
 表2のような数値データ(20人の生徒の数学の得点)があるとする(目で見て数え易くするために,小さい順に並べてある)
 このデータから,
@ 階級に区切ったヒストグラム
を作りたい
 以前のexcel(201xまで)では,(A)「元のデータを直接ヒストグラムにする」ことはできずに,(B)「元のデータの他に階級表を用意して」これら2つからヒストグラムにしていたが,
 2023年現在では,●1〜●3のいずれも階級表を準備しなくてもヒストグラムができるようになっている.
 ただし,階級表の細かな調整をしたい場合は,(B)の堅実に階級表を準備する方がうまく行くようである(●1〜●3で,(A)のやり方で表計算ソフトに丸投げしていると,思わぬ落とし穴があって,意図したものと異なるグラフができていることがあるので要注意:#なんてこったい!個人の感想です#).
 次のグラフが,目標とするヒストグラムの形だとする.

- 図2 -
(豆知識:雑学)
• 度数分布表を柱状のグラフに表したものを「ヒストグラム」という・・・グラフではない.ヒスト(度数)をグラム(描いたもの)したという形で,グラムという言い方をするものには他に,テレグラム(電報),ダイヤグラム(列車運行表),ホログラム(偽造防止のために書かれた立体画像),ペンタグラム(☆),ピクトグラム(非常口,道路標識などの図)などがある.最近では,「インスタ映えする」のインスタグラムかな
• ヒストグラムの見かけは棒グラフに似ているが,棒グラフとは異なりデータが数値で「階級幅」「階級の個数」は分析者が決める.
 また,棒グラフとは異なり,棒の境界線にはすき間を空けない.(つながっているものを,区切って示しているだけ.隣がある.順序は勝手に変えられない.)
• [設定変更に必要なキーワード]:ヒストグラムの1つの柱を●1,●2のExcelでは「ビン(bin)・・・置き場」という用語で表す(複数形はbins).ビンの横幅が階級の幅を表し,縦幅が度数を表す.なお,●3のgoogleスプレッドシートでは,ビンではなくバケットサイズという用語で階級幅を表している.●4のRでは,関数hist()のヘルプで,解説の中で「ビンの端のエントリ」「ビン サイズ」という用語が登場する.


(A)「元のデータを直接ヒストグラムにする」場合
●1 「Microsoft Office 2021」(インストール型)
▼:最後がうまく行かない
(1) 列タイトル(数学)を含めて,データの下端までドラッグし,反転表示にする
(2) 挿入→ヒストグラムで,とりあえず柱が何本かのグラフが表示される
(3) このグラフを編集して,目標のグラフを作ることを目指す。
横軸の目盛り(右図の赤線の所)をダブルクリックする(もしくは、横軸の赤線の所を右クリックして,「軸の書式設定」を選ぶ).
ビンの幅を10にする(ビンの数を選ぶと,階級幅が中途半端な小数になることが多い)

- 図3 -
(4) ここまでで,図3までできる.(ビンの塗りこみスタイルで,斜線パターンを選んでいる)
※このようにしてできた図3を,目標とする図2と比べると,「似ているが,詳細が異なる」ことに気づく.
 具体的には,11〜21の階級に21が含まれているから,11〜21の度数が2になり,21〜31の階級に21が含まれていないから,21〜31の度数が1になっている.以下同様で,一般に日本の常識では,階級を「以上と未満」の形で使う(11≦x<21など)のに対して,英米系のソフトではデフォルトで「超過と以下」の形で使っているように思われる(11<x≦21など).
 以上のように,この方法では概ね近いヒストグラムができるが,整数値からなるデータで「超過と以下」の区間で度数を数える設定になっているので,詳細が合わない.したがって,整数値からなるデータで,日本の常識に沿ったヒストグラムにするには,後に述べる(B)のやり方で,階級の区間を「以上と未満」の形で指定する方が正確になると考えられる.
[ピボットグラフを利用する方法]
◎:できる
(1) 列タイトル(数学)を含めて,データの下端までドラッグし,反転表示にする
(2) 挿入→ピボットグラフで,とりあえずのグラフにする
(3) ピボットグラフのフィールドで,「数学」を≡軸(分類項目)へドラッグ,また「数学」をΣ値にドラッグ
※この状態では,行ラベルにすべての数値が並んでいるだけ.また,合計/数学の欄が合計計算になっている.これらを表のラベルをダブルクリックして,以下のように変更する)
(4) ピボットテーブルの「合計/数学」欄をダブルクリックする.(うまく行かなければ,「ピボットテーブルのフィールド」のウィンドウで「Σ値 数学/合計」をクリックして「値フィールドの設定」)→「個数」を選ぶ
(5) ピボットテーブルの行ラベルの中でどこかのデータを右クリック→「グループ化」
先頭の値を10に,末尾の値を89に,単位を10にする(これにより,10-19, 20-29,...,80-89というグループに分かれる)
(6) グラフの柱状の部分をポイント して,右のウィンドウに表示される「データ系列の書式設定」から柱状のアイコンを選び,「要素の間隔」を0にする・・・ヒストグラムは,柱状の間隔が0でなければならない.
(7) 柱状の部分を斜線パターンにすることもできる(右図)

●2 無料で使える「Excel for the web」
⇒導入方法は前のページ
▼:薦めない
手順は●1とほぼ同じであるが,設定変更はグラフをクリックしてから,書式設定から入る.
●1と同様に「超過と以下」の区間で度数を数える設定になっている(10<x≦20など)
●1と異なる点として,柱状部分の網掛け表示はできない.
[ピボットグラフを利用する方法]
「Excel for the web」のピボットテーブルでは「Excel2021と同様のグループ化はできない」ようである.・・・グループ化というものはあるが,違う意味に使われている.
⇒したがって,この方法では難しい.
●3 無料で使える「Google スプレッドシート」
⇒導入方法は前のページ
〇:概ねできる
(1) 列タイトル(数学)を含めて,データの下端までドラッグし,反転表示にする
(2) 挿入→グラフでヒストグラムにする.
(3) グラフの右上端に表示される三点リーダをクリックすると,各種の設定を変更できる.
画面右に表示されるウィンドウで,カスタム→ヒストグラム→バケットサイズ10,異常値のパーセンタイル0%とする
(4) 同様に,横軸のカスタマイズで,この例では,最小値0,最大値100とする

-図4-
 ここまでで,図4のヒストグラムになる.
 ●1●2とは異なり,「以上と未満」の形で表示されているので,日本国内の常識と合う(10≦x<20など)
 図中の柱の部分を斜線パターンにすることはできない.また,横軸の数値形式を整数だけに表示形式を変えたり,各階級の初めの値を指定し直すのは,簡単ではない.
●4 無料でインストールできる統計用ソフト「R」
⇒導入方法は前のページ
◎:できる
• Rのコマンドプロンプトから,次のように入力する.
• Rで,代入する記号は,山かっこ(<)とハイフン(−)を組み合わせたもの,cは数字の束(ベクトル)を表すときに使う.
各行末でエンターキーを押す.
 このデータをベクトルmath1に取り込んで,
math1<-c(11,21,23,32,...,78,82)
 Rの関数hist( )を使うと,次のようなグラフが描ける.
hist(math1)

-図5-
 関数hist()では,上記のように特別な指定をしないとき(デフォルトで),20<x≦30(<超過,≦以下の形で)度数を数えるようになっている.日本でよく見かける20≦x<30(≦以上,<未満)の形で数えるには,パラメータとして,right = FALSE または right=Fを指定する.
hist(math1, right=FALSE, breaks=c(0,10,20,30,40,50,60,70,80,90),
col="blue",angle=45,density=10)
breaks=c(0,10,...)は階級の区切り,right=FALSEで20≦x<30(≦以上,<未満)の形,colは色,angleは斜線の角度(度単位,左回り),densityは1インチ(=2.54cm)当たりの線の密度

(B)「元のデータの他に度数分布表を用意する」場合
-表2
(再掲)-
数学
11
21
23
32
36
40
40
41
45
・・・
78
82

-表3-
データ区間頻度
00
100
201
302
404
502
605
703
802
901
次の級0

 上の図のように,元のデータ(表2)から,度数分布表(表3)を作り,それを基にしてヒストグラムを作るには
●1 「Microsoft Office 2021」(インストール型)
◎:できる
 分析ツールを使って,ヒストグラムを作ることができる.
 この場合,前もって,「フィル→連続データの作成」を使って,表3の背景色桃色の区切り値の表を用意しておく必要がある.
 すなわち,「データ」→「データ分析」→「ヒストグラム」と進む
 入力範囲に,列タイトル(数学)を含めて表1の部分を指定する
 データ区間に,表3の背景色桃色の部分を指定する(列タイトルを含めたから「ラベル」にチェックを入れる)
 出力先に同一シート内のセルを選ぶときは,右下側が何も記入されていない範囲を選ぶ
 これにより,一応度数分布表ができる(問題点あり!)
※表3をグラフにすれば,出来上がりに見えるが,実は違う!図3で示したときと同様に,英米系?のソフトでは,デフォルト(省略したとき)で,「超過と以下の形」20<x≦30で集計しているらしく,例えば「10の区間の頻度が0」「20の区間の頻度が1」になっているが,これは「10以下が0個」「20以下が1個」という数え方になっており,日本の常識と合わない.
※表3を使って,FREQUENCY関数を利用する場合も,「超過と以下の形」20<x≦30で集計するという事情は同じになる.
★大学生がよく行うアンケート集計で,値が実数型(小数型)である場合は,集計方法が20<x≦30型であるか20≦x<30型であるかの違いは無視できる(区切り線にちょうど等しいものがある確率は0.たまたま四捨五入で一致しても問題ない).しかし,この例のように整数値のデータを集計すると,常識と合わない集計ではいけない.

-表4-

ABC
1数学データ区間頻度
2110 0
32110 1
42320 2
53230 2
63640 4
74050 5
84060 3
9 41702
1045801
11・・・90 0
21・・・

[1つの解決策]
 =COUNTIF()関数を用いて,条件を&と文字列">="でつないでいく
 右の表4において,A列のデータは,A21まであるとする.
 セルC2に,次の関数を記入する
=COUNTIF($A$2:$A$21,">="&B2)
 -COUNTIF($A$2:$A$21,">="&B3)

※0以上の個数から10以上の個数を引くと,0≦x<10の個数になる.
 この式をコピーしてC3〜C11に貼り付けると,各々左のデータ区切り値以上で次のデータ区切り値未満の頻度数を表す
 B2〜C11の範囲を選択して,挿入→お薦めグラフで集合棒グラフを選べば,右図7のようなヒストグラムが得られる.
●2 無料で使える「Excel for the web」
⇒導入方法は前のページ
〇:概ねできる
ほぼ同様にできる.
●3 無料で使える「Google スプレッドシート」
⇒導入方法は前のページ
▼:薦めない
上記の(A)の方法でできている.
「Google スプレッドシート」では,ピボットテーブルの左欄を右クリックして「グループ化」することができる(ピボットグループのルールを編集→最小値0,最大値100,間隔のサイズ10など).
ただし,度数分布表からスタートすると「棒グラフ」を選択することとなり,柱状の部分が離れたままになる・・・ヒストグラムは,柱状部分の間隔が0でなければならないので見苦しい.
●4 無料でインストールできる統計用ソフト「R」
⇒導入方法は前のページ
▼:薦めない
上記の(A)の方法でできている.度数分布表からスタートする必要はない.
...メニューに戻る