Rでエコノメトリクス

一行だけ修正したような場合,「タイムスタンプを変更しない」をチェックのこと

Rで計量経済分析を行いたい人向けの情報です。 まずはEconometrics in R (pdf)を.

Rを使って計量経済分析も参考にどうぞ。


パッケージの一括インストール

詳しくは CRAN Task View を参照していただきたいが、簡単には、

install.packages("ctv")
library(ctv)
install.views("Econometrics")
install.views("Finance")

で、必要なものはほぼすべて入ります。 個別のパッケージについては、

を参照されたい。

古典的手法

詳しくは Rの基本パッケージ中の回帰、分散分析関数一覧 を参照のこと。

OLS(最小二乗法)

関数 lm() をつかいます。

例(1)

Hayashi, Fumio. Econometrics. Princeton University Press, 2000.

Ch. 1 の例。

#データの読み込み
Elec<-read.table("http://www.rhasumi.net/data/econometrics/nerlove.txt")

#データセットの作成
LTC<-log(Elec[,1]); LQ <- log(Elec[,2]); LPL <- log(Elec[,3]);
LPF <- log(Elec[,4]); LPK <- log(Elec[,5])

#OLS 推定 Model (1.7.4)

result_b<-lm(LTC~LQ+LPL+LPF+LPK)

#結果の表示
# cf. (1.7.7) in p. 65
summary(result_b)

以下、表示例。

> summary(result_b)

Call:
lm(formula = LTC ~ LQ + LPL + LPF + LPK)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.97784 -0.23817 -0.01372  0.16031  1.81751 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -3.52650    1.77437  -1.987   0.0488 *  
LQ           0.72039    0.01747  41.244  < 2e-16 ***
LPL          0.43634    0.29105   1.499   0.1361    
LPF          0.42652    0.10037   4.249 3.89e-05 ***
LPK         -0.21989    0.33943  -0.648   0.5182    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.3924 on 140 degrees of freedom
Multiple R-Squared: 0.926,      Adjusted R-squared: 0.9238 
F-statistic: 437.7 on 4 and 140 DF,  p-value: < 2.2e-16 

例(2)

(続き:SSRはF検定に使用)

# (c) Model (1.7.6)
LTC1<-LTC-LPF; LPL1<-LPL-LPF; LPK1<-LPK-LPF;
result_c<-lm(LTC1~LQ+LPL1+LPK1)
# cf. (1.7.8) in p. 66
summary(result_c)
SSR_c<-deviance(result_c)

例(3)

(続き:SSRはF検定に使用)

DD<-matrix(0,ncol=20,nrow=145)
for(i in 0:4){
  DD[(1+i*29):(29+i*29),(1+i*4):(4+i*4)]<-1
 }
X2<-matrix(0,ncol=4,nrow=145)
X2[,1]<-1
X2[,2]<-LQ
X2[,3]<-LPL1
X2[,4]<-LPK1
Xlist<-cbind(X2,X2,X2,X2,X2)
XX<- DD * Xlist

result_e<-lm(LTC1~XX-1)
summary(result_e)
SSR_e <- deviance(result_e)

検定

lm() など、組み込み関数を使えば、t 検定程度ならば自動的に実行されます(同時有意性の検定は?(・∀・)ニヤニヤ)。 そのほか、例えば以下のようなパッケージ/関数が提供されています。

  • 分散の差の検定
検定名関数パッケージ
F検定pf()(デフォルト)
  • 不均一分散の検定
検定名関数パッケージ
Breusch-Pagan TestBptest()lmtest
White Testwhite.test()tseries
  • 系列相関の検定
検定名関数パッケージ
Q Test(Box-Pierce, Ljung-Box Test)Box.test()(デフォルト)
Breusch-Godfrey TestBgtest()lmtest
Durbin-Watson Testdurbin.watson()car
dwtest()lmtest
  • 単位根の検定
検定名関数パッケージ
Augmented Dickey-Fuller Testur.df()urca
adf.test()tseries
Phillips-Perron TestPP.test()tseries

F検定の例

(上記の続き)

F_f <- ((SSR_c - SSR_e) / 16 ) / (SSR_e / (125) )
PF_f <- 1 - pf(F_f,16,125)
PF_f

p 値の表示

> PF_f
[1] 1.451070e-09

モンテカルロシミュレーション

上記 Hayashi Ch 2. の Monte Carlo Exercise 2 (p. 183)

Box-Pierce, Ljung-Box 双方の Q 統計量の比較

