社会心理学会大会2013@沖縄国際大学,はそこそこ楽しめたのだけど,中でも一番面白かったのが分位点回帰についてのWS。
前々から企画者のIさんに面白さは伺っていたのだけど(論文も書かれてましたね),WSで確認し,先ほど実際自分で触ってみて面白さを味わった。当然,Rでできるのである。
少し宣伝?解説?しておくと,従来の回帰分析が平均回帰を狙っているのに対し,分位点回帰は任意の分位点(30パーセンタイル点とか,第3四分位とか)での回帰係数を求めるというもの。しかもひとつではなくて,複数求めることができるから,第1四分位ではこういう傾きだったのに,第3四分位では傾きが変わりましたね,なんて事も分かる。
心理学変数のほとんどは正規分布するという便利な建前があるが,実態的データ,例えばネットワークサイズとか年収のようなもの,は当然偏った分布をするのであって,平均点目指して回帰する時点ですでに歪んでしまっているわけである。それを補正する可能性があるのがこの手法。
何より感心したのは,WSで「我々の仮説が平均回帰に縛られすぎてないか?もっと自由であるべきではないか?」という問いかけがあったこと。確かにそうだよなあ,実際のデータとか経験則は,必ずしも平均のことばかりではないからなあ。
さてRではquantregパッケージというのがあって,そのなかのrq関数が分位点回帰をしてくれる。QuantileRegressionだからqr関数じゃないの,と思うかもしれないが,qr関数はすでに固有値分解のQR法に割り当てられた名称なのでダメなのです(これは譲れない)。
quantregに入っているエンゲル係数データを使って,試しにちょっとやってみた。
library(quantreg) data(engel) rq(foodexp~income,data=engel,tau=seq(0,1,0.25))
コードはfoodexp(食費)をincome(収入)で予測するだけの式だけど,tau=seq(0,1,0.25)のオプションで0,0.25,0.50.0.75,1.0の分位点回帰をせよ,という意味になっている。0とか1は無意味だけど,0.25,0.75は四分位だし,0.50は中央値回帰になっている。結果は明らかで,収入が下位25%のところだと0.47しかない係数が,中央値で0.56,第3四分位で0.64とあがっていき,上位階層の人間ほど食費にお金が回せるのだな,ということが明らかだ。
お金がらみでついでにもうひとつ。野球の年俸と成績の関係を分位点回帰にかけてみた。データはここから持ってきたものを使っている。
> lm.last rq(lm.last,tau=seq(0,1,0.2)) Call: rq(formula = lm.last, tau = seq(0, 1, 0.2)) Coefficients: tau= 0.0 tau= 0.2 tau= 0.4 tau= 0.6 tau= 0.8 tau= 1.0 (Intercept) 6397.82414 4240.71533 19254.11587 26939.59529 43763.4488 49771.5673 HR 23.10606 315.67198 362.49252 415.00783 873.7140 1286.9765 daritu 9216.89054 28992.54940 -23872.97987 -38356.99185 -81445.9811 -68926.8040 K -1.49927 -62.66697 -33.99175 -43.16191 -125.8022 -229.7031 Degrees of freedom: 52 total; 48 residual
これをみると,年俸が低いうちはホームランや打率がものを言うが,年棒が高い層は打率はむしろ負のパスになって,ホームランや三振のパス係数がおおきくなっていく。つまり,記録より記憶で儲けるようになると,一流ってことですかな。
人文社会科学系のデータは歪んでいるのも一杯あるだろうから,こういうモデルで自由な仮説検証がもっと進むといいですね。
>> See also RPubs http://rpubs.com/kosugitti/10473
参考文献はこちら。安くていいと思う。
[amazonjs asin=”1412926289″ locale=”JP” title=”Quantile Regression (Quantitative Applications in the Social Sciences)”]