過去のトップページ

日記

2009.08.03
An-225

AN-225ムリーヤ。世界最大の貨物機で、B747-400と比較すると全長1.19倍、全幅1.38倍、推力1.22倍、最大離陸重量1.45倍になっています。ただし全高は0.93倍、空虚重量は0.97倍となっており、全部の項目で最大と言うわけでも無い模様。

池田信夫氏のBLOGの記事「経済学の事故調査委員会」を読んでいて、「素人が玄人らしく語る」のは面白いもんだなと思った。

金融工学や動学マクロ経済学を批判しているのは、細部を除いてよしとしよう(金融工学にマクロ経済リスクは加味されているし、状況に応じて分散や相関が変化するモデルもある)。しかし、ミクロ金融理論に全く触れられていない点が興味深いし、池田信夫氏を経済学の素人に見せている。

そもそも経済学は、消費者と生産者が、何のために、どう行動するかが問題になる。多様化した経済学の分野の中でも、学問的な柱になっているのは変わりが無い。これは、金融理論においても何ら変わりが無く、ミクロ金融理論からは、そもそも米国のデリバティブ商品が危険なのは予知されていた。特に問題になった証券化された債権は、証券化した金融機関が債権者の返済能力を査定するので、金融機関がリスクを負わない場合は出鱈目な査定をすると考えられる。日本やアジアでは、幹事会社(SPDの親会社)である金融機関が十分なリスクを負っているので、サブプライムのような借り手リスクの評価が滅茶苦茶な商品は現われなかった。米国で発生した問題は、情報の経済学で議論されてきた、とても古い問題だ。そして、既に格付け会社の問題などがピックアップされて、『事故調査』は進んでいる。

素人目には、新しい経済学が出てきて、新しい経済問題を解決してくれると爽快なのかも知れない。しかし、問題が古い経済学や金融理論で説明できてしまう事も往々にある。素人的にはケインズがしたようにマクロ経済の側面から現象を説明して欲しいのかも知れない。しかし、経済学の基礎はミクロ経済理論なので、動学マクロ経済理論だけで世の中を分析する経済学者も恐らくいない。確かに経済学に批判すべき点はたくさんあると思うが、池田信夫氏の批判を聞いていると、氏が最近の経済学を本当に知っているのか疑問を感じざるをえない。

池田信夫氏が「政策・メディア」の専門家で、「経済」の専門家でないのは分かっている。池田氏の言動は、飲み屋で野球選手を批判する私たちと変わりは無い。自由な批判が許されるのが日本だ。しかし、著名人として発言が注目されているわけだし、経済について語るのも好きなようだ。それならば、もう少し経済学を学ぶ姿勢があっても良いのではないかと思う。

Trackback Ping-URL: http://uncorrelated.no-ip.com/cgi-bin/trackback/20090803

あらしの為のTips

(;゚д゚) R言語で均一分散、系列相関、正規性のチェックをせよ!

2009.02.01のTipsで、RでのOLSの使い方を確認した。しかし、計量分析で最小二乗法(OLS)は最も基本的、かつ効率的に推定を行う方法(BLUE:最良線形不偏推定量)だが、実は分析するデータにあなりの仮定条件をおいている。データがOLSの利用条件を満たしているかは、厳密には各種の検定が必要となるし、満たしていない場合は、さらに高度な分析を行う必要がある。

この仮定というのが、一般的に均一分散、系列相関無し、内生性無し(誤差項と説明変数の間に相関無し)、誤差項が正規分布の4つだ。以下の表に、これらが満たされない問題と、その検定方法・解決方法を記載した。変数行列式が特異ではないとかいう条件もあるが、これは計算の可否であってすぐ分かるので、ここでは触れない。

