« 「スラムドッグ$ミリオネア」を見てきた | トップページ | 巷で話題の「海上自衛隊レシピ」 »

2009.06.10

Rでパネルデータ分析をやってみる

1.はじめに

最近は統計処理のためにRを使っている。で、このたびRでパネルデータ分析にチャレンジしてみることにした。パネルデータというのは複数の主体の時系列データをまとめたものである。クロスセクション×時系列のデータ。例えば、1990~2007年の都道府県別一人当たり県民所得データはパネルデータである。この場合は、都道府県別というのがクロスセクションであり、1990~2007年というのが時系列ということになる。

Rでパネルデータ分析を行うためには、パッケージplmが必要である。でもplmはまた別のパッケージを必要としているので、以下のパッケージを"The Comprehensive R Archive Network"からダウンロードして解凍・インストールする必要がある:

  • plm
  • kinship
  • nlme
  • Formula
  • VR
  • sandwich
  • zoo

埼玉大学の並河永先生のウェブページ「パネルデータ分析」(旧「土壇場の経済学」?)では「plmはR-2.8.0以降のバージョンでないと動作しません」と書かれているが、R-2.4.1でも一応動作した。しかしながら、読者諸氏は念のためR-2.9.0を使った方が良いと思う。Rの最新版はここで手に入る。


2.電力消費量の所得弾力性/価格弾力性を検討してみる

さて、Rによるパネルデータ分析の準備ができたので、実際に作業してみる。今回準備したのは、勤労者世帯・年間収入五分位階級別・全国平均の電力消費量(MJ)、都市ガス消費量(MJ)、プロパンガス消費量(MJ)、灯油消費量(MJ)、実質可処分所得、実質電力単価(1MJあたり。全国平均値。以下同様)、実質都市ガス単価、実質プロパンガス単価、実質灯油単価のデータ、1987~2007年分である。弾力性を求めるため、いずれの値も自然対数化している。データはこれ:"ene-panel-87-07.txt"

記号は


  • class:五分位階級。1が最も低所得の階級で、5が最も高所得の階級
  • yr:年次
  • LEC:電力消費量(MJ)の自然対数
  • LGC1:都市ガス消費量(MJ)の自然対数
  • LGC2:プロパンガス消費量(MJ)の自然対数
  • LKC:灯油消費量(MJ)の自然対数
  • LY:実質可処分所得の自然対数
  • LEP:1MJあたり実質電力単価の自然対数
  • LGP1:1MJあたり実質都市ガス単価の自然対数
  • LGP2:1MJあたり実質プロパンガス単価の自然対数
  • LKP:1MJあたり実質灯油単価の自然対数

Rを立ち上げたら、まず、plmのパッケージを読み込まないといけないので、次のようにコマンドを入力する:

library(plm)

つぎにデータの読み込みである(当然のことながら、読み込む前に作業をするディレクトリを、"ene-panel-87-07.txt"が保存されているディレクトリに変更しなくてはいけない)。

ene<-read.table("ene-panel-87-07.txt", header=T)
ene<-plm.data(ene, index=c("class","yr"))

電力消費量が所得とエネルギー単価に依存するというモデルを立てて分析を実施してみる。モデルを次のように入力する。

form <- LEC~ LY+LEP+LGP1+LGP2+LKP

なぜ、電力消費量がガスや灯油の単価にも依存するモデルを構成したのかというと、例えば、灯油の値段が電力の値段に比べて相対的に高くなれば、灯油の使用が減り、電力の消費量が増すと考えられるからである。

さて、いよいよ分析にとりかかるわけだが、パネルデータ分析では三つのモデルが提案されている:

その1: pooling推計モデル
 y(i, t) = a + b × x(i, t) + ε(i, t)

yが従属変数、xが独立変数、εが誤差項である。小生の分析ではyが(自然対数化された)電力消費量、xが(自然対数化された)実質可処分所得や実質エネルギー単価にあたる。添え字のiはindividualすなわち主体(個体)の識別番号、tはtimeすなわち時間を表すインデックスである。小生の分析ではindividualは所得五分位階級、timeは年次にあたる。

pooling推計ではindividualやtimeが特別な影響を及ぼさない、つまり、所得階級も年次もとくに電力消費量に影響を及ぼさないと仮定されている。

その2: within推計(固定効果) モデル
 y(i, t) = a(i) + b × x(i, t) + ε(i, t)

individualごとに切片項(a(i))が異なるというモデルである。つまり、within推計(固定効果) モデルでは所得階級が電力消費量に影響を与えるわけである。

その3: random推計(変量効果)モデル
 y(i, t) = a + b × x(i, t) + ν(i) + ε(i, t)

これはindividualごとに誤差項の分散が異なるというモデルであり、ν(i)はランダム効果と呼ばれる。

このように三つのモデルがあるのだが、どれが適切なのかということは検定を行わないといけない。まず、パネルデータをそれぞれのモデルに当てはめてみる。上から順にpooling推計、within推計、random推計モデルへの当てはめを行っている:

model.pl <- plm(form, data=ene, model="pooling")

model.wi <- plm(form, data=ene, model="within")

model.re <- plm(form, data=ene, model="random")

つぎに検定を行う。poolingとwithinのどちらが適切か、という検定はF検定によって行う。plmパッケージではpFtestまたはpooltestという関数を使う。ここではpooltestを使う:

