非線形回帰分析:回帰分析における変数変換
概要 1
回帰分析は基本的には変数間の線形関係を明らかにする方法だけど、必要ならデータを線形に「伸ばして」分析できる。これは本質的に従属変数を独立変数の非線形組み合わせで説明することです。
実践
組み込みデータのPressure
を読み込んでみよう。
Pressure
のデータは実際には統計的に分析する必要はない。
これは純粋に自然現象だから、実験と同じくらい数学的な証明が必要で、「因果関係」にもっと興呀があるからです。でも、どうしても回帰分析で分析したいときは、できるはずです。ただし、上記のデータに対する回帰式 $$(\text{pressure}) = \beta_{0 } + \beta_{1 } ( \text{temperature} ) + \varepsilon$$ は意味がないかもしれません。そこで、独立変数にログを取った$\log ( \text{temperature} )$と従属変数にログを取った$\log (\text{pressure})$を新たな変数として使ってみましょう。新たに作られる回帰式を $$\log (\text{pressure}) = \log {b_{0 }} + {b_{1 }} \log ( \text{temperature} )+ \varepsilon$$としよう。この分析がきちんとできたなら、 $$\log (\text{pressure}) = \log {b_{0 }} ( \text{temperature} )^{{b_{1 }}}+ \varepsilon$$なので、両辺のログを解くと $$ (\text{pressure}) = b_{0 } ( \text{temperature} )^{{b_{1 }}} + \varepsilon $$ のような関係式を導出できるはずです。当然ながらこのような式は実際の物理学でも似た形で登場します。それぞれの回帰分析を行い、回帰直線を引くと下記の通りです。
ログを取って解くという数式的な操作は人の仕事だ。
- 左側は何もなしでデータを分析しようとしたけど、回帰分析に必要な条件をまったく満たせず、意味がなかった。
- 右側はログスケールを取ったもので、非常に高い説明力でデータのトレンドを驚くほど正確に表していることが確認できる。もちろん、厳密に言えば残差分析に問題があって統計的に完璧だとは言えないけれど、データを十分に上手く説明しているのも事実です。
コード
以下はRの例のコードだ。
pressure; ?pressure
win.graph(4,4)
plot(pressure,main='Pressure\')
win.graph(8,4); par(mfrow=c(1,2))
out1<-lm(temperature~pressure,data=pressure); summary(out1)
plot(pressure,main='scale\'); abline(out1,col='red')
y<-pressure[-1,]$pressure; logtemp<-log(y)
x<-pressure[-1,]$temperature; logpress<-log(x)
out2<-lm(logtemp~logpress); summary(out2)
plot(logpress,logtemp,main='log scale\'); abline(out2,col='red')
一緒に見る
Hadi. (2006). Regression Analysis by Example(4th Edition): p152. ↩︎