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