OLSの標準的仮定に対する問題と対策
問題 説明 検定方法 推定方法
不均一分散 所得などと、誤差項の分散に相関が発生 Breusch-Pagan
White
GLS, GMM
系列相関 年次データ等で、誤差項間に相関が発生。 Durbin-Watson
etc...
差分モデル
AR(n)等
内生性 説明変数と、誤差項間に相関が発生。 DWH IV, 2SLS, GMM
非正規性 誤差項の分布が、正規分布と見なせない。 Jarque-Bera
Shapiro-Wilk
ML, GMM

1. 不均一分散(heteroschedasicity)

説明変数や経済主体iと分散が相関していると、不均一分散になる。不均一分散が発生していると、有効推定ではなくなる。1時点しかないクロス・セクションのサンプルでも、不均一分散が発生しうるため、ミクロ計量分析でも比較的問題になりやすい。Rでは不均一分散はBreusch-Pagan検定が行いやすいので、BP検定を行ってみる。

まずはサンプルが無いと試せないので、サンプルを生成する。

obs <- 50 # 観測値は30
x1 <- runif(obs, min=0, max=10) # 一様分布から乱数生成
x2 <- runif(obs, min=0, max=5) # 一様分布から乱数生成
nu <- rnorm(obs, mean=0, sd=(2*x1)) # 正規分布から乱数生成。分散はx1に依存。
y <- 5 + 7*x1 - 1*x2 + nu # yを計算

見ての通り、x1の係数は7、x2の係数は-1である。

不均一分散になるように作ったサンプルなので検定結果は明白だが、検定を行ってみる。帰無仮説H0は均一分散。なお、install.packages("lmtest")でlmtestパッケージをインストールしておくこと。

library(lmtest) # lmtestライブラリーを呼び出す
frml <- y ~ x1 + x2 # モデル式を設定
bptest(frml) #テスト

Breusch-Pagan検定は、説明変数と誤差項の推定値の相関を見る検定なので、モデル指揮が必要となる。

恐らく検定結果は不均一分散になるので、weightをつけてGLS推定を行ってみる。weight無しのOLSよりは、真のモデルに近い推定量が得られる。

r_ols <- lm(frml) # OLS
e2 <- r_ols$residuals^2 # OLSの残差二乗をe2に格納
r_sigma <- lm(e2 ~ 0 + x1) # 負にならないように切片項無し推定
e_sigma <- r_sigma$fitted.values # 推定値をe_sigmaに入れる
r_gls <- lm(frml, weight=1/e_sigma) # weightとして分散推定値を使い推定を行う
summary(r_gls) # 結果を確認
summary(r_ols) # OLSの結果を参考に見ておく

2. 系列相関(autocorrelation)

時系列データでないと気にしても始まらないが、系列相関が問題になるときがある。よくあるケースでは、t時点のデータとt+1時点のデータが相関するケースだが、並んだ観測値間の誤差項に相関があればいいので時系列で無くても良い。

Yt = C + βXt + εt + εt-1
Yt+1 = C + βXt+1 + εt+1 + εt

以上のようなケースでは、Cov(εtt-1, εt+1t)≠0になるので、YtとYt+1は系列相関することになる。まずは、このような系列相関があるデータを作ってみよう。

mu <- rnorm(obs + 1, mean=0, sd=5) # obs + 1個の乱数を生成
y2 <- 5 + 7*x1 - 1*x2 + mu[-51] + mu[-1] # 1〜50番目の乱数と、2〜51番目の乱数を両方、撹乱項として足す。i番目とi+1番目の撹乱項は、半分は同じ乱数から構成されているので、相関することになる。

検定は、Q Test(Box-Pierce, Ljung-Box Test)、Durbin-Watson Test、Breusch-Godfrey Testなどで検定できる。帰無仮説H0は「系列相関が無い」。

Box.test(y2, lag=1) # Box-Pierce
Box.test(y2, lag=1, type="Ljung-Box") # Ljung-Box
dwtest(y2 ~ x1 + x2) # Durbin-Watson
bgtest(y2 ~ x1 + x2, order=1) # Breusch-Godfrey

