Rを用いた回帰分析
こんにちは。
最近、Rを使って回帰分析をする機会があったのでまとめておきます。
最終的に重回帰分析を行なったのですが、Rで3次元プロットをするのが難しかったのでデータを出力してoctave でプロットしました。
回帰分析とは
ある目的変数を説明変数で説明するモデルを作る事・・・だと思っています。
具体的には、実際のデータとの誤差が少ない直線(平面)を(パラメータを求める事で)求めます。
まあこの「モデルを作る」ためには様々な計算が必要だったりするのですが・・・それらがあまり分かっていなくても、Rを使えば求められてしまうのです。
(回帰分析の説明はこちらのpdfがとても分かりやすかったです)
ちなみに、線形単回帰の時は説明変数が1つで、説明変数が複数になると重回帰になります。
データセットを使った線形単回帰分析
では、実際にRを使った線形単回帰分析の様子を書いていきたいと思います。
今回は、Rに元々入っているiris というデータセットを使います。
data(iris)
これだけでデータを読み込めます。
データを読み込んだら、データに名前をつけておきます。
このデータは、3種類の花の花弁と萼片の、長さと幅のデータです。なので次のように名付けておきます。
PL <- iris$Petal.Length PW <- iris$Petal.Width SL <- iris$Sepal.Length SW <- iris$Sepal.Width SP <- iris$Species
これで準備はできたので、最後に線形単回帰を行います。例えば、PW(花弁の幅)をPL(花弁の長さ)で線形単回帰するときは、次のように書きます。
lsr1 <- lm(PW ~ PL) summary(lsr1) plot(PL,PW) abline(lsr1)
すると、次のような図が出てきます。
ちなみに、この直線がこのデータを説明するモデルです。
この直線の切片などは、コンソールに出力される「Coefficients」の「Estimate」の値です。
AICを用いたモデル選択
説明変数が1つの時はこれで良いのですが、説明変数が増えてくると様々なモデルが考えられるようになってきます。
ここで用いられるのがAIC(赤池情報量基準)です。これも色々数式があるのですが、AICが小さければよいモデルだそうです。
Rでは、
extractAIC(lsr1)
のように書くことでAICを計算できます。また、
step(lsr1)
と書くことで自動的にAICが最小となるモデルを探してくれます。
データセットを使った重回帰分析
では、最後に実際に行った重回帰分析の様子を書いて終わろうと思います。
lsr5 <- lm(PW ~ (PL + SL + SW) * SP) lsr52 <- step(lsr5) #result:PW ~ PL:SP + SW:SP, AIC:-539.9 lsr <- lsr52 summary(lsr)
これで出力される係数を元にして、octaveでプロットしたものの1つがこちらです。
ちなみに、octaveで面を描画するのにはmesh を用いました。
x=PL(:,2) y=SW(:,2) [xx, yy] = meshgrid(x,y) z = c0 + d0.*xx + e0.*yy z = c0+c1 + (d0+d1).*xx + (e0+e1).*yy z = c0+c2 + (d0+d2).*xx + (e0+e2).*yy mesh(x,y,z)
ついでに、今回行った内容を授業で発表したので、その時作成したpdfも供養として載せておきます。
参考記事
基本操作
R言語で統計解析入門: データフレームの行と列の入れ替え (転置行列) 梶山 喜一郎
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/43.html
write.csv() で簡単にCSV出力。ただしrow.names=TRUE/FALSEを意識する必要あり (R言語) - 一所懸命に手抜きする
回帰分析
Rで線形単回帰分析 - matsuou1の日記
http://cogpsy.educ.kyoto-u.ac.jp/personal/Kusumi/datasem13/shinya.pdf
- 作者: 山田剛史,杉澤武俊,村井潤一郎
- 出版社/メーカー: オーム社
- 発売日: 2008/01/25
- メディア: 単行本
- 購入: 64人 クリック: 782回
- この商品を含むブログ (68件) を見る