ここでは一様分布から乱数を発生(z <- runif(50) - 0.5)

n <- 50; p <- 4; nrep <- 10^4
c_bp <- 0; c_lb <- 0
for( j in 1:nrep){
  z <- runif(50) - 0.5
  gam <- c()
  for (j in 1:p)
    gam[j] <- sum( (z[1:(n-j)]-mean(z))*(z[(1+j):n]-mean(z)) )/n
  #var_z <- var(z)
  var_z <- sum((z[1:n]-mean(z))^2)/n
  bp_Q <- n*sum( (gam/var_z)^2 )
  lb_Q <- n*(n+2) * sum( (gam/var_z)^2 / (n-c(1:p)) )
  if ( bp_Q < qchisq(0.95,p) )
    c_bp <- c_bp + 1
  if ( lb_Q < qchisq(0.95,p) )
    c_lb <- c_lb + 1
}
# print
cat(c_bp,c_lb,"\n")
cat(c_bp/nrep,c_lb/nrep,"\n")

モデル選択

AIC/BIC によるモデル選択は、関数 AIC() を使用します。

例(AICによるモデル選択)

(続き)

> AIC(result_c)
[1] 145.6767
> AIC(result_e)
[1] 95.31413

この場合は、パラメータが多いほうが予測力が大きいことを示唆しています。

GMM (Generalized Method of Moments: 一般化モーメント法)

パッケージ systemfit を参照。

systemfit(同時方程式推定パッケージ)パッケージ中のオブジェクト一覧?

時系列分析

AR、ARMA、ARIMAは、関数arima()を使用します。

GARCHは、パッケージ tseries に関数garch()があります。

tseries(時系列分析とコンピューテーショナル・ファイナンス)パッケージ中のオブジェクト一覧?

多変量の時系列解析は、パッケージ dse (dse1/dse2) を使用。 VAR モデルの推定などが可能です。

dseパッケージ中のオブジェクト一覧?

パネルデータ(panel)

パッケージ nlme を参照。

nlmeパッケージ中のオブジェクト一覧?

非線形回帰・最尤法

パッケージ stats4 に関数 mle() があります。

このほか、関数 nlm() も使用可能。少々難易度が高いか。汎用非線形最小化関数 nlmを参照のこと。

プロビット・ロジット

被説明変数(左辺)が 0 か 1 をとる場合の分析手法です。 プロビット・ロジスティック回帰には、関数 glm() をつかいます。

glm(y~ x1 + x2 +x3, family=binomial(link="logit"))
glm(y~ x1 + x2 +x3, family=binomial(link="probit"))

Ordered Logistic or Probit Regression(順序ロジット・順序プロビット)

関数 polr().パッケージは,MASS.

Multinominal Logistic Regression(多項ロジット)

関数 multinom().パッケージは,nnet.

ベイジアン

MCMCpack にプロビット・ロジット・順序プロビット・多項プロビット等の実装があります.

MCMCpackパッケージ(マルコフ連鎖モンテカルロ)中のオブジェクト一覧?

質的選択モデル:二項プロビット・二項ロジット・多項プロビット・多項ロジット・条件付ロジット・複合ロジット

二項プロビット・二項ロジット分析はglm()関数で推計可能。多項ロジット、コンディショナル・ロジット、複合ロジット・モデルはmlogitパッケージを用いる。多項プロビット・モデルは、MNPパッケージかMCMCpackパッケージで利用可能。

erer: Empirical Research in Economics with R

サバイバル分析

失業者が再就職する過程や企業の生存分析などでつかわれます。パッケージは例えば survival。

ベイズ計量経済学

Rでベイズ統計学 に詳述。

空間計量経済学または空間統計学

経済学と空間統計学を組み合わせるというのは、目新しい分野です。Luc Anselin の"Spatial Econometircs"が嚆矢。当初は経済学では注目されず、1990年代より注目を浴びていった。これには Anselin 自身がパッケージを開発したことも大いに貢献している。

 R の代表的なパッケージには fields 、 spdep(Anselin の開発した GeoDa? の一部が取り込める)および spgwr。

時空間計量経済学モデル

データ

  • Ecdat: Data sets for econometrics

関連リンク

CRAN Task View: Computational Econometrics

Rを使って計量経済分析

  • Econometrics@R-Forge
    • hepi provides a set of functions and classes for representing and estimating hedonic functions as well as hedonic elementary price indices.

参考文献


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2015-03-01 (日) 01:15:59 (1354d)