「マクロ政治データ分析実習」第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のクロス表も参照すること)。
ここに解釈を記入