==== 回帰分析 ====
=== 一番短い説明 ===
|Y|X1|X2|
|1|2|2|
|2|1|0|
|1|1|2|
|0|2|0|
上のデータをExcelやOpenOffice calcでコピーしてから、次の一行を実行する。
# Excelで用意したデータをコピー (Windows)
data.table <- read.table("clipboard", header=T)
# Excelで用意したデータをコピー (Mac)
data.table <- read.table(pipe("pbpaste"), header=T)
当たり前だが、Excelでコピーしてから、上の一行をコピーして貼り付けたら、データは正しくコピーされない。
# 最小二乗推定(回帰分析)の実行
data.lm <- lm(Y~X1+X2, data=data.table)
# 要約の出力
summary(data.lm)
plot(data.lm, which=1:4)
=== 演習用のコード ===
== 単回帰分析 ==
参考文献の表4.1のデータの入力は次の通り。
x <- c(2.2,4.1,5.5,1.9,3.4,2.6,4.2,3.7,4.9,3.2)
y <- c(71,81,86,72,77,73,80,81,85,74)
table.4.1 <- data.frame(x=x,y=y)
回帰分析の実行にはlm関数を用いる。
lm(y~x, data=table.4.1)
「y~x」は、変数yを変数xで説明する回帰分析を行うための表現。これは
Y = \beta_0+\beta_1 X+\epsilon
という回帰式を推定せよ、という意味である。
回帰分析の詳細を示すには、lm関数の実行結果を別の変数lm.4.1などに代入してから、詳細を出力させるsummary関数を用いる。
lm.4.1 <- lm(y~x, data=table.4.1)
print(lm.4.1)
summary(lm.4.1)
**問1:このsummary関数の出力結果を、参考文献の説明と対比させて理解せよ。**
回帰分析の結果を診断するために、幾つかのグラフを出力する機能がある。lm関数の実行結果をplot関数にかければ、そのようなグラフが4枚、順次出力される。
plot(test.lm)
**問2:このplot関数の出力結果を、参考文献の説明と対比させて理解せよ。**
== 重回帰分析 ==
表5.1のデータは次のように入力する。
x.1 <- c(51,38,57,51,53,77,63,69,72,73)
x.2 <- c(16,4,16,11,4,22,5,5,2,1)
y <- c(3.0,3.2,3.3,3.9,4.4,4.5,4.5,5.4,5.4,6.0)
table.5.1 <- data.frame(x.1=x.1,x.2=x.2,y=y)
回帰分析の実行には、説明変数が複数あっても(重回帰でも)lm関数を用いる。
lm(y~x.1+x.2, data=table.5.1)
今度は説明変数が2つあるので、「y~x.1+x.2」となる。これは
Y = \beta_0+\beta_1 X_1 + \beta_2 X_2+\epsilon
という回帰式を推定せよ、という意味である。
回帰分析の詳細を示すには、lm関数の実行結果を別の変数lm.5.1などに代入してから、詳細を出力させるsummary関数を用いる。
lm.5.1 <- lm(y~x.1+x.2, data=table.5.1)
print(lm.5.1)
summary(lm.5.1)
**問4:このplot関数の出力結果を、参考文献の説明と対比させて理解せよ。**
== 重回帰応用(水準変数が説明変数に含まれる場合) ==
上のデータを、広さを「広め(w)」「狭め(n)」とし、築年数も「新しめ(new)」「古め(old)」にする
x.1 <- c("n","n","n","n","n","w","w","w","w","w")
x.2 <- c("old","new","old","old","new","old","new","new","new","new")
y <- c(3.0,3.2,3.3,3.9,4.4,4.5,4.5,5.4,5.4,6.0)
table.5.1.c <- data.frame(x.1=x.1,x.2=x.2,y=y)
**問5:このデータで、回帰分析を行い、グラフも作成して、先のモデルと何が異なるか、検討せよ。**
lm.5.1.c <- lm(y~x.1+x.2, data=table.5.1.c)
print(lm.5.1.c)
summary(lm.5.1.c)
plot(lm.5.1.c)