スポンサーリンク

統計分析フリーソフト「R」を使った簡単な回帰分析の例

スポンサーリンク
 
投稿計量経済学初級
統計分析フリーソフト「R」を使って、計量経済学における簡単な回帰分析を行っています(コマンドやデータもつけておきます)。
スポンサーリンク
スポンサーリンク
スポンサーリンク

概要

 計量経済学などにおいて、統計分析は必須です。
 もちろん、Excelでも分析は可能ですが、できることは制限があり、やろうとすれば、マクロを組んだりと大変だと思います。

 そこで、専門的な統計分析のソフトが必要となるわけですが、フリーの統計ソフトで有名なのが「R」(アール)です。

   The Comprehensive R Archive Network

このRを使って、簡単な回帰分析を行った例を掲載します。

回帰分析

推計式

 推計式としては、日本で、GDP($ Y$)が上がると、どれだけ消費$ C$が伸びるかを調べます。

  $ C = a Y + b + \epsilon$

 なお、ここで、$ a$は定数、$ b$は係数、$ \epsilon$は誤差項です。

使用データ

 使用データとしては、内閣府の国民経済計算です。

   2020年度国民経済計算(2015年基準・2008SNA)

 このうち、「国内総生産(支出側)」の「実質(暦年)」で、1994年~2020年民間最終消費支出と国内総生産(支出側)を用いています。

 なお、Rの利用にあたり、この2つのデータのみのCSVファイルを作っています(このファイルを添付しておきます)

Rの利用

 あとは、下のコマンドを入れてやれば、分析が行われます。
 (なお、これらのコマンドをそのままコピペして、Rでペーストすると、そのまま実行されると思います)

setwd("C:/")
data <- read.csv("data.csv" , header = T , row.names=1)

data

consume <- data[,1]
product <- data[,2]
result <- lm(consume ~ product)

# OLS
summary(result)

# DW比
library(lmtest)
dwtest(result)

 それぞれのコマンドの意味は、次の通りです。

コマンド意味
setwd("C:/")データが置いてあるディレクトリを指定しています。
この場合は、Cドライブの直下にデータを置いてあるので、「"C:/"」としています
data <- read.csv("data.csv" , header = T , row.names=1)「data.csv」というファイルを「read」文で読み込み、dataという変数に入れています。
なお、ここで「header = T」は、1行目は項目として利用しているの、項目として扱うように指示してます。
「row.names=1」も同様に、1列目のデータを行の名前を表す項目とし読み取るようにしています。
dataデータを表示しています(Rでは変数を入力すると、そのデータが表示されます)。
consume <- data[,1](項目を除いた)1列目のデータをconsumeという変数に入れています
product <- data[,2](項目を除いた)2列目のデータをproductという変数に入れています
result <- lm(consume ~ product)「lm」文で回帰分析を行っています。
ここで「consume ~ product」は推計する方程式です。「=」の代わりに「~」を使い、定数や誤差項は自動的に入るので、省略しています。
そして、resultという変数にその推計結果を入れています
summary(result)推計結果を表示しています。
library(lmtest)おまけとして、DW比を出すために、そのパッケージ「lmtest」を読み込んでいます。
dwtest(result)「dwtest()」というコマンドを使って、DW比も計算しています。

結果

> setwd("C:/")
> data <- read.csv("data.csv" , header = T , row.names=1)
> 
> data
         消費      GDP
1994 249412.3 446522.3
1995 255553.5 458270.3
1996 260557.9 472631.9
1997 262002.6 477269.5
1998 260307.9 471206.6
1999 263087.3 469633.1
2000 267138.8 482616.8
2001 272616.9 484480.2
2002 276130.0 484683.5
2003 277881.0 492124.0
2004 281553.4 502882.4
2005 285863.0 511953.9
2006 288516.9 518979.7
2007 290695.7 526681.2
2008 287401.6 520233.1
2009 284771.6 490615.0
2010 291408.1 510720.0
2011 289879.7 510841.6
2012 295760.1 517864.4
2013 303468.0 528248.1
2014 300716.8 529812.8
2015 300064.9 538081.2
2016 298784.6 542137.4
2017 301929.0 551220.0
2018 302635.0 554439.5
2019 300998.0 553106.9
2020 285180.9 528178.9
> 
> consume <- data[,1]
> product <- data[,2]
> result <- lm(consume ~ product)
> 
> # OLS
> summary(result)

Call:
lm(formula = consume ~ product)

Residuals:
    Min      1Q  Median      3Q     Max 
-8729.6 -3581.5  -693.2  3564.9 10193.0 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.209e+04  1.667e+04   1.325    0.197    
product     5.146e-01  3.285e-02  15.668 1.95e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 5057 on 25 degrees of freedom
Multiple R-squared:  0.9076,    Adjusted R-squared:  0.9039 
F-statistic: 245.5 on 1 and 25 DF,  p-value: 1.953e-14

> 
> # DW比
> library(lmtest)
 要求されたパッケージ zoo をロード中です 

 次のパッケージを付け加えます: ‘zoo’ 

 以下のオブジェクトは ‘package:base’ からマスクされています:

    as.Date, as.Date.numeric

> dwtest(result)

        Durbin-Watson test

data:  result
DW = 0.50009, p-value = 2.125e-07
alternative hypothesis: true autocorrelation is greater than 0

最後に

 この程度の回帰分析でしたら、エクセルでもできますが、パッケージを使ったりすると、パネル、VARモデル、多変量解析など、様々なモデルを推計することができます。

スポンサーリンク
タイトルとURLをコピーしました