lsfitでお手軽線形回帰

 修論で使用した図は全てRで作った.当たり前ですけどgnuplotより断然プログラマブルで痒いところに手が届きます.
 Rってバリバリ統計やる人のためのものじゃないのって思ってたけど,実験データの簡単な処理しかしないような自分にとってもすごく便利に感じている.
 そんなこんなで最近Rで線形回帰をする方法を覚えたのでメモしておく.
 lsfitを使うとお手軽に線形回帰分析できる.

x<-seq(0,10,0.1)
y<-20*x+10*rnorm(x,0.1) #y=20*xに従うデータ分布を生成
#プロット
plot(x,y,col="red",xlim=range(x),ylim=range(y),xlab="",ylab="") #データサンプル
par(new=T)
plot(x,20*x,col="blue",type="l",xlim=range(x),ylim=range(y),xlab="x",ylab="y",lty="dashed") #y=20*x
#線形回帰
fitted<-lsfit(x,y,intercept=FALSE) #lsfitで線形回帰
abline(fitted) #フィット後のデータプロット

f:id:ufssf:20120215142620j:plain
 たったこんだけで上みたいな感じの図が作れる.
 intercept=FALSEにすると切片ゼロでフィッティング.
 lsfit(x,y)$coeffは回帰直線の傾きの値.
 ablineだとグラフめいっぱいに線が引かれる.グラフの一部分にだけ線を引きたい,llsfitに与えたデータの範囲だけ線を引きたい時は回帰直線とデータのズレを表すlsfit(x,y)$residualを利用して下のようにplotする.

plot(x,y-fitted$residual)