Rでエコノメトリクス
一行だけ修正したような場合,「タイムスタンプを変更しない」をチェックのこと
Rで計量経済分析を行いたい人向けの情報です。 まずはEconometrics in R (pdf)を.
Rを使って計量経済分析も参考にどうぞ。
詳しくは CRAN Task View を参照していただきたいが、簡単には、
install.packages("ctv")
library(ctv)
install.views("Econometrics")
install.views("Finance")
で、必要なものはほぼすべて入ります。 個別のパッケージについては、
を参照されたい。
詳しくは Rの基本パッケージ中の回帰、分散分析関数一覧 を参照のこと。
関数 lm() をつかいます。
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
(続き: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)
(続き: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 Test | Bptest() | lmtest |
| White Test | white.test() | tseries |
| 検定名 | 関数 | パッケージ |
| Q Test(Box-Pierce, Ljung-Box Test) | Box.test() | (デフォルト) |
| Breusch-Godfrey Test | Bgtest() | lmtest |
| Durbin-Watson Test | durbin.watson() | car |
| dwtest() | lmtest |
| 検定名 | 関数 | パッケージ |
| Augmented Dickey-Fuller Test | ur.df() | urca |
| adf.test() | tseries | |
| Phillips-Perron Test | PP.test() | tseries |
(上記の続き)
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(result_c) [1] 145.6767 > AIC(result_e) [1] 95.31413
この場合は、パラメータが多いほうが予測力が大きいことを示唆しています。
パッケージ systemfit を参照。
systemfit(同時方程式推定パッケージ)パッケージ中のオブジェクト一覧
AR、ARMA、ARIMAは、関数arima()を使用します。
GARCHは、パッケージ tseries に関数garch()があります。
tseries(時系列分析とコンピューテーショナル・ファイナンス)パッケージ中のオブジェクト一覧
多変量の時系列解析は、パッケージ dse (dse1/dse2) を使用。 VAR モデルの推定などが可能です。
パッケージ 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"))
関数 polr().パッケージは,MASS.
関数 multinom().パッケージは,nnet.
MCMCpack にプロビット・ロジット・順序プロビット・多項プロビット等の実装があります.
MCMCpackパッケージ(マルコフ連鎖モンテカルロ)中のオブジェクト一覧
二項プロビット・二項ロジット分析はglm()関数で推計可能。多項ロジット、コンディショナル・ロジット、複合ロジット・モデルはmlogitパッケージを用いる。多項プロビット・モデルは、MNPパッケージかMCMCpackパッケージで利用可能。
失業者が再就職する過程や企業の生存分析などでつかわれます。パッケージは例えば survival。
Rでベイズ統計学 に詳述。
経済学と空間統計学を組み合わせるというのは、目新しい分野です。Luc Anselin の"Spatial Econometircs"が嚆矢。当初は経済学では注目されず、1990年代より注目を浴びていった。これには Anselin 自身がパッケージを開発したことも大いに貢献している。
R の代表的なパッケージには fields 、 spdep(Anselin の開発した GeoDa の一部が取り込める)および spgwr。
CRAN Task View: Computational Econometrics