• 検索結果がありません。

texreg

ドキュメント内 雑誌名 経済志林 (ページ 31-37)

次に texreg について解説する。stargazer は簡単に出力してくれるが,

細かなカスタマイズしようとすると面倒である。そうしたとき texreg を 使うようにしている。それでも満足できなければ最初のように自分でプロ グラムを作成する。

再び Stock and Watson(2011)のデータを用いて使用例を示そう。回帰

Dependent variable:

score

(1) (2) (3) (4) (5)

stratio −2.280*** −1.101*** −0.998*** −1.308*** −1.014***

(0.480) (0.380) (0.239) (0.307) (0.240)

english −0.650*** −0.122*** −0.488*** −0.130***

(0.039) (0.032) (0.033) (0.034)

lunch −0.547*** −0.529***

(0.022) (0.032)

calworks −0.790*** −0.048

(0.053) (0.061) Constant 698.933*** 686.032*** 700.150*** 697.999*** 700.392***

(9.467) (7.411) (4.686) (6.024) (4.698)

Observations 420 420 420 420 420

R2 0.051 0.426 0.775 0.629 0.775

Adjusted R2 0.049 0.424 0.773 0.626 0.773

Residual Std.Error 18.581 14.464 9.080 11.654 9.084 F Statistic 22.575*** 155.014*** 476.306*** 234.638*** 357.054***

Note: p<0.1;**p<0.05;***p<0.01

表5:stargazer による回帰分析結果

分析をおこなったあと,回帰式を並べるには以下のようにすればよい。

library(texreg)

texreg(list(fm1,fm2,fm3,fm4,fm5),file="tab4.tex",table = FALSE) この結果は表7である。Stock and Watson (2011)の表7.1の係数の推定値 を再現できている。

ただこのままだと,係数の標準誤差が再現できていない。また日本語表 記にしたいなど表の細かい部分を変更したいときがある。この texreg は 自分でカスタマイズできるという利点がある。この場合,library(texreg) 以下を次のようにして,新しい抽出のやり方を定義し直す。

extract.lm <- function(model) {  library(lmtest)

Dependent variable:

score

(1) (2) (3) (4) (5)

stratio −2.280*** −1.101** −0.998*** −1.308*** −1.014***

(0.519) (0.433) (0.270) (0.339) (0.339)

english −0.650*** −0.122*** −0.488*** −0.130***

(0.031) (0.033) (0.030) (0.030)

lunch −0.547*** −0.529

(0.024)

calworks −0.790*** −0.048

(0.068) (0.068) Constant 698.933*** 686.032*** 700.150*** 697.999*** 700.392***

(10.364) (8.728) (5.568) (6.920) (6.920)

Observations 420 420 420 420 420

R2 0.051 0.426 0.775 0.629 0.775

Adjusted R2 0.049 0.424 0.773 0.626 0.773

Residual Std.Error 18.581 14.464 9.080 11.654 9.084 F Statistic 22.575*** 155.014*** 476.306*** 234.638*** 357.054***

Note: p<0.1;**p<0.05;***p<0.01

表6:stargazer による回帰分析結果(ロバスト標準誤差使用)

s <- summary(model) names <- rownames(s$coef) co <- s$coef[,1]

hc <- vcovHC(model,type="HC1") ct <- coeftest(model,vcov = hc) se <- ct[,2]

pval <- ct[,4]

ser <- s$sigma

adj <- s$adj.r.squared n <- nobs(model) gof <- c(ser,adj,n)

gof.names <- c("標準誤差","調整済み決定係数","観測数") gof.decimal <- c(TRUE,TRUE,FALSE)

tr <- createTexreg(

coef.names = names, coef = co,

se = se,

pvalues = pval,

gof.names = gof.names, gof.decimal = gof.decimal, gof = gof

)

return(tr) }

setMethod("extract",signature = className("lm","stats"), definition = extract.lm)

その上で以下のようにすれば,Stock and Watson (2011) の表7.11の結果を 日本語に直して再現できる。

