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。

時空間計量経済学モデル

データ

関連リンク

CRAN Task View: Computational Econometrics

Rを使って計量経済分析

参考文献


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17