回帰直線

  • 直線は、まっすぐな線
  • ユークリッド空間に直線を引くことができる
  • 曲がった空間(多様体)にも(いたるところ、局所的にはユークリッド空間的なら)直線を引くことができる
  • たとえば、円筒表面を考える
  • 筒の長軸に一定の速度で進みつつ、筒の円周を一定の角速度で回転するような運動を考える
  • x=\cos(t),y=\sin(t),z=tはそのような運動の一例
  • このような時空間上の状態変化があったときに、z軸が時間軸。y軸の観察をすると、yは三角関数状に周期的変化をする
  • このような状況はどんな風に起こせるだろうか?
    • 今、時間に沿って、一定の頻度で何かしらが起きているとする
    • その起きている何がしかは\frac{dx}{dt}=-y,\frac{dy}{dt}=xのような相互作用的な2要素の反応を進めさせる作用を持つものとする
    • そうすると、zが増えるに連れて、yが(xも)周期的に変化する。そして、zy(xも)の間には「因果関係」があり得る
  • ここで、円筒表面空間において、このらせんは「直線」的性質を持つから、このような現象について観察すれば『直線への回帰』をすることができるのではなかろうか
  • 直線への回帰は、1次な線形式への回帰のこと
    • x=t,y=tなのでy=xとするのがユークリッドな1次線形回帰としよう
    • ここで、媒介変数tを使っている
    • 1次線形回帰ではt~xとしたうえで、y=f(t)=t~xとしている
    • 一般化線形回帰ではt~xと線形回帰されたとすると、f(t)=exp(t)となっている
    • ここで、y=f(t)=\cos(t)としてみよう。これが、円筒表面空間における直線への回帰
  • 高次の線形式への回帰ももちろん可能
    • t~a+bx+cx^2のような線形回帰をしたときに、y=f(t)=tであれば、y~a+bx+cx^2になるが
  • 一般化線形回帰の枠になればy=f(t)=exp(t)なのでy~exp(a+bx+cx^2)となる
  • 円筒表面空間ではy=\cos(a+bx+cx^2...)
  • これを使ってRで遊んでみる
k<-2 # 次数
s<-20 # xの範囲に影響するパラメタ
as<-runif(k)*s # 係数
d<-max(as)-min(as) # 値域
x<-seq(from=min(as)-d*0.1,to=max(as)+d*0.1,length=1000)
# t~xだが、少しずらす
t<-x+rnorm(length(x))*0.1
y<-rep(1,length(t))
for(i in 1:length(t)){
	for(j in 1:k){
		y[i]<-y[i]*(t[i]-as[j])
	}
}
par(mfcol=c(1,2))
plot(x,cos(y),type="l")
plot(x,y,type="l")
par(mfcol=c(1,1))