Box検定は検出力が低いぞとか、DW検定は検出力が高そうだとか、BG検定は階差を指定できるとかをチェックしてみよう。y2をyに変えると系列相関がなくなるので、当然、系列相関は検出されなくなる。なお順序がおかしい時系列データ等で、時点を表す変数(time variables)がある場合は、order.byで指定できる。

系列相関がある場合は、AR(n)モデルなどで推定するのが簡単だ。例では、差分モデルAR(1)で推定したほうが、切片項は出ないものの、その他の係数は真のモデルに近いものになる。

summary(lm(y2 ~ x1 + x2)) # OLSでの推定結果
dy2 <- diff(y2); dx1 <- diff(x1); dx2 <- diff(x2) # 1階の差分を取る
summary(lm(dy2 ~ dx1 + dx2)) # AR(1)での推定結果

3. 内生性(endogeneity)

2009.02.13のTipsを参照。操作変数法と関連する検定の説明がある。

4. 非正規性(disnormality)

厳密にはOLSがBLUEである条件には入らないが、誤差項の正規性はShapiro-Wilk検定やJarque-Bera検定で行う事ができる。どちらの検定も、帰無仮説H0は「正規分布であること」なので注意すること。

e <- residuals(r_gls)/x1 # 残差を取得。なお、GLS推定の残差なのでweightをつけないと正規分布しない
shapiro.test(e) # Shapiro-Wilk検定

Jarque-Bera検定はtseriesパッケージ内のjarque.bera.test()関数か、以下のように自分で関数を書いて行う。

jb.test <- function(x){
 n <- length(x) # 標本数計算
 m <- mean(x) # 平均値計算
 sd <- sqrt(sum((x - m)^2)/n) # 標準偏差
 s <- (sum((x - m)^3)/n)/(sd^3) # 尖度
 k <- (sum((x - m)^4)/n)/(sd^4) # 歪度
 jb <- n*(s^2 + ((k - 3)^2/4))/6 # JB統計量
 r <- c(jb, 1 - pchisq(jb, 2)) # JB統計量とp値をrに代入
 names(r) <- c("Jarque-Bera Statistics", "p-value") # ラベルをつける
 return(r)
}
jb.test(e) # 作った関数を用いてJarque-Bera検定を行う

実用上はhist(e)をしてヒストグラフをプロットし、それを目視して対称分布になっていることを確認すれば十分。

まとめ

R言語で計量分析を行なう人は、均一分散、系列相関無し、内生性無し、正規分布は、計量分析を行なう際の基本的なチェック・ポイントなので、どういう状態なのか、どういう検定が可能なのか、どういう推定方法を用いるべきなのかを良く把握しておこう。教科書に出てくるこれらの問題を把握した上で、操作変数法やGMMなどを扱う事が、より的確な分析ができるようになるコツだ。

実のところ計量分析のテキストと、計量分析の実習と、分析に必要な計量手法があまり関連していないことが多く、初学者が何を覚えればいいのか混乱しがちなのが計量経済分析だ。あまり数字が好きではない人も多いので、lm()関数で分析結果の一覧が出て、それで満足しがちなところは否めない。しかし、経済データを使っている限り、単純な分析では推定結果が自分の予想しているものが出る事は少ない。データの中で何が起きているのかを、的確に把握できるように普段から練習しておこう。

参考ページ

  1. Grant V. Farnsworth (2008) "Econometrics in R"
  2. RjpWiki

注意

  1. 本ページは、本当に投げやりに書いています。
  2. 本サイトは、24時間運用ですが、事前に告知無くサーバーが停止するときもあります。必要な情報はメモをしてください。
  3. チャット友達へのページです。不愉快な思いをしても著者は責任を負いません。

過去ログ
最新版
09.14
08.03
07.31
06.29
05.29
04.17
04.14
04.13
...MORE!

全文検索
掲示板
画像板
投票CGI
ゲーム
パズル
マーカー
会員登録
会員専用

RSS1.0
RSS 1.0