概要
計量経済学などにおいて、統計分析は必須です。
もちろん、Excelでも分析は可能ですが、できることは制限があり、やろうとすれば、マクロを組んだりと大変だと思います。
そこで、専門的な統計分析のソフトが必要となるわけですが、フリーの統計ソフトで有名なのが「R」(アール)です。
The Comprehensive R Archive Network
このRを使って、簡単な回帰分析を行った例を掲載します。
回帰分析
推計式
推計式としては、日本で、GDP($ Y$)が上がると、どれだけ消費$ C$が伸びるかを調べます。
$ C = a Y + b + \epsilon$
なお、ここで、$ a$は定数、$ b$は係数、$ \epsilon$は誤差項です。
使用データ
使用データとしては、内閣府の国民経済計算です。
このうち、「国内総生産(支出側)」の「実質(暦年)」で、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モデル、多変量解析など、様々なモデルを推計することができます。