Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
65
R でロジスティック回帰分析
菅 準 一
概 要
パーソナルコンピュータの処理能力の向上と値段の低下にともなって、数値解析
や計量分析を手助けするソフトウェアを使う研究者や学生が多くなってきている。
しかしながら、高度の機能をもつMathematica, Matlab, SPSS などのソフトウェア
の値段は高止まりした状態で、研究費を持たない者には利用を阻む要因となってい
る。そういった状態において、ユーザーのなかには、そのようなソフトウェアのク
ローンを作成し、無料で公開し、それを利用し改良を加えるコミュニティーが形成
されている。ここでは S 言語のクローンである Rを使ったロジスティック回帰分
析について報告する。
目 次
はじめに
1 ロジスティック回帰分析と最尤法
1.1 ロジスティック回帰分析と最尤法
1.2 ニュートン・ラフソン法
1.3 ロジスティック回帰分析の例
1.3.1 生物学での使用例
1.3.2 ロジスティック回帰分析を販売に使用した例
2 ランダム効用理論からのロジットモデルの導出
2.1 ランダム効用理論
2.2 ランダム効用理論からロジットモデルへ
3 Python と R、rpy2 のインストール
4 ggplot2
おわりに
Vol. 12 No. 1
はじめに
パーソナルコンピュータの処理能力の向上と値段の低下にともなって、数値解析や計量分
析を手助けするソフトウェアを使う研究者や学生が多くなってきている。しかしながら、高
度の機能をもつMathematica, Matlab, SPSS などのソフトウェアの値段は高止まりした状態
で、研究費を持たない者には利用を阻む要因となっている。そういった状態において、ユー
ザーのなかには、そのようなソフトウェアのクローンを作成し、無料で公開し、それを利用
し改良を加えるコミュニティーが形成されている。ここでは S 言語のクローンである Rを
使ったロジスティック回帰分析について報告する1)。
1 ロジスティック回帰分析と最尤法
1.1 ロジスティック回帰分析と最尤法
ここでは被説明変数が0または1のどちらかの値を取る2値選択モデル(Binary Choice
Model)の中で、ロジスティック関数を使った回帰分析について考える2)。
線形ロジスティックモデルの一般形
(1)
ここで、η : イベントが発生する(被説明変数が1を取る)確率 pのロジット、β0 : 定数、βj :
偏回帰係数、xj : 第 j説明要因、ε : 誤差である。
(1)式の最初の等号を用いると、確率 pは次のようになる。
66
1)S 言語(えすげんご)とは、1984 年、AT&T ベル研究所の John Chambers、Rick Becker、Allan Wilksらによって研究・開発された統計処理言語である。1988 年にプログラミング言語としての S言語が策定され、1991 年にオブジェクト指向プログラミングの機能が追加され現在に至る。S言語に基づいた商業用統計パッケージは S-PLUS である。S言語の文法を取り入れたGNUプロジェクトによりオープンソースで作成されているものが R言語である。R言語は、ニュージーランドのAuckland 大学の Ross Ihakaと Robert Gentleman により作られた。R で作成したプログラムはWindows, Linux, Mac OSX 上で動き、ポータビリティに優れている。2012 年4月現在の最新版は、version 2.15.0(2012-03-30)である。
2)質的選択モデルあるいは離散的変数モデル(Models with discrete dependent variables)の中で最も単純なモデルである。例えば労働供給では働いたら1働かなかったら0、投票行動ではある候補者に投票したら1しなかったら0という具合に、あるイベントが発生したら1、発生しなかったら0を取る被説明変数に対して説明を与えるモデルである。例えば労働供給行動では、アンケート調査を行い、回答者が調査が行われた日から1週間以内に「働いている、または職を探している」と回答する場合には Y=1とし、それ以外を Y=0とおく。労働供給行動を説明する変数として、年齢、性別、婚姻の有無、学歴、就業経験等を考える。これらの変数をベクトル xで表すとする。これらの変数が影響する強さを表すパラメータのベクトルを βで与えると、
Prob (Y= 1) = F ( β'x)Prob (Y= 0) = 1-F ( β'x)
という形で表され、イベントが発生する確率を説明しようとする。この他にも職業選択、通勤手段の選択、学校選択など様々な応用が考えられる。
η = ln
(p
1− p
)= β0 + β1x1 + · · ·+ βjxj + · · ·+ βsxs + ε
Rでロジスティック回帰分析
(2)
この一般形(1)を使うと、第 i個人にイベントが発生する確率 piのロジット ηiは以下の
ように計算できる。
(3)
このときすべての個人に対して同じ β = [β0, β1, ... , βj, ... , βs]Tが用いられており、個人差は
プロファイル xi = [1, xi1, ... , xij, ... , xis] で表現されている。
(4)
いま n人に s項目のアンケートをとると、つぎのようなプロファイル行列 Xを得ることにな
る。ここで xijは第 i個人の第 j項目に対する回答であり、第 i行が第 i個人のプロファイル
(アンケートの回答)を表す。
(5)
それと同時にアンケートを通じて、第 i個人にイベントが発生したか否かの回答も入手する
ことができるとすると、0か1かを要素とするイベント発生パターンを表すベクトル Yを
得ることができる3)。
Y = [y1 ... yi ... yn]T (6)
すると、このアンケート結果を踏まえて、各個人にイベントが発生する確率 piのロジット
ηiを要素とするベクトル η を次のようにして計算することができる。
67
3)n人についてアンケートを取ると、パターンの数は 2n個ある。n=1 のときは[0]と[1]の 21個であり、n=2 のときは[00],[01],[10],[11]の 22個のパターンが論理的な可能性として考えられる。
ηi = xiβ = [1, xi1, . . . , xij , . . . , xis]
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
β0
β1
:
βj
:
βs
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
X =
⎡⎢⎢⎢⎢⎢⎢⎣
1 x11 . . . x1j . . . x1s
. . . . . . . . . . . . . .
1 xi1 . . . xij . . . xis
. . . . . . . . . . . . . .
1 xn1 . . . xnj . . . xns
⎤⎥⎥⎥⎥⎥⎥⎦
p =eη
1 + eη
ηi = ln
(pi
1− pi
)= β0 + β1xi1 + · · ·+ βjxij + · · ·+ βsxis + εi
4)第 i個人にイベントが発生する確率: であり、
第 i個人にイベントが発生しない確率:
Vol. 12 No. 1
(7)
さらに、このロジットを用いると、イベントの発生確率を以下のように計算できる4)。
(8)
とまとめることができる。さらに ηi = xi βを代入すると
(9)
と書き換えられる。
アンケートから分かったイベント発生パターン Y = [y1 ... yi ... yn]Tの出現する確率が、アン
ケートで得られたプロファイル行列 Xと回帰モデルの βの設定に依存することを明示する
と、
(10)
と書くことができる。
アンケートで明らかになったイベント発生パターン Yとプロフィール行列 Xという情報
を、うまくモデル化できるように βが選ばれているほど、上の確率は高くなると考えてよ
いであろう。つまり確率が高い程その βは尤もらしいと考えてよいので、各 βに対してそ
の尤度を返す尤度関数と考えることができる。したがって、βの推計値として尤度関数を最
大にする bを選ぶことが適当であろう。
(11)
さらに、関数に単調増加な変換を施しても、最大値をとる bの値は影響を受けないので、上
の尤度関数の自然対数をとった対数尤度関数 L (β|X) [y1 ... yi ... yn]Tを使って bを探す方が簡
68
⎡⎢⎢⎢⎢⎢⎢⎣
η1
:
ηi
:
ηn
⎤⎥⎥⎥⎥⎥⎥⎦= η = Xβ =
⎡⎢⎢⎢⎢⎢⎢⎣
1 x11 . . . x1j . . . x1s
. . . . . . . . . . . . . .
1 xi1 . . . xij . . . xis
. . . . . . . . . . . . . .
1 xn1 . . . xnj . . . xns
⎤⎥⎥⎥⎥⎥⎥⎦
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
β0
β1
:
βj
:
βs
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
pi(yi) =eηiyi
1 + eηi=
⎧⎪⎨⎪⎩
eηi
1 + eηiyi = 1のとき
1
1 + eηiyi = 0のとき
pi(yi) =exiβyi
1 + exiβ
L (β|X)[y1 · · · yi · · · yn]T =n∏
i=1
pi(yi) =n∏
i=1
exiβyi
1 + exiβ
b = arg maxβ
L (β|X)[y1 · · · yi · · · yn]T = arg maxβ
n∏i=1
exiβyi
1 + exiβ
Prob[yi = 1] = pi =eηi
1 + eηi1
Prob[yi = 0] = 1− pi =1
1 + eηi
Rでロジスティック回帰分析
単である。それと同時に、対数尤度関数の漸近正規性という性質も重要である。
つまり
(12)
である5)。
ただし、この最大化問題は代数的に解くことができないので、ニュートン・ラフソン法を
使って数値計算で求めるしかない6)。
1.2 ニュートン・ラフソン法
いま、Yと Xのデータ(数値)が与えられたときの対数尤度関数を
(13)
として、βtでテイラー展開すると、βtから ε離れた点 βt+εでは
(14)
ここで gt =∇υ (βt) であり、gradient ベクトルを βtで評価したもので、また Ht = H (βt) であ
り、υ (β)のヘッセ行列 H (β)を βtで評価したものである。βt+1 = βt+εとおいて(14)式を書
き換えると以下のようになる。
(15)
υ (β)の最大値を探そうとしているわけだから、(15)式を最大にするように βt+1を決めると
よい。そこで、最大のための1階の条件を求めると、
(16)
である。Htが逆行列 Ht-1をもつならば
69
b = arg maxβ
L(β|X)[y1 · · · yi · · · yn]T = arg maxβ
n∑i=1
xiβyi −n∑
i=1
(1 + exiβ)
(1 + exiβ)v(β) =n∑
i=1
xiβyi −n∑
i=1
v(βt + ε) = v(βt) + ε′gt +1
2ε′Htε
v(βt+1) = v(βt) + (βt+1 − βt)′gt +
1
2(βt+1 − βt)
′Ht(βt+1 − βt)
∂v(βt+1)
∂βt+1= gt +Ht(βt+1 − βt) = 0
5)
6)ニュートン・ラフソン法(Newton-Raphson method)とは、方程式系を数値計算によって解くために、反復法を用いる求解アルゴリズムの1つである。対象とする方程式系に対する条件は、領域における微分可能性と2次微分に関する符号だけであり、線型性などは特に要求しない。名称は多項式のケースを考えたアイザック・ニュートンと反復法をあみだしたジョセフ・ラフソン(Joseph Raphson)に由来する。
n∑i=1
xiβyi −n∑
i=1
(1 + exiβ)
(L (β|X)[y1 · · · yi · · · yn]T
)(
n∏i=1
exiβyi
1 + exiβ
)L(β|X)[y1 · · · yi · · · yn]T =
=
=
ln
ln
ln
ln
ln
Vol. 12 No. 1
βt+1 = βt+(-Ht-1) gt (17)
ここで、
となって、関数 υ (β)の極値をあたえる点 bを逐次的に求める式を与える7)。
1.3 ロジスティック回帰分析の例
ここでは、生物学と販売で用いられる2つの例を用いて、Rを使ったロジスティック回帰
分析を簡単に見ておく。
1.3.1 生物学での使用例
用量を6段階に変えて 20 匹の実験動物にある薬品を投与した結果,表のデータが得られ
た。用量と死亡率の関係をプロットしたものが図である8)。
70
7)関数 υ (β)が極値をとる点 b = (b0, b1, ... , bs)では、1階の条件 g (b) =∇υ (b) = 0を満たさないといけないので、この連立方程式の解を求めると考えても同じ式が得られる。(17)に基づいて βt+1を選ぶと、
となる。もし Htが負値定符号ならば、υ (β)は厳密な凹関数であり、
gt ≠ 0であるかぎり、υ (βt+1) > υ (βt)となる。8)[12]の表 8.2 かぶと虫の死亡データを簡単にしたものと位置づけられる。
gt =∂v(βt)
∂β=
n∑i=1
xiyi −n∑
i=1
xiexiβt
1 + exiβt
Ht =∂2v(βt)
∂β∂β= −
n∑i=1
x′ixie
xiβt
(1 + exiβt)2
用量 個体数 死亡 死亡率111 20 0 0.0
186 20 4 0.2
243 20 10 0.5
297 20 16 0.8
382 20 18 0.9
504 20 20 1.0
v(βt+1) = v(βt)− 1
2g′t(H
−1t )′gt
ぎ
図1 実験データのプロット表1 実験データ
Rでロジスティック回帰分析
死亡するかしないかという2値モデルに対して、フリーソフト Rを使って、ロジスティ
ック回帰分析を行う。
以下のような CSV(Comma Separated Values)形式のデータファイル exam.csv を用意
する。
用量,個体数,死亡,死亡率
保存先は、以下のソースファイル exam.r と同じディレクトリにする9)。
以下の R のソースファイルを書き込んだ exam.r を作り source(”exam.r”)で読み込む
ことで実行する。#から後はコメントで、実行時には無視される。Rでは日本語変数名を使
うことができて、プログラムの可読性を高める(特に英語ばかりがならぶプログラムファイ
ルを見て、プログラミング言語を学ぶのが嫌になる学生たちに教えるときには有効であ
る)。
setwd("ディレクトリ名")#使用する環境に応じてディレクトリ名を変える。
data<-read.csv("exam.csv)#ディレクトリ名/exam.csv を読み込んで dataに保管
attach(data)#項目名で参照できるようにする
plot(用量,死亡率,xlim=c(111,504),ylim=c(0.0,1.0),xlab='Dosage',
ylab='Motarity rate')#データをプロット
ml<-cbind(死亡,個体数-死亡)#回帰分析用のデータを ml に保管
結果<-glm(ml~用量,trace=TRUE,family=binomial)#ロジスティック回帰分析し
て結果を結果に保管
#計算をトレースする。
Print(summary(結果))#結果を出力
予測値<-fitted(結果)#予測値を予測値に保管
Par(new=T)#先に描いた実測値のグラフに追加
71
9)通常は Rの起動時に指定される作業ディレクトリ(working directory)に保存すればよい。作業ディレクトリ(working directory)が分からないときは、Rのプロンプトに対して、getwd()とすれば表示される。ただ Rのためだけにファイルをコピーしたり移動するのはと思うならば、Rの作業ディレクトリの方を setwd(”ディレクトリ名”)コマンドで変更すればよいので、読み込むソースファイルの先頭に setwd(”ディレクトリ名”)を書いておくとよい。
111,20,0,0.0
186,20,4,0.2
243,20,10,0.5
297,20,16,0.8
382,20,18,0.9
504,20,20,1.0
Vol. 12 No. 1
Plot(用量,予測値,type="1",xlim=c(111,504),ylim=c(0.0,1.0),xlab='Dosage',
ylab='Motarity rate')#予測値のグラフを直線で結ぶ
R を起動して source(”exam.r”)でソースファイル exam.r を読み込むと、以下のように
推計結果が出力される
まず、glm を trace = ”TRUE”で実行しているので、5回の繰り返し計算の結果が表示さ
れている。つぎにロジスティックモデルをつかって推計した予測値(期待値)と実測値(観
測値)との誤差の大きさを示しているDeviance Residuals(逸脱誤差)が表示される。この
値が0に近いほど、予測がうまくいっており、モデルの当てはまりのよさに貢献しているこ
とが示されることになる。各グループの値を2乗して合計すると、このモデル全体の誤差を
表すResidual deviance 3.1955 が得られる。
72
Deviance = 3.621783 Iterations - 1
Deviance = 3.201684 Iterations - 2
Deviance = 3.195505 Iterations - 3
Deviance = 3.195503 Iterations - 4
Deviance = 3.195503 Iterations - 5
Call:
glm(formula = ml ~ 用量, family = binomial)
Deviance Residuals:
1 2 3 4 5 6
-1.2669 0.1275 0.3075 0.5012 -1.0583 0.3293
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -5.767149 1.102418 -5.231 1.68e-07 ***
用量 0.023167 0.004319 5.364 8.16e-08 ***
---
Signif. codes: 0‘ *** ’ 0.001‘ ** ’ 0.01‘ * ’ 0.05‘ . ’ 0.1‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 83.4542 on 5 degrees of freedom
Residual deviance: 3.1955 on 4 degrees of freedom
AIC: 19.266
Number of Fisher Scoring iterations: 5
Rでロジスティック回帰分析
その下に係数の推計値が与えられていて、定数は(intercept)で-5.767149 と表示されて
おり、用量の係数の推計値は 0.023167 であり、次の式を使って死亡率 pのロジット ηが計
算される。Logistic 回帰モデルのパラメータの推定値は最尤法によって推計され、対数尤度
関数の漸近正規性より、推定値の標準誤差(Std. Error)が計算される。推定値を標準誤差
で割った、z値(z valiue)が計算されて、正規検定にかけられる。最後に星3つが表示さ
れており、推計値は片側 0.001 で統計学的に有意であることがわかる。
η = 0.023167×用量-5.767149 (18)
したがって、死亡率 pを計算するには、ηをロジットの逆関数であるロジスティック関数に
代入する必要があるので
(19)
例えば用量 111 について ηを計算すると、η = -3.1956 で、p = -0.0393312 となる。各用量
について、ηと死亡率の予測値、死亡率(観測値)を求めると、以下のようになる。
この薬品の半数致死量は p = 0.5 となる用量であり、これは η = 0 となる用量なので、推計式
(18)より
推定式の当てはまりについては、Residuls deviance が近似的に自由度4の χ2分布するこ
とを使って、anova を使って検定可能である。
73
用量− 5.76714)1 + exp(0.023167
用量− 5.76714)exp(0.023167 ∗p =
exp(η)
1 + exp(η)=
半数致死量=5.767149
0.023167= 248.938
用量 η 予測値 死亡率111 -3.1956 0.0393312 0.0
186 -1.45808 0.188761 0.2
243 -0.137559 0.465664 0.5
297 1.11346 0.752773 0.8
382 3.08265 0.956172 0.9
504 5.90903 0.997293 1.0
表2 実測値と予測値
××
Vol. 12 No. 1
実測値のグラフに、上の推計結果を使った予測値を直線で結んだものを重ね描きしたもの
が、下の図である。
解析結果を保存した変数:結果に何がどこに入っているか見るためには names(結果)
1.3.2 ロジスティック回帰分析を販売に使用した例
以下のような顧客データをもとにロジスティック回帰分析を行う。このような簡単な例を
用いることによって、計量経済分析が直感にどこまで迫ることができるか。逆に顧客データ
74
anova(結果,test="Chi")
Analysis of Deviance Table
Model: binomial, link: logit
Response: ml
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 5 83.454
用量 1 80.259 4 3.196 < 2.2e-16 ***
---
Signif. codes: 0‘ *** ’ 0.001‘ ** ’ 0.01‘ * ’ 0.05‘ . ’ 0.1‘ ’ 1
図2 予測値のプロット
Rでロジスティック回帰分析
を見て得られる直感の内容を数値化するとはどういうことなのかを考える。過去1年間の顧
客データが顧客番号 101 から 105 まで与えられているとする。ここで、イベントが発生した
ら1発生しなかったら0である。
(直感)
顧客番号 101 のデータから「おもちゃも紙おむつも買わない客は子供服を買わない。」
顧客番号 102 と 104 のデータから「おもちゃと紙おむつの両方を買う客は子供服を買
う。」
顧客番号 103 と 105 のデータから「紙おむつだけしか買わない客は子供服を買う確率は
半々。」
この直感にロジスティック回帰分析はどこまで迫ることができるのか。
子供服を購入する確率をおもちゃ購入、紙おむつ購入の有無で説明する
75
Call:
glm(formula = 子供服購入 ~ おもちゃ購入 + 紙おむつ購入,
family = binomial)
Deviance Residuals:
1 2 3 4 5
-4.838e-05 4.838e-05 -1.177e+00 4.838e-05 1.177e+00
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -20.57 17730.37 -0.001 0.999
おもちゃ購入 20.57 12537.26 0.002 0.999
紙おむつ購入 20.57 17730.37 0.001 0.999
(Dispersion parameter for binomial family taken to be 1)
”顧客番号” ”おもちゃ購入” ”紙おむつ購入” ”子供服購入”
101 0 0 0
102 1 1 1
103 0 1 0
104 1 1 1
105 0 1 1
106 1 0 ?
107 1 1 0
表3 販売データ
Vol. 12 No. 1
推計に基づく予測値と実測値とを比較すると次のようになる。
これを見ると、先ほどの直感が数値化されたものとみることができる。
顧客番号 106 のようなまったく新しい購入パターンの顧客が現れたとき、子供服を買う確
率は
であり と予測できる。
また、顧客番号 107 のように、おもちゃと紙おむつを買っても子供服を買わなかった顧客
データが見つかったとき、「おもちゃと紙おむつの両方を買う客は子供服を買う。」という
直感が覆されたことになる。
76
Null deviance: 6.7301 on 4 degrees of freedom
Residual deviance: 2.7726 on 2 degrees of freedom
AIC: 8.7726
Number of Fisher Scoring iterations: 19
実測値 予測値1 0 1.170226e-09
2 1 1.000000e+00
3 0 5.000000e-01
4 1 1.000000e+00
5 1 5.000000e-01
Call:
glm(formula = 子供服購入 ~ おもちゃ購入 + 紙おむつ購入,
family = binomial)
Deviance Residuals:
1 2 3 4 5 6
-0.0001315 0.9005166 -1.1774100 0.9005166 1.1774100 -1.4823038
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -18.5661 6522.6386 -0.003 0.998
おもちゃ購入 0.6931 1.8708 0.371 0.711
紙おむつ購入 18.5661 6522.6388 0.003 0.998
=1
21 + 20.75 0)1 + exp(−20.75 + 20.75
1
1
2
× ×
Rでロジスティック回帰分析
データの数が少なくて(直感)の信頼性は低いが、ロジットモデルで何を考えようとして
いるかは読み取れるのではないだろうか。
2 ランダム効用理論からのロジットモデルの導出
2.1 ランダム効用理論
ロジットモデルは、経済学による基礎付けを欠くものと思えるが、実は消費者の効用最大
化モデルから導きだすことが可能である。
効用関数
n番目の個人が選択肢集合 Anの第 i選択肢を選んだときの効用水準を
Uin = β1x1in+β2x2in+...+βkxkin+εin (20)
= Vin+εin (21)
ここで、Vin = β 'xinで、説明可能な効用部分であり、εinは説明不能な確率項である。いま第 i
選択肢の方が第 j選択肢より効用が高いと仮定する、つまり
Uin > Ujn, i ≠ j, i, j∈An (22)
ランダム効用理論では、個人は、大きい効用を与える選択肢を選ぶと仮定するから、選択肢
iが選択肢 jより選ばれる確率 Pinは、
Pin = prob (Uin > Ujn ∀j ≠ i, i, j∈An) (23)
= prob (Vin+εin > Vjn+εin ∀j ≠ i, i, j∈An) (24)
= prob (εjn+εin > Vin+Vjn ∀j ≠ i, i, j∈An) (25)
77
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 8.3178 on 5 degrees of freedom
Residual deviance: 6.5917 on 3 degrees of freedom
AIC: 12.592
Number of Fisher Scoring iterations: 17
> 予測実測値 予測値
1 0 8.646869e-09
2 1 6.666667e-01
3 0 5.000000e-01
4 1 6.666667e-01
5 1 5.000000e-01
6 0 6.666667e-01
Vol. 12 No. 1
2.2 ランダム効用理論からロジットモデルへ
確率項へのガンベル分布の適用
F (ε) = exp {-exp [-ω (ε-η)]} (26)
F' (ε) = ω・exp {-ω [(ε-η)]}・exp {-exp [-ω (ε-η)]} (27)
ここで、(η, ω) = (0, 1)と仮定したときの分布関数 Λ (εin) と密度関数 λ (εin) は次のようにな
る。
λ (εin) = exp (-εin)・exp {-exp (εin)} (28)
Λ (εin) = exp {-exp (εin)} (29)
以上より、εin(特定の値)でかつ、すべての j ≠ i, i, j∈Anに対して εjn < εin+Vin-Vjnである
確率 I (εin)は、
(30)
(31)
したがって、第 i選択肢が選択される確率 Pinは次のようにして求められる。
(32)
(33)
(34)
ただし、2行目では t = exp (-εin)とおいて、両辺を微分すると、
かつ εin→ ∞, t →0であり εin→ -∞, t →∞であることを用いている。
ここで、An = {0, 1}として、V0n = 0とおくと、
(35)
3 Python と R、rpy2 のインストール
多くのプログラム言語の中では、習得が比較的簡単、応用範囲が広くて使い勝手のよい
Python に R の統計処理を付加することによって、簡単な統計処理をすることを考えてみ
る。
まず Python から R を使うために必要となる rpy2 が動作保証する Python と R のバージ
78
I(εin) = λ(εin) ·∏
j∈An,j �=i
Λ(εin + Vin − Vjn)
= exp(−εin)⎧⎨⎩exp[−exp(−εin)] ·
∑j∈An
exp(Vjn − Vin)
⎫⎬⎭
P1n =exp(V1n)
exp(V0n) + exp(V1n)=
exp(V1n)
1 + exp(V1n)
Pin =
∫ ∞
−∞I(εin)dεin
=
∫ ∞
0
t · exp(−t)⎧⎨⎩
∑j∈An
exp(Vjn − Vin)
⎫⎬⎭ · (dt
t)
=exp(Vin)∑
j∈Anexp(Vjn)
dεin = − dt
exp(−εin) = −dt
t
Rでロジスティック回帰分析
ョンをインストールする必要がある。あまり細かいことを気にするのが嫌な人は、Python
は 2.7xx で Rは最新版をインストールするのがよいだろう。Rのダウンロードサイトに行っ
て、自分が使っている OS(Windows や Mac OS X,Ubuntu など)ごとに提供されているバイナリーファイルをインストールするのが一番簡単な方法である 10)。
rpy2 の最新安定版は、2.2.1 なので、それをダウンロードして展開してできる rpy2-2.2.1
フォルダーに移動してターミナルの入力プロンプト$に対して
$ python setup.py install
を実行する。うまく動くか確認するためには、Python を起動して Python の入力プロンプ
トである>>>に続けて
>>>import rpy2.robjects as robj
を実行してエラーが出なければよい。
4 ggplot2
ggplot2 は、Rユーザーの間ではデファクトスタンダードのツールとなっているグラフィ
ックパッケージであり、SYSTAT Software inc の計算機科学者 Leland Wilkinson が提唱す
る「グラフィック文法(The Grammar of Graphics)」の精神を R で実現するために、
Rice 大学の計算機統計学者、Hadley Wickham氏が作成したものである。
Rの plot と ggplot を使って χ2の確率分布を自由度ごとに描画するスクリプトをファイル
chisq. r に書き込み、実行したものが以下の図である。
79
library(ggplot2)
m<-50
curve(dchisq(x,1),main="Probability Density Function:Chi-squre",
xlab="random variable",ylab="density",0,m)
curve(dchisq(x,2),0,m,add=T,col=2)
curve(dchisq(x,4),0,m,add=T,col=3)
curve(dchisq(x,6),0,m,add=T,col=4)
curve(dchisq(x,30),0,m,add=T,col=5)
legend(25,0.4,legend=c("df=1","df=2","df=4","df=6","df=30"),
col=1:5,lty=c(1,1,1,1,1))
# 凡例を座標 (25,0.4)につけました#ggplotを使いますf<-ggplot(data.frame(x=c(0,m)),aes(x))+
stat_function(fun=dchisq,args=list(df=1),aes(colour="1"))+
stat_function(fun=dchisq,args=list(df=2),aes(colour="2"))+
stat_function(fun=dchisq,args=list(df=4),aes(colour="3"))+
stat_function(fun=dchisq,args=list(df=6),aes(colour="4"))+
Vol. 12 No. 1
おわりに
パーソナルコンピュータの処理能力の向上と値段の低下にともなって、数値解析や計量分
析を手助けするソフトウェアを使う研究者や学生が多くなってきている。しかしながら、高
度の機能をもつMathematica, Matlab, SPSS などのソフトウェアの値段は高止まりした状態
で、研究費を持たない者には利用を阻む要因となっている。そういった状態において、ユー
ザーのなかには、そのようなソフトウェアのクローンを作成し、無料で公開し、それを利用
し改良を加えるコミュニティーが形成されている。ここでは S 言語のクローンである Rを
使ったロジスティック回帰分析について報告した。ロジスティック回帰分析がランダム効用
理論という経済理論の基礎付けをもっており、このような離散的な意思決定モデルの歴史も
長く、そろそろ学士課程に組入れられる時が来たように思える。
ターミナルからコマンド入力して Rを使うことに抵抗感がある場合は、Mac OSX には、
Rのための GUI である Rコンソールがあるので、それを用いるとよい。さらにMcMaster
大学の John Fox 教授が作った Rコマンダーを用いると、メニューから操作を選んで使うこ
とができる。Rコマンダーはテキスト表示に tcl/tk を用いており、tcl/tk は国際化に対応し
ているので、文字コードをUTF-8 にすると、メニューを日本語表示できる。
80
stat_function(fun=dchisq,args=list(df=30),aes(colour="5"))
f<-f+opts(title="Probability Density Function:Chi-square")
f<-f+labs(x="random variable",y="density")
f<-f+scale_colour_manual(name="degree of freedom",values=c("1","2","3","4","5"),
breaks=c("1","2","3","4","5"),
labels=c("df=1","df=2","df=4","df=6","df=30"),guide="legend")
print(f)
図3 plot の図 図4 ggplot の図
Rでロジスティック回帰分析
参考文献
[1]D. ショーカー.Rグラフィックス自由自在.シュプリンガー・ジャパン株式会社,
12 2009.
[2]William H. Greene and David A. Hensher. Modeling Ordered Choices: A Primer. Cambridge
University Press, 1 edition, 4 2010.
[3]Annette J. Dobson.一般化線形モデル入門原著第2版.共立出版,9 2008.
[4]Derek A. Roff.生物学のための計算統計学-最尤法,ブートストラップ,無作為化法-.共立出版,3 2011.
[5]Brian S. Everitt and Torsten Hothorn.R による統計解析ハンドブック第2版.メディカル・パブリケーションズ,4 2010.
[6]U. リゲス.R の基礎とプログラミング技法.シュプリンガー・ジャパン(株),102006.
[7]J. アルバート.Rで学ぶベイズ統計学入門.シュプリンガージャパン,12 2010.[8]J. アルバート.Rで学ぶベイズ統計学入門.丸善出版,4 2012.[9]アラングラフェン,ロージーヘイルズ.一般線形モデルによる生物科学のための現代
統計学-あなたの実験をどのように解析するか.共立出版,1 2007.
[10]チェンシャオ.ミクロ計量経済学の方法-パネル・データ分析.東洋経済新報社,12
2007.
[11]デビッド・アロンソン.テクニカル分析の迷信--行動ファイナンスと統計学を活用し
た科学的アプローチ(ウィザードブックシリーズ).パンローリング,A5 判,10
2009.
[12]アネット・J. ドブソン.統計モデル入門-回帰モデルから一般化線形モデルまで.共
立出版,2 1993.
[13]熊谷悦生,舟尾暢男.Rで学ぶデータマイニング〈2〉シミュレーション編.オーム
社,12 2008.
[14]垂水共之,飯塚誠也.R/S-PLUS による統計解析入門.共立出版,4 2006.
[15]姜興起.ベイズ統計データ解析(R で学ぶデータサイエンス3).共立出版,7
2010.
[16]小暮厚之.Rによる統計データ分析入門(シリーズ統計科学のプラクティス).朝倉
書店,9 2009.
[17]田中孝文.Rによる時系列分析入門.シーエーピー出版,6 2008.
[18]中澤港.Rによる統計解析の基礎(Computer in Education and Research).ピアソンエ
デュケーション,10 2003.
81
Vol. 12 No. 1
[19]加藤剛.フリーソフト「R」ではじめる統計処理超入門(知識ゼロでもわかる統計
学).技術評論社,4 2012.
[20]山田剛史,杉澤武俊,村井潤一郎.Rによるやさしい統計学.オーム社,1 2008.
[21]内田治.すぐに使えるRによる統計解析とグラフの活用.東京図書,4 2010.
[22]竹内俊彦.はじめての S-PLUS/R 言語プログラミング-例題で学ぶ S-PLUS/R 言
語の基本.オーム社,11 2005.
[23]岡田昌史(編).Rによる医療統計学.丸善,1 2007.
[24]岡田昌史.Rパッケージガイドブック.東京図書,4 2011.
[25]照井伸彦.R によるベイズ統計分析(シリーズ統計科学のプラクティス).朝倉書
店,3 2010.
[26]大森崇,阪田真己子,宿久洋.R Commander によるデータ解析.共立出版,2
2011.
[27]赤間世紀.Rリファレンスブック-逆引きが役立つ!.カットシステム,10 2011.
[28]赤間世紀.やさしいR入門-初歩から学ぶR統計分析.カットシステム,5 2011.
[29]赤間世紀,山口喜博.Rによる統計入門.技報堂出版,9 2006.
[30]古谷知之.ベイズ統計データ分析-R & WinBUGS(統計ライブラリー).朝倉書
店,9 2008.
[31]舟尾暢男.R Commander ハンドブック-A Basic-Statistics GUI for R.九天社,8
2007.
[32]舟尾暢男.The R Tips-データ解析環境 Rの基本技・グラフィックス活用集.オー
ム社,第2,11 2009.
[33]舟尾暢男,高浪洋平.データ解析環境「R」-定番フリーソフトの基本操作からグラ
フィックス、統計解析まで(I・O BOOKS).工学社,12 2005.
[34]青木繁伸.Rによる統計解析.オーム社,4 2009.
[35]豊田秀樹.回帰分析入門(Rで学ぶ最新データ解析).東京図書,1 2012.
[36]金明哲.R によるデータサイエンス-データ解析の基礎から最新手法まで.森北出
版,10 2007.
[37]間瀬茂.Rプログラミングマニュアル(新・数理工学ライブラリ情報工学).数理工
学社,11 2007.
[38]秋山裕.Rによる計量経済学.オーム社,1 2009.
[39]藤井良宜.カテゴリカルデータ解析(Rで学ぶデータサイエンス1).共立出版,4 2010.
82