====== 【データリテラシー】第8回 分割表とクロス集計 ======
ある集団に対して2種類以上の観測を行って得られた多変数のデータを__**多変量データ(多次元データ)**__という。
ここでは特に 2変数のデータである__**2変量データ(2次元データ)**__を考える。
2変量データを見やすくするには分割表と散布図の二通りの方法がある。
===== 分割表 =====
2変量データの片方の変数のとりうる値を縦方向(列方向)の項目、もう片方の変数のとりうる値を横方向(行方向)の項目にして、縦と横の項目が交差(クロス)するマスに対応する度数を数えて入れた表を__**分割表**__という。
変数は質的変数だと作りやすいが、必ずしも質的変数である必要はない。
量的変数であっても離散型の場合はそのまま使ってもよいし、連続型の場合は度数分布表のように階級ごとに分けてもよい。
分割表の一番左の項目のラベルの列を__**表側**__、一番上の項目のラベルの行を__**表頭**__という。
表側の項目数が $s$ 個、表頭の項目数が $t$ 個の場合、$s\times t$ 分割表という。
「合計」の欄は項目数には含めない。
列や行の合計は__**周辺度数**__という。
列の周辺度数の合計と行の周辺度数の合計は総数に一致する。
=== 3×6 分割表の例 ===
以下は [[dataset#データセット2]] から求めた学年とコース別の学生数の分割表である。
{{ data_literacy_past:2021:table1.png?nolink |学年とコース別の学生数}}
===== クロス集計表 =====
分割表において度数ではなく、合計、平均、標準偏差などを集計した表を__**クロス集計表**__という。
ただし、分割表とクロス集計表はあまり区別されていないようで、分割表=クロス集計表としている場合もある。
=== 3×6 クロス集計表の例 ===
以下は [[dataset#データセット2]] から求めた学年とコース別の学生一人当たりの授業外学修時間の平均のクロス集計表である。
{{ data_literacy_past:2021:table2.png?nolink |学生一人当たりの授業外学修時間の平均のクロス集計表}}
周辺度数にあたるところは「合計」ではなく「平均」であることに注意してほしい。
例えば、「経営」コースの「平均」は 98.3 時間となっているが、これは元のデータにおいて「経営」コース全体の平均を求めたものになっている。
2年生、3年生、4年生のそれぞれの平均の平均 (99.7+95.6+98.7)/3=98.0 時間ではないことに注意してほしい。
===== ピボットテーブル =====
分割表やクロス集計表を作るために表計算ソフトには__**ピボットテーブル**__という機能がある。
分割表の元となるデータは次のように一番上の行に変数のラベルがあり、その下の列方向に各変数の観測値が並んでいるデータとする。
^ ^ A ^ B ^ C ^
^ 1 | 変数1 | 変数2 | 変数3 |
^ 2 | $x_{1}$ | $y_{1}$ | $z_{1}$ |
^ 3 | $x_{2}$ | $y_{2}$ | $z_{2}$ |
^ 4 | $x_{3}$ | $y_{3}$ | $z_{3}$ |
^ ⋮ | ⋮ | ⋮ | ⋮ |
----
==== ピボットテーブルの作成 ====
=== ① ピボットテーブルの挿入 ===
- 分割表で数えたいデータの範囲を**変数のラベルを含めて**選択する。
- メニューバーの ''**[挿入]**''%%→%%''**[ピボットテーブル]**'' を選択すると「ソースの選択」のダイアログが開く。
- ''**[現在の選択範囲]**'' を選択して ''**[OK]**'' ボタンをクリックすると「ピボットテーブルのレイアウト」のダイアログが開く。
=== ② ピボットテーブルのレイアウト設定 ===
- 「利用可能なフィールド」から分割表の表側の項目にしたい変数を「行フィールド」にドラッグ&ドロップする。
- 「利用可能なフィールド」から分割表の表頭の項目にしたい変数を「列フィールド」にドラッグ&ドロップする。
- 「利用可能なフィールド」から分割表の項目が交差するマスで数えたい変数を「データフィールド」にドラッグ&ドロップする。
- 「データフィールド」にドラッグ&ドロップした変数は自動的に「合計」になるので、その変数名をダブルクリックする。
- 「データフィールド」のダイアログが開いたら、計算方式を選択して ''**[OK]**'' ボタンをクリックする。
- 「ピボットテーブルのレイアウト」の ''**[OK]**'' ボタンをクリックすると新しいシートにピボットテーブルが挿入される。
{{ data_literacy_past:2021:calc_pivot1.png?nolink |ピボットテーブルのレイアウト}}
* 「列フィールド」「行フィールド」「データフィールド」「ページフィールド」に入れた変数は「利用可能なフィールド」にドラッグ&ドロップで戻すことで削除できる。
* ピボットテーブルの表頭と表側の項目は並べ替え(ソート)ができる。
* 「ページフィールド」に変数を入れてフィルタリングを行うことができる。
* ピボットテーブルの表頭と表側の項目は手動で任意の入れ替えができる。
- 入れ替えたい項目のセルを選択する。
- 選択したセルの枠をドラッグ&ドロップで入れ替えたい場所に移動する。
* 「フィールドのグループ化(グループフィールド)」を使うと階級ごとに分けて度数分布表が作れる。
\\
----
==== ピボットテーブルの編集 ====
一度作ったピボットテーブルは編集して項目を変更することができる。
ピボットテーブル上で右クリックしてコンテキストメニューから ''**[プロパティ]**'' を選択すると「ピボットテーブルのレイアウト」のダイアログが開くので、ここで項目を変更する。
----
==== データの更新 ====
ピボットテーブルの元のデータの値を更新してもピボットテーブルに自動的には反映されないため、手動で更新させる必要がある。
ピボットテーブルで右クリックしてコンテキストメニューから ''**[更新]**'' を選択するとピボットテーブルが更新される。
===== 演習:分割表の作成 =====
* 使用するデータセット:[[dataset#データセット2]]
学年とコース別の学生数の分割表を作成する。
=== ① ピボットテーブルの挿入 ===
- 列 A から列 J までを選択する。
- メニューバーの ''**[挿入]**''%%→%%''**[ピボットテーブル]**'' を選択し、''**[OK]**'' ボタンをクリックすると「ピボットテーブルのレイアウト」のダイアログが開く。
=== ② ピボットテーブルのレイアウト設定 ===
- 「利用可能なフィールド」から ''**[学年]**'' を「行フィールド」にドラッグ&ドロップする。
- 「利用可能なフィールド」から ''**[コース]**'' を「列フィールド」にドラッグ&ドロップする。
- 「利用可能なフィールド」から ''**[学年]**'' を「データフィールド」にドラッグ&ドロップする(この場合は ''**[コース]**'' でもよい)。
- 「データフィールド」の ''**[合計- 学年]**'' をダブルクリックする。
- 「データフィールド」のダイアログが開いたら、計算方式の ''**[総数]**'' を選択して ''**[OK]**'' ボタンをクリックする。
- 「ピボットテーブルのレイアウト」の ''**[OK]**'' ボタンをクリックすると新しいシートにピボットテーブルが挿入される。
{{ data_literacy_past:2021:calc_pivot2.png?nolink |ピボットテーブルの設定}}
作成したピボットテーブルは空いている場所にコピー&ペーストして、分割表の形式を整える。
===== 演習:平均のクロス集計表の作成 =====
前の演習のピボットテーブルを編集して授業外学修時間の平均のクロス集計表を作成する。
- 作成したピボットテーブル上で右クリックしてコンテキストメニューから ''**[プロパティ]**'' を選択すると、「ピボットテーブルのレイアウト」のダイアログが開く。
- 「データフィールド」の ''**[総数 - 学年]**'' を「利用可能なフィールド」にドラッグ&ドロップで戻して削除する。
- 「利用可能なフィールド」から ''**[授業外学修時間[h]]**'' を「データフィールド」にドラッグ&ドロップする。
- - 「データフィールド」の ''**[合計- 授業外学修時間[h]]**'' をダブルクリックする。
- 「データフィールド」のダイアログが開いたら、計算方式の ''**[平均値]**'' を選択して ''**[OK]**'' ボタンをクリックする。
- 「ピボットテーブルのレイアウト」の ''**[OK]**'' ボタンをクリックする。
{{ data_literacy_past:2021:calc_pivot3.png?nolink |ピボットテーブルの設定}}
作成したピボットテーブルでは、周辺度数に当たるところは「合計」と表示されるが、実際は「合計」ではなく「平均」であることに注意する。
作成したピボットテーブルは空いている場所にコピー&ペーストして、分割表の形式を整える。
「行フィールド」「列フィールド」「データフィールド」にその他の項目を追加するとどうなるだろうか。
色々試してみてほしい。
===== 課題 =====
[[dataset#データセット1]] において、年齢と性別で人数を数えた分割表を作りなさい。
表頭を「年齢」、表側を「性別」とする。
また、同じデータセットで年齢と性別で身長の平均を求めたクロス集計表を作りなさい。
作成したファイルは ODFスプレッドシート(拡張子 .ods)で提出すること。