Code
- 1
-
複数のパッケージを一度に読み込める
pacman
パッケージが入っていない場合は,インストールする - 2
- パッケージの読み込み
2024/06/17
pacman
パッケージが入っていない場合は,インストールする
主要なパッケージ
pacman
複数のパッケージを読み込めるパッケージ。そのパッケージの中のp_load
コマンドを使うと,()内に指示したパッケージを読み込める。さらにそのパッケージがそもそもインストールされていない場合にはインストールした後に読み込んでくれる
tidyverse
Rのコードを楽にするたくさんのパッケージをパッケージにしたもの
magrittr
tidyverse
に含まれる%>%などのコードをさらに拡張するもの。これがあると%$%
とか%<>%
が使える
kadai_8.csv
には,ある大学の授業における学生19名の入学試験結果 (exam
,700点満点),入学から現在までのGPA (gpa
),高校の時の評定平均 (hschool
, 10段階)が含まれています。ここから,GPAが入試成績とどのような関係にあるかを検証したいと考えています。
describe
関数を使って,gpa
とexam
の平均・標準偏差・中央値・最大値・最小値等を確認してください1。(コードのみでいいです)gpa
とexam
の相関係数,およびその検定をしてください。(コードと結果)gpa
を従属変数,exam
を独立変数として回帰分析をしてください。その上で,係数とその統計的仮説検定の結果から,何が言えるかを説明してください(コードと説明のみ,結果は書く必要ないです)predict
関数を使って入試の点数がそれぞれ400,500,600,700点の時のgpa
の予測値を計算したいです。まず,3で行った回帰分析の結果をkekka <-
で保存しておいてください。次に以下のコードを実行して,まず入試の点数が400,500,600,700の時のデータを作り,newdata
という名前で保存します。その後,predict(kekka, new = newdata)
を使ってそれぞれの予測値を算出してください。(コードと結果)describe
関数を使って,gpaとexamの平均・標準偏差・中央値・最大値・最小値等を確認してください1。(コードのみでいいです)(1) | |
---|---|
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 | |
(Intercept) | -1.797+ |
(0.896) | |
exam | 0.008*** |
(0.002) | |
Num.Obs. | 19 |
R2 | 0.580 |
R2 Adj. | 0.556 |
F | 23.509 |
examの係数は0.008で,0.1%水準で統計的に有意。これは,入試の点数が1点高いと,gpaが0.008高くなると期待されることを意味する。例えば入試の点数が100点高いと,gpaが0.8高くなることが期待される。
predict
関数を使って入試の点数がそれぞれ400,500,600,700点の時のgpa
の予測値を計算したいです。まず,3で行った回帰分析の結果をkekka <-
で保存しておいてください。次に以下のコードを実行して,まず入試の点数が400,500,600,700の時のデータを作り,newdata
という名前で保存します。その後,predict(kekka,new = newdata)
を使ってそれぞれの予測値を算出してください。(コードと結果)
回帰分析では,2つの変数間の関係を線形関係(\(y = \beta_0 + \beta_1x\)という形)にモデル化して推定しました。
しかし,ある現象(例えば前回の例だったアイスクリーム屋さんの客数)が,1つの要因(気温)によって決まるということは稀です。
どれが最も重要なのかを知るために,例えば
みたいな形で別々に客数との関係を推定するのはあまり効率的ではありません。そこで使われるのが重回帰分析です。
\[ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + u \]
\[ ramen_i = \beta_0 + \beta_1 soup_i +\epsilon_i \]
ramen
: ラーメンの総合評価soup
: スープの評価\(\beta_1\)が正で,統計的に有意だった。ここからスープ評価が大事だとわかる。
ここで
スープだけでなく麺の食感も大事でしょう
チャーシューの味や分厚さが大事
味玉の美味しさでラーメン屋の仕事の丁寧さがわかる
とか言ってくる人も?結局どれがどれぐらい大事?
じゃあ関係ありそうな要因を全て入れてみて
\[ ramen_i = \beta_0 + \beta_1 soup_i + \beta_2 men_i + \beta_3 niku_i + \beta_4 negi_i + \epsilon_i \tag{1}\]
とできる1。こうすることで
つまり,上記のような疑問に(ある意味)対処した上でのスープの評価が大事かどうかがわかる。
今回使うのは,以前課題で使ったアイスクリーム屋さんの例です (アイスクリーム統計学より)
データの読み込み
データには,その日の最高気温saikou
,最低気温saitei
,客数kyaku
が含まれています。
(1) | (2) | |
---|---|---|
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 | ||
(Intercept) | -229.982** | 118.600 |
(73.787) | (151.256) | |
saikou | 17.248*** | |
(2.300) | ||
saitei | 8.100 | |
(6.029) | ||
Num.Obs. | 20 | 20 |
R2 | 0.758 | 0.091 |
R2 Adj. | 0.744 | 0.041 |
これは,最高気温が客数と有意ににプラスの関係にある一方で,最低気温と客数に関係が見られない,ということを示唆しています。
関連して,普通の相関係数を求めてみる。データのうち,通し番号(Num
)は必要ないので,dplyr::select()
コマンドで,使う変数(saikou, saitei, kyaku
)だけを選択し,そのあとcor()
関数を使う。
saikou saitei kyaku
saikou 1.0000000 0.7058315 0.8703519
saitei 0.7058315 1.0000000 0.3019116
kyaku 0.8703519 0.3019116 1.0000000
最高気温と客数は強い正の相関(0.87),最低気温と客数はあまり強くない相関(0.30)最高気温と最低気温も強い正の相関(0.71)
重回帰分析は,単回帰分析の独立変数部分を複数にして,「+」で繋ぐ。
Call:
lm(formula = kyaku ~ saitei + saikou, data = ice10)
Residuals:
Min 1Q Median 3Q Max
-17.274 -9.342 -2.920 10.810 26.392
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -90.640 37.718 -2.403 0.0279 *
saitei -16.703 2.012 -8.301 2.20e-07 ***
saikou 25.957 1.486 17.463 2.71e-12 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 13.52 on 17 degrees of freedom
Multiple R-squared: 0.952, Adjusted R-squared: 0.9464
F-statistic: 168.6 on 2 and 17 DF, p-value: 6.161e-12
重回帰分析を先ほどの2本の単回帰分析と並べてみる
(1) | (2) | (3) | |
---|---|---|---|
+ p < 0.1, * p < 0.05, ** p < 0.01, *** p < 0.001 | |||
(Intercept) | -229.982** | 118.600 | -90.640* |
(73.787) | (151.256) | (37.718) | |
saikou | 17.248*** | 25.957*** | |
(2.300) | (1.486) | ||
saitei | 8.100 | -16.703*** | |
(6.029) | (2.012) | ||
Num.Obs. | 20 | 20 | 20 |
R2 | 0.758 | 0.091 | 0.952 |
R2 Adj. | 0.744 | 0.041 | 0.946 |
R-squared
とAdjusted R-squared
という2つの種類は大差ないという話だったAdjusted R-squared
回帰から問題のある変数のうち1つを取り除く分散拡大要因 (Variance Inflation Factor: VIF)の値が5または10を上回る変数がないか確認する
今回は問題ない
前回と同じデータで分析を続けます。9_kadai.csv
には,ある大学の授業における学生19名の入学試験結果 (exam
,700点満点),入学から現在までのGPA (gpa
),高校の時の評定平均 (hschool
, 10段階)が含まれています。ここから,GPAが入学時点で得られる情報とどのような関係にあるかを検証したいと考えています。
gpa
とexam
,hschool3
つの変数の記述統計量をdescribe
関数を使って算出してください。(コード)gpa
とexam
,hschool3
つの変数の相関係数を計算してください。cor()
関数で,3つ以上の変数が含まれるデータを()内に指定すると,相関表が出力されます。(コード)gpa
を従属変数,exam
を独立変数として単回帰分析をしてください(前回課題と同じ)gpa
を従属変数,hschool
を独立変数として単回帰分析をしてください。その上で,係数とその統計的仮説検定の結果から,何が言えるかを説明してください(コードと説明のみ,結果は書く必要ないです)gpa
を従属変数,exam
とhschool
を独立変数として,重回帰分析をしてください。その上で,係数とその統計的仮説検定の結果から,何が言えるかを説明してください(コードと説明のみ,結果は書く必要ないです)/
2024社会調査法(立命館大学)