「ミクロ政治データ分析実習」第13回課題

作者

情21-0170 関大太郎

公開

2023年7月6日

参考

 一部の問題はこれまでの課題にて出題されたものである。必要に応じてこれまでの解答(宋が作成したものを含む)を参照しても良い。

セットアップ

問題1: {tidyverse}パッケージを読み込む。

# ここにRコード

問題2: LMSからダウンロードした課題用データ(Micro_HW13.csv)を読み込み、それぞれraw_dfという名のオブジェクトとして格納し、出力すること。

  • データはプロジェクト・フォルダー内にDataというフォルダーを作成し、そこにアップロードしておくこと。
  • read.csv()関数でなくread_csv()関数を使用すること。read.csv()関数を使用する場合、サンプルページと異なる見た目の結果が出力される。むろん、減点対象である。
# ここにRコード
# A tibble: 1,684 × 10
      ID Quiz1 Quiz2 Quiz3 Quiz4 Quiz5 Quiz6 Gender   Age  Educ
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl>
 1     1     3     4     3     1     1     1      1    73     3
 2     5     8     8     8     8     8     8      2    94     1
 3    11     8     8     8     8     8     1      2    57     3
 4    51     3     2     8     8     1     1      2    62     3
 5   104     3     2     4     8     8     1      1    50     4
 6   108     3     4     4     8     8     1      2    57     4
 7   124     3     1     2     1     1     1      1    78     1
 8   133     3     8     4     8     8     8      1    64     1
 9   139     3     4     4     8     1     1      2    57     3
10   152     3     4     4     8     8     1      1    44     4
# ℹ 1,674 more rows

問題3: raw_dfの大きさ(行数と列数)を出力する。

# ここにRコード
[1] 1684   10

問題4: raw_dfの変数名(列名)を出力する。

# ここにRコード
 [1] "ID"     "Quiz1"  "Quiz2"  "Quiz3"  "Quiz4"  "Quiz5"  "Quiz6"  "Gender"
 [9] "Age"    "Educ"  
変数名 説明 備考 欠損値
ID 回答者のID なし
Quiz1 政治に関するクイズの回答 (1) 正解: 3 なし
Quiz2 政治に関するクイズの回答 (2) 正解: 4 なし
Quiz3 政治に関するクイズの回答 (3) 正解: 3 なし
Quiz4 政治に関するクイズの回答 (4) 正解: 1 なし
Quiz5 政治に関するクイズの回答 (5) 正解: 1 なし
Quiz6 政治に関するクイズの回答 (6) 正解: 1 なし
Gender 回答者の性別 1=男性 / 2=女性 なし
Age 回答者の年齢 なし
Educ 回答者の最終学歴 高いほど高学歴 9

データハンドリング

問題5: raw_dfQuiz1からQuiz6変数を正解なら1、それ以外は0になるように再コーディングし、既存の変数に上書きする。続いて、Quiz1からQuiz6までの合計を計算し、Knowledgeという列として追加する。最後にQuiz1からQuiz6までの列を削除する。以上の結果をraw_dfに上書きし、raw_dfを出力すること。

# ここにRコード
# A tibble: 1,684 × 5
      ID Gender   Age  Educ Knowledge
   <dbl>  <dbl> <dbl> <dbl>     <dbl>
 1     1      1    73     3         6
 2     5      2    94     1         0
 3    11      2    57     3         1
 4    51      2    62     3         3
 5   104      1    50     4         2
 6   108      2    57     4         3
 7   124      1    78     1         4
 8   133      1    64     1         1
 9   139      2    57     3         4
10   152      1    44     4         3
# ℹ 1,674 more rows

問題6: raw_dfAgeGenderEducをリコーディングする。

  1. Age変数: Ageの値が35以下であれば"若年層"、65以下であれば"中年層"、それ以外は"高齢層"とリコーディングし、Age_Jという名の列として追加する。
  2. Gender変数: Genderの値が1であれば"男性"、それ以外は"女性"とリコーディングし、Gender_Jという名の列として追加する。
  3. Gender_J変数: Gender_J変数をfactor化し、要素の順番は"女性""男性"とする。
  4. Educ変数: Educ変数の9であれば、欠損値とし、それ以外は既存のEducの変数の値のままとする。
  5. Educ変数: Educの値が4であれば"大卒以上"、それ以外は"大卒未満"とリコーディングし、Educ_Jという名の列として追加する。
  6. Educが欠損している行を除外する。
  7. 以上の結果をdfという名のオブジェクトとして作業環境内に格納し、dfを出力する。

