R言語で重回帰分析を行うには?(summaryとstargazerについて)

 Rで重回帰分析して、出力します。

 なお、この記事の内容はすぐに再現できます。なぜなら、たった2行のコードで使えるデータを用いるからです。ご自身でデータを用意する必要や、どこかからcsvデータ・エクセルデータをダウンロードしてくる必要はありません。具体的には、パッケージwooldridgeを使います。

要約

 Rのlm関数で重回帰分析して、summaryでいろいろ試し、stargazerで綺麗に出力します。

データ

 分析用のデータは、wooldridgeのwage2を使います。

# パッケージのインストール(初回のみ)
install.packages("wooldridge")
 
# パッケージの呼び出し
library(wooldridge)
 
# 使うデータの確認
wage2

重回帰分析とlm関数

 次の重回帰分析を行います。

$$Y=\beta_0+\beta_1 X_1 +\beta_2 X_2 + u$$

$$ Y=賃金wage、X_1=教育年数educ、X_2=IQ$$

# 目的変数wage、説明変数educ、IQで重回帰分析。使うデータはwage2
lm(wage ~ educ + IQ, data=wage2)

重回帰分析とsummary

(1)回帰分析の詳細を知る

# 重回帰分析にMLR1と名前をつけてサマリーする
MLR1 <- lm(wage ~ educ + IQ, data=wage2)
summary(MLR1)

(2)回帰係数の95%信頼区間

# 回帰係数の95%信頼区間を計算
confint(MLR1,level=0.95)

(3)回帰係数だけ抜き出す

# coef(名前)で抜き出せる
coef(MLR1)
MLR1$coef #でも可能
 
# coef(名前)["説明変数名"]で抜き出せる
coef(MLR1)["educ"]

(4)推定量、標準誤差、t値、P値を取り出す

# summary(名前)$coefficientsで抜き出せます
summary(MLR1)$coef
 
# educのP値を抜き出します
summary(MLR1)$coef["educ","Pr(>|t|)"]

(5)予測値と残差

 予測値と残差は次のコードで出力できます。 

#予測値
predict(MLR1)
 
#残差
residuals(MLR1)

重回帰分析とstargazer

(1)パッケージ

 重回帰分析の推定結果を綺麗に出力するstargazerのパッケージを読み込みます。

# パッケージのインストール(初回のみ)
install.packages("stargazer")
 
# パッケージの呼び出し
library(stargazer)

(2)最も基本的な出力方法

# 回帰分析MLR1の結果を、text形式で出力
stargazer(MLR1, type="text")

(3)カスタマイズ

stargazer(MLR1,  #回帰分析の名前。"MLR1,MLR2,MLR3"と並べると、複数の結果を比較で得切る。
 type = "latex", #出力形式。text、latex、htmlが選べる。R Markdownで出力場合はlatexし、チャンクの中にresults='asis'をいれてください。
 title = "", #表のタイトル
 out = NULL, #htmlで出力する場合は"name.html"のように名前を入れる
 covariate.labels = NULL, #説明変数の名前を変える c("Years of education","IQ","Intercept")のように書く
 dep.var.caption = NULL, #Dependent variableの部分を変えられる
 dep.var.labels = NULL,  #Dependent variableの下のwageを変えられる
 ci = FALSE, #TRUEにすると標準誤差ではなく信頼区間を出力する
 ci.level = 0.95, #95%信頼区間
 intercept.bottom = TRUE, #TRUEにすると定数項が一番下に来ます
 intercept.top = FALSE, #TRUEにすると定数項が一番上に来ます
 notes = NULL, #表の下のnoteに文章を付け加えられます
 omit.stat = NULL #統計量を省けます。n=サンプル・サイズ、rsq=決定係数、adj.rsq=自由度調整済み決定係数、ser =残差の標準誤差、f=f統計量
)

 例↓

stargazer(MLR1, 
 type = "html", 
 title = "TITLE", 
 out = "mlr.html", 
 covariate.labels = c("Years of education","IQ","Intercept"), 
 dep.var.caption = "Outcome variable",
 dep.var.labels = "wage(dollars)", 
 omit.stat = c("adj.rsq","ser","f") )

(4)日本語化する

 上のカスタマイズで、日本語を打つとバグる場合が多いです。日本語入力をしたい場合のおすすめは、(1)日本語入力ができるように調整されたR Markdown上に出力するか、(2)英語のままlatexコードで出力しlatex編集ソフト上で日本語化することです。(2)で編集した例が下です。

\begin{table}[!htbp] \centering 
  \caption{推定結果} 
  \label{} 
\begin{tabular}{@{\extracolsep{5pt}}lc} 
\\[-1.8ex]\hline 
\hline \\[-1.8ex] 
 & \multicolumn{1}{c}{目的変数} \\ 
\cline{2-2} 
\\[-1.8ex] & 賃金 \\ 
\hline \\[-1.8ex] 
教育年数 & 42.058$^{***}$ \\ 
  & (6.550) \\ 
  & \\ 
知能指数 & 5.138$^{***}$ \\ 
  & (0.956) \\ 
  & \\ 
定数項 & $-$128.890 \\ 
  & (92.182) \\ 
  & \\ 
\hline \\[-1.8ex] 
サンプル・サイズ & 935 \\ 
決定係数 & 0.134 \\ 
\hline 
\hline \\[-1.8ex] 
\textit{メモ:}  & \multicolumn{1}{r}{$^{*}$p$<$0.1; $^{**}$p$<$0.05; $^{***}$p$<$0.01} \\ 
\end{tabular} 
\end{table}