==== 回帰分析 ==== === 一番短い説明 === |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)