• このセクションで使っている R packages
library(tidyverse)
library(stargazer)
library(DT)

1. モンテ・カルロシミュレーション

  • 回帰分析のしくみ(特に信頼区間の意味)を理解するために、簡単なモンテ・ カルロシミュレーションを行う 
  • シミュレーションでは、自分で母数を設定し、データを人工的に作り出す 
  • 特徴を知りたい分析手法(ここでは OLS )を人工的に作り出したデータに当てはめ、母数を期待通りに推測できるかどうか確認する 
  • ここでは、単回帰を例にシミュレーションを行う  このシミュレーションを行う主な目的は以下の 3 つ 
  1. 最小二乗法が想定するデータ生成過程 (data generating process) を理解する
  2. 最小二乗推定量(OLSE: Ordinary Least Squares Estimator)の基本的な性質を理解する
  3. 信頼区間 (Confidence Interval) の意味を理解する
  • 単回帰モデルは次の式で表せる  

\[y_i \sim \mathrm{N}(\alpha_1 + \alpha_2 x_i, \sigma^2)- - - i = 1, 2, \dots, n\]

  • 設定する母数は次の 3 つである 
alpha1 <- 10 # 切片の値は 10  
alpha2 <- 3  # 傾き(独立変数の係数)は 3  
sigma  <- 6  # 標準偏差は 6  
  • 単回帰モデルが想定するデータ生成過程*に従って、データを生成する 

  • サンプルサイズ = 100 と指定

n <- 100   
  • 同一のサンプル結果を得られるよう特定のノイズを設定
set.seed(20210328)
  • 最大値 10 の一様分布から長さ nx ベクトルを無作為抽出
x <- runif(n, 0, 10) 
  • y の値を指定
y <- rnorm(n, alpha1 + alpha2 * x, sd = sigma)
  • 設定に従って正規分布から抽出した xy をデータフレームに入れる
df <- data.frame(y = y, x = x)
head(df)   # データの文頭を表示
          y         x
1 31.797051 8.1281966
2  8.285991 1.7148744
3 20.963492 1.9013890
4 29.246675 6.4274074
5 33.201243 9.5686632
6 12.079381 0.7597515
tail(df)  # データの終わりを表示
           y        x
95  23.88150 8.349453
96  25.52376 6.728700
97  42.03960 9.139047
98  34.03598 7.244872
99  25.14174 5.804608
100 16.32483 3.505625
  • 散布図にして直線を当てはめる
library("ggplot2")
scat <- ggplot(df, aes(x, y)) + 
  geom_point() + 
  geom_smooth(method = "lm")
  print(scat)