出力される変数(列)の順番は以下の例と一致しなくても良い。

# ここにRコード
# A tibble: 1,670 × 8
      ID Gender   Age  Educ Knowledge Age_J  Gender_J Educ_J  
   <dbl>  <dbl> <dbl> <dbl>     <dbl> <chr>  <fct>    <chr>   
 1     1      1    73     3         6 高齢層 男性     大卒未満
 2     5      2    94     1         0 高齢層 女性     大卒未満
 3    11      2    57     3         1 中年層 女性     大卒未満
 4    51      2    62     3         3 中年層 女性     大卒未満
 5   104      1    50     4         2 中年層 男性     大卒以上
 6   108      2    57     4         3 中年層 女性     大卒以上
 7   124      1    78     1         4 高齢層 男性     大卒未満
 8   133      1    64     1         1 中年層 男性     大卒未満
 9   139      2    57     3         4 中年層 女性     大卒未満
10   152      1    44     4         3 中年層 男性     大卒以上
# ℹ 1,660 more rows

可視化

ヒストグラム

問題7: dfAge変数のヒストグラムを出力する。ヒストグラムの棒の数は15個にする。横軸のラベルは「年齢」、縦軸のラベルは「人数」とする。また、横軸の目盛りを20歳から100歳まで、10歳刻みにすること。棒の枠線の色は白("white")とする。作成した図はhist_plot1という名のオブジェクトとして作業環境内に格納し、hist_plot1を出力する。自分で図をより見やすくカスタマイズしても良い。

# ここにRコード

問題8: 問題7で作成したhist_plot1を性別(Gender_J)ごとにファセット分割する。2つのファセットが1行で表示されるようにすること。自分で図をより見やすくカスタマイズしても良い。

# ここにRコード

棒グラフ

問題9: 世代(Age_J)の値ごとに政治的知識量(Knowledge)の平均値を計算し、df2という名のオブジェクトとして格納する。平均値が格納される列名はKnowledgeとする。最後にdf2を出力すること。

# ここにRコード
# A tibble: 3 × 2
  Age_J  Knowledge
  <chr>      <dbl>
1 中年層      2.47
2 若年層      1.97
3 高齢層      2.30

問題10: df2を用い、以下のような棒グラフを作成する。自分で図をより見やすくカスタマイズしても良い。

# ここにRコード

問題11: 問題10の図の横軸は「高齢層 > 若年層 > 中年層」になっているが、これを「若年層 > 中年層 > 高齢層」にしたい。df2Age_Jを要素の順番が若年層、中年層、高齢層になるようにfactor化し、以下のような棒グラフを作成する。自分で図をより見やすくカスタマイズしても良い。

# ここにRコード

問題12: 世代 (Age_J)と教育水準(Educ_J)の値ごとに政治的知識量(Knowledge)の平均値を計算し、df3という名のオブジェクトとして格納する。平均値が格納される列名はKnowledgeとする。最後にdf3を出力すること。

# ここにRコード
# A tibble: 6 × 3
  Age_J  Educ_J   Knowledge
  <chr>  <chr>        <dbl>
1 中年層 大卒以上      3.31
2 中年層 大卒未満      2.24
3 若年層 大卒以上      2.13
4 若年層 大卒未満      1.89
5 高齢層 大卒以上      3.81
6 高齢層 大卒未満      2.11

問題13: 問題13で作成したdf3を利用する。横軸は世代(Age_J)、縦軸は政治的知識量の平均値(Knowledge)とした棒グラフを作成する。また、棒グラフを教育水準(Educ_J)を基準とし、2つのファセットに分割する。面と横軸の順番、ラベルは以下の図を参照すること。更に自分で図を見やすくカスタマイズしても良い。

  • 以下のような図にするためにはAge_JEduc_Jのfactor化が必要である。
# ここにRコード

問題14: 問題13で作成したdf3を利用する。横軸は世代(Age_J)、縦軸は政治的知識量の平均値(Knowledge)とした棒グラフを作成する。また、各棒は教育水準(Educ_J)で色分けする。横軸、色の順番、ラベルは以下の図を参照すること。更に自分で図を見やすくカスタマイズしても良い。

  • 以下のような図にするためにはAge_JEduc_Jのfactor化が必要である。
# ここにRコード