すだちキャンパス

すだちキャンパス

やってみたこと、学んだことなどのメモ。

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)

すると、次のような図が出てきます。
f:id:sweetgohan:20181206141648p:plain
ちなみに、この直線がこのデータを説明するモデルです。
この直線の切片などは、コンソールに出力される「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つがこちらです。
f:id:sweetgohan:20181206143353p:plain

ちなみに、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も供養として載せておきます。