texreg(list(fm1,fm2,fm3,fm4,fm5),

custom.model.names = c("(1)","(2)","(3)","(4)","(5)"), custom.coef.names =c("切片",

        "教員一人あたり学生数",         "英語学習者割合",         "昼食補助者割合",         "所得支援家計"),

custom.note = "係数下のカッコ内の数値はロバスト標準誤差を示す。

また**は P 値が 1\\% 以下,*は 5\\% 以下を示す。", reorder.coef = c(2,3,4,5,1),stars = c(0.05,0.01), table=FALSE ,file="tab5.tex")

この結果は表8である。

Model 1 Model 2 Model 3 Model 4 Model 5

(Intercept) 698.93*** 686.03*** 700.15*** 698.00*** 700.39***

(9.47) (7.41) (4.69) (6.02) (4.70)

stratio −2.28*** −1.10** −1.00*** −1.31*** −1.01***

(0.48) (0.38) (0.24) (0.31) (0.24)

english −0.65*** −0.12*** −0.49*** −0.13***

(0.04) (0.03) (0.03) (0.03)

lunch −0.55*** −0.53***

(0.02) (0.03)

calworks −0.79*** −0.05

(0.05) (0.06)

R2 0.05 0.43 0.77 0.63 0.77

Adj.R2 0.05 0.42 0.77 0.63 0.77

Num.obs. 420 420 420 420 420

RMSE 18.58 14.46 9.08 11.65 9.08

***p < 0.001,**p < 0.01,p < 0.05

表7:texreg による回帰分析結果

8 まとめ

このようにデータ収集して,データ整形して,データ分析して,図表を 作成する作業がすべて R で出来ることを示した。紹介したのパッケージの うち,readr,readxl,haven,tidyr,dplyr,ggplot2 は Hadley Wickham による。他にもここでは紹介していないが,パッケージ作成のための devtools を作成している。彼が R にはたした貢献はとてつもなく大きく,

最近の R の人気に間違いなく貢献している。彼の著書 Wickham(2014) は 今後の R のため重要な書物になるだろう。なおこの本のソースコードは

https://github.com/hadley/adv-r/

に公開されている。コンパイルすれば書籍を入手することができる。日本 語訳も発売されたようである。

ここでは紹介しなかったが,gEcon というパッケージが存在する。これ によって一般均衡モデルを扱うことができる。一般均衡モデルについて GAMS や Matlab を使うことが主流であるが,これらは商用ソフトウェア

(1) (2) (3) (4) (5)

教員一人あたり学生数 −2.28** −1.10 −1.00** −1.31** −1.01**

(0.52) (0.43) (0.27) (0.34) (0.27)

英語学習者割合 −0.65** −0.12** −0.49** −0.13**

(0.03) (0.03) (0.03) (0.04)

昼食補助者割合 −0.55** −0.53**

(0.02) (0.04)

所得支援家計 −0.79 −0.05

(0.07) (0.06)

切片 698.93** 686.03** 700.15** 698.00** 700.39**

(10.36) (8.73) (5.57) (6.92) (5.54)

標準誤差 18.58 14.46 9.08 11.65 9.08

調整済み決定係数 0.05 0.42 0.77 0.63 0.77

観測数 420 420 420 420 420

係数下のカッコ内の数値はロバスト標準誤差を示す。また**はP値が1% 以下,*は5% 以下を示す。

表8:texreg による回帰分析結果(日本語)

である。特に DSGE ではDynare というフリーの Matlab のアドオンがよく 使われている。この Dynare は一階の条件式から動学モデルを解くことが できる。一方 gEcon では最大化もしくは最小化問題からモデルを解くこと ができる。更に一階条件の数式や結果の表をlatex 形式に出力してくれる。

詳しくは以下のサイトに訪れていただきたい。

http://gecon.r-forge.r-project.org/

最後に,学術研究において重要なのはオリジナルデータをどのように分 析したかを再現できることである。安易に EXCEL を用いると手順のミス,

コピペの失敗などがあるため,使わないほうがよい。コピペを使わず,自動 的に論文を作成することを再現可能研究 (reproducible research) と呼ばれ ている*2。この再現可能研究についての重要なパッケージである knitr に ついて次回詳述したい。

*2 プログラムに重点を置くと文芸プログラミング(Literate Programming)と,文章に重点を 置くと動的文書(DynamicDocuments) とも呼ばれている。

ドキュメント内 雑誌名 経済志林 (ページ 31-37)

関連したドキュメント