R言語で乱数発生させて単回帰分析するには?

 Rで乱数を発生させて標本を生成し、その標本を用いて単回帰分析します。

要約

rnorm(n=?, mean =?, sd=?) #正規分布の乱数発生
lm(y ~ x) #単回帰分析

方法

 母集団では単回帰モデル 

$$Y_i=2+X_i+u_i$$

が成り立っているとして、標本を生成します。その標本を用いて、最小二乗法でパラーメーターを推定します。

コード

 次のコードを実行すると、次の回帰係数が推定されました。

$$Y_i=2.0083+0.9939X_i+u_i$$

#サンプル・サイズNを設定。ここではサンプル・サイズ3000
N <- 3000

#rnormで「n=サンプル・サイズ、mean=母平均、sd=標準偏差」の正規分布に従う乱数を発生させます
#xにサンプル・サイズN、母平均3、標準偏差1の乱数を格納
x <- rnorm(n=N, mean =3, sd=1)

#uにサンプル・サイズN、母平均0、標準偏差1の乱数を格納
u <- rnorm(n=N, mean =0, sd=1)

#Y=2+X+uのモデルでyを生成します
y <- 2 + 1*x+ u

#単回帰分析
lm(y ~ x)

散布図にする

 plotを用いると、次の散布図が出力されました。

# 縦にx、横にyで散布図。x軸は0〜10、y軸は0〜10
plot(x,y,xlim=c(0,10),ylim=c(0,10))
 
#回帰直線を引く
lm<-lm(y~x)
abline(lm,col=2)

 パッケージggplot2を用いて散布図を出力すると、下になりました。

# ggplot2を呼び出します。持っていない人はインストールしてください
library(ggplot2)
 
# データフレームを作成し、data1と名づけます
data1<-  data.frame(x,y)
 
#ggplotで散布図を書きます
ggplot(data1, aes(x = x, y = y))+ #data1のxを横軸に、yを縦軸に
 xlim(0, 10)+ #横軸の範囲を0〜10
 ylim(0, 10)+ #縦軸の範囲を0〜10
  geom_point()+  #点をプロット
  geom_smooth(method = "lm")  #回帰直線を描画

コメント欄 お気軽にコメントをお寄せください!

タイトルとURLをコピーしました