pooltest(model.pl, model.wi)

とやると、
F statistic

data: form
F = 0.8992, df1 = 4, df2 = 95, p-value = 0.4678
alternative hypothesis: unstability


という結果が出てくる。帰無仮説H0「individualやtimeが特別な影響を及ぼさない within推計モデルよりもpooling推計モデルの方が適切」ということが棄却されない(p値が小さくない)ので、pooling推計で良いということになる。

なお、pFtestを使うときには、

pFtest(model.wi, model.pl)

と、中に入れるモデルの順番が逆になるので注意。

つぎにpoolingとrandomのどちらが適切か、という問題に関してはBreusch-Pagan検定を行う。この検定ではplmtestという関数を使用する:

plmtest(model.re, "individual", "bp")

結果は
Lagrange Multiplier Test - (Breusch-Pagan)

data: form
chisq = 0.2424, df = 1, p-value = 0.6225
alternative hypothesis: significant effects


となる。帰無仮説H0「誤差項の分散はindividualによらない random推計モデルよりもpooling推計モデルの方が適切」が棄却されないので、pooling推計モデルで良いということになる。

ここまでですでにpooling推計モデルで良いという話になるが、一応、withinとrandomだったらどちらが適切か、という検定もやってみよう。この検定をHausman検定という。plmパッケージではphtestという関数を使う。

phtest(model.wi, model.re)

とやると、
Hausman Test

data: form
chisq = 0.331, df = 5, p-value = 0.997
alternative hypothesis: one model is inconsistent


という結果が得られる。帰無仮説H0「ランダム効果が誤差項と独立である within推計モデルよりもrandom推計モデルの方が適切」ということが棄却されないので、random推計が支持される。

結果として、pooling推計モデルが支持されたので、その結果を見てみる:

summary(model.pl)

とやると、
Oneway (individual) effect Pooling Model

Call:
plm(formula = form, data = ene, model = "pooling")

Balanced Panel: n=5, T=21, N=105

Residuals :
Min. 1st Qu. Median 3rd Qu. Max.
-0.09830 -0.03040 0.00239 0.02920 0.08790

Coefficients :
Estimate Std. Error t-value Pr(>|t|)
(Intercept) 2.200985 0.654001 3.3654 0.0007643 ***
LY 0.633764 0.014046 45.1218 < 2.2e-16 ***
LEP -2.106578 0.189301 -11.1282 < 2.2e-16 ***
LGP1 0.155435 0.137564 1.1299 0.2585142
LGP2 0.566161 0.241174 2.3475 0.0188990 *
LKP -0.171418 0.046161 -3.7135 0.0002044 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Total Sum of Squares: 6.8076
Residual Sum of Squares: 0.15123
F-statistic: 871.52 on 5 and 99 DF, p-value: < 2.22e-16


という結果が出てくる。

このモデルでは都市ガス価格は電力消費量に影響を与えないが、残りの独立変数は全て影響を与えるという結果が得られている。また、所得、プロパンガス、灯油価格が上昇すると電力消費量が増加、電力価格が上昇すると電力消費量が減少するという、まあ常識的な答えが出てきている。

本格的にパネルデータ分析を実施するにはまだいろいろ検討するべきところがあるのだが、記事が長くなるのでここらへんで終わりにする。

非常に参考になったのはこのブログ:
ゲリラ的 uncorrelated のウェブページ
あと、この資料もわかり易い(Stata向けだが):
Stata によるパネルデータ分析」(pdf)
読者諸氏も参照されたい。


パネル・データの分析について本格的に踏み込みたいなら:

ミクロ計量経済学の方法―パネル・データ分析ミクロ計量経済学の方法―パネル・データ分析
チェン シャオ 国友 直人

東洋経済新報社 2007-12
売り上げランキング : 266576

Amazonで詳しく見る
by G-Tools

|

« 「スラムドッグ$ミリオネア」を見てきた | トップページ | 巷で話題の「海上自衛隊レシピ」 »

パソコン・インターネット」カテゴリの記事

アカデミック」カテゴリの記事

R」カテゴリの記事

コメント

相変わらず、分析やTV出演でご活躍の様ですね(・∀・)イイ
うちでは、山口のTVを視る事が出来ないので・・・残念です(*´σー`)
私は、来る日も来る日も「ビジネスプラン」です(。>0<。)
時々、マーケもしていますが・・・SWOT、5F、4P三昧です。
たまには、理系サイドの経営のお仕事したいですぅ~と、ニートなタラちゃんっぽく書いてみます。
今日は、子供の少林寺拳法の見学に行って参りました。
そのせいで、こんな時間にまだ雑事をやっております。
秋に、自分へのご褒美(何の??)で車を(3台中の1台のみ)買い換えますので・・・常磐公園に遊びに行く時にでも・・・ご尊顔を拝見させていただきたいと考えております。
では、おやすみなさいませ。
P.S.
最近、すごいピッチで70・80年代CD買いあさっています・・・聴いていないCDが100枚突破しておりますアワ((゚゚дд゚゚ ))ワワ!!


投稿: 娘が堀北真希ならなぁ | 2009.06.13 01:00

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Rでパネルデータ分析をやってみる:

« 「スラムドッグ$ミリオネア」を見てきた | トップページ | 巷で話題の「海上自衛隊レシピ」 »