「マクロ政治データ分析実習」第7回課題
セットアップ
問題1: {tidyverse}、{summarytools}、{fastDummies}パッケージを読み込む。
# ここにRコード問題2: LMSからダウンロードした期末レポート用データ(Macro_HW07.csv)を読み込み、raw_dfという名のオブジェクトとして格納し、出力すること。
- データはプロジェクト・フォルダー内に
Dataというフォルダーを作成し、そこにアップロードしておくこと。 - データの読み込みは必ず
read_csv()関数を使うこと(read.csv()は使わない)。
# ここにRコード# A tibble: 648 × 9
ID Company Type Name Soup Weight Calorie Fat Salt
<dbl> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 Toyo Bag ダブルラーメン しょうゆ Yes 182 806 31.2 11
2 2 Toyo Bag マルちゃん正麺 豚骨醤油味…… Yes 101 359 6.8 5.7
3 3 Myojo Cup 中華三昧タテ型ビッグ 赤坂榮林 トマト酸辣湯… Yes 98 379 7.8 6.9
4 4 Toyo Cup 緑のたぬき天そば でか盛(西向け)…… Yes 146 720 40.2 7.5
5 5 Acecock Cup 濃い味好きのための 濃厚チーズカレー味ラーメ… Yes 96 409 15 6.6
6 6 Nongshim Bag ノグリラーメン 袋麺 Yes 120 494 14.9 4.6
7 7 Marutai Stick 四海樓監修棒ちゃんぽん Yes 118 435 18 6.8
8 8 Marutai Cup 縦型ちゃんぽん Yes 65 286 11.1 4.3
9 9 Myojo Cup 一平ちゃん夜店の焼そば 豚旨塩だれ味…… No 132 622 31.8 4.5
10 10 Marutai Cup 縦型高菜ラーメン Yes 62 291 13.7 4
# ℹ 638 more rows
問題3: raw_dfの大きさ(行数と列数)を出力する。
# ここにRコード[1] 648 9
問題4: raw_dfの変数名(列名)を出力する。
# ここにRコード[1] "ID" "Company" "Type" "Name" "Soup" "Weight" "Calorie"
[8] "Fat" "Salt"
| 変数名 | 説明 | 単位 |
|---|---|---|
ID |
商品ID | |
Company |
メーカー | |
Type |
Bag: 袋 / Cup: カップ / Stick: 棒 | |
Name |
商品名 | |
Soup |
No: 汁なし / Yes: 汁あり | |
Weight |
容量 | g |
Calorie |
熱量 | kcal |
Salt |
食塩相当量 | g |
Fat |
脂質量 | g |
問題5: raw_dfからID(ID)、販売形態(Type)、汁の有無(Soup)、容量(Weight)、熱量(Calorie)、脂質量(Fat)、食塩相当量(Salt)の列を抽出し、df1という名のオブジェクトとして格納する。最後にdf1を出力すること。
# ここにRコード# A tibble: 648 × 7
ID Type Soup Weight Calorie Fat Salt
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 Bag Yes 182 806 31.2 11
2 2 Bag Yes 101 359 6.8 5.7
3 3 Cup Yes 98 379 7.8 6.9
4 4 Cup Yes 146 720 40.2 7.5
5 5 Cup Yes 96 409 15 6.6
6 6 Bag Yes 120 494 14.9 4.6
7 7 Stick Yes 118 435 18 6.8
8 8 Cup Yes 65 286 11.1 4.3
9 9 Cup No 132 622 31.8 4.5
10 10 Cup Yes 62 291 13.7 4
# ℹ 638 more rows
問題6: df1の操作を行う。操作後、df1を出力すること。
- Step 1: 100g当たりの食塩相当量を計算し、
Salt_100という列として追加する。- 100g当たりの食塩相当量は、食塩相当量(
Salt)を容量(Weight)で割り、100をかけることで計算できる。
- 100g当たりの食塩相当量は、食塩相当量(
- Step 2: Step 1と同様に、100g当たりの熱量と100g当たりの脂質量を計算し、それぞれ
Calrorie_100、Fat_100という名の列として追加する。 - Step 3:
df1を上書きし、df1を出力する。
# ここにRコード# A tibble: 648 × 10
ID Type Soup Weight Calorie Fat Salt Salt_100 Calorie_100 Fat_100
<dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 Bag Yes 182 806 31.2 11 6.04 443. 17.1
2 2 Bag Yes 101 359 6.8 5.7 5.64 355. 6.73
3 3 Cup Yes 98 379 7.8 6.9 7.04 387. 7.96
4 4 Cup Yes 146 720 40.2 7.5 5.14 493. 27.5
5 5 Cup Yes 96 409 15 6.6 6.87 426. 15.6
6 6 Bag Yes 120 494 14.9 4.6 3.83 412. 12.4
7 7 Stick Yes 118 435 18 6.8 5.76 369. 15.3
8 8 Cup Yes 65 286 11.1 4.3 6.62 440 17.1
9 9 Cup No 132 622 31.8 4.5 3.41 471. 24.1
10 10 Cup Yes 62 291 13.7 4 6.45 469. 22.1
# ℹ 638 more rows
平均値の差の検定
問題7: スープの有無(Soup)ごとに100g当たりの食塩相当量(Salt_100)の平均値を計算し、出力する。
# ここにRコード# A tibble: 2 × 2
Soup Salt
<chr> <dbl>
1 No 3.71
2 Yes 6.02
問題8: 以下のような仮説を検定する。仮説検定の際、有意水準は\(\alpha = 0.05\)を用いる。
- 帰無仮説: スープの有無で100g当たりの食塩相当量には差がない。
- 対立仮説: スープの有無で100g当たりの食塩相当量には差がある。
# ここにRコード
Welch Two Sample t-test
data: Salt_100 by Soup
t = -23.462, df = 183.81, p-value < 2.2e-16
alternative hypothesis: true difference in means between group No and group Yes is not equal to 0
95 percent confidence interval:
-2.504700 -2.116131
sample estimates:
mean in group No mean in group Yes
3.705596 6.016012
問題9: 問題8の検定結果を解釈せよ。
ここに解釈を記入
相関分析
問題10: df1を使用し、100g当たり食塩相当量と熱量の散布図を作成する。以下のような散布図が得られるのであれば、見やすくカスタマイズしても良い。
# ここにRコード問題11: df1を使用し、以下のような仮説を検定する。仮説検定の際、有意水準は\(\alpha = 0.01\)を用いる(\(\alpha = 0.05\)ではないことに注意すること)。
- 帰無仮説: 100g当たり食塩相当量と熱量には相関関係がない。
- 対立仮説: 100g当たり食塩相当量と熱量には相関関係がある。
# ここにRコード
Pearson's product-moment correlation
data: df1$Salt_100 and df1$Calorie_100
t = -2.389, df = 646, p-value = 0.01718
alternative hypothesis: true correlation is not equal to 0
99 percent confidence interval:
-0.192833052 0.007568239
sample estimates:
cor
-0.09358018
問題12: 問題11の検定結果を解釈せよ。
ここに解釈を記入
独立性の検定
問題13: df1を使用し、以下の手順で100g当たり脂質量(Fat_100)を3つのカテゴリーに分ける。ただし棒ラーメン(Type == "Stick")は商品数が少ないため、今回はデータから除外する。カテゴリー化された変数はFat_cという名の列として追加する。続いて、商品ID(ID)、麺のタイプ(Type)、100g当たり脂質量(Fat_100)、100g当たり脂質量のカテゴリー(Fat_c)列のみを抽出した結果を、df2という新しい名のオブジェクトとして格納する。最後にdf2を出力すること。
- Step 1: 麺のタイプ(
Type)が棒ラーメン("Stick")である行を除外する。 - Step 2: 100g当たり脂質量(
Fat_100)が10未満なら"Low"、20より高いなら"High"、それ以外は"Middle"とリコーディングし、Fat_cという名の列として追加する。 - Step 3:
Fat_cをfactor化する。要素の順番は"Low"、"Middle"、"High"とする。 - Step 4: 商品ID(
ID)、麺のタイプ(Type)、100g当たり脂質量(Fat_100)、100g当たり脂質量のカテゴリー(Fat_c)列のみを抽出する。 - Step 5: 処理結果を
df2に格納する。 - Step 6:
df2を出力する。
# ここにRコード# A tibble: 622 × 4
ID Type Fat_100 Fat_c
<dbl> <chr> <dbl> <fct>
1 1 Bag 17.1 Middle
2 2 Bag 6.73 Low
3 3 Cup 7.96 Low
4 4 Cup 27.5 High
5 5 Cup 15.6 Middle
6 6 Bag 12.4 Middle
7 8 Cup 17.1 Middle
8 9 Cup 24.1 High
9 10 Cup 22.1 High
10 11 Cup 20.4 High
# ℹ 612 more rows
問題14: df2を使用し、ラーメンの種類(Type)とカテゴリー化された100g当たり脂質量(Fat_c)のクロス表を作成する。行と列は逆でも構わない。
# ここにRコード
Low Middle High
Bag 45 84 10
Cup 30 264 189
問題15: df2を使用し、以下のような仮説を検定する。仮説検定の際、有意水準は\(\alpha = 0.05\)を用いる。
- 帰無仮説: ラーメンの種類(袋、カップ)と100g当たり脂質量は独立している。
- 対立仮説: ラーメンの種類(袋、カップ)と100g当たり脂質量は独立していない(=連関している)。
# ここにRコード
Pearson's Chi-squared test
data: table(df2$Type, df2$Fat_c)
X-squared = 96.326, df = 2, p-value < 2.2e-16
問題16: 問題15の検定結果を解釈せよ(問題14のクロス表も参照すること)。
ここに解釈を記入