データのお砂場(62) R言語、longley、重回帰分析における多重共線性?知らんけど

Joseph Halfmoon

R言語付属のデータセットをアルファベット順(大文字優先)で眺めてます。今回のデータセットはlongleyです。お名前の由来はソースがLongley先生のデータであるからみたいです。第二次世界大戦後1960年代までのマクロな経済指標のデータです。ちょっと訳あり? で有名なデータみたいっす。

※「データのお砂場」投稿順Indexはこちら

今回のデータセット

解説ページが以下に。

Longley’s Economic Regression Data

どうも、重回帰分析用のサンプルデータであるようですが、「いわくつき」な例題であるようです。上記解説ページから一行引用させていただきます。

a well-known example for a highly collinear regression

統計素人がとやかく言ったりしませんが、「多重共線性」「マルチコ(multicollinearity)」という危ないやつ?を内包するデータみたいです。

データそのものは経済のマクロ指標のデータみたいですが、どの国とも単位はいくらとも明示されていないです。多分米国のデータだと思います。変数は以下のとおりです。

    1. GNPデフレーター
    2. GNP
    3. 失業者数
    4. 兵役に従事している人数
    5. noninstitutional population
    6. 就業者数

GNPデフレーターというのは、年によって物価等が異なるので名目GNPを補正して比べるための値みたいです。このデータでは1954年を基準(100%)としているみたいです。ただ、最近の日本ではGNPは聞かず、GDPで表されることが多いです。SMBC日興証券様のGDPの場合の「デフレーター」の解説が以下に。

GDPデフレーター

また、GDPとGNPの違いについては、内閣府 経済社会総合研究所の以下の解説を参考にさせていただきました。

GDPとGNI(GNP)の違いについて

上記によると、1993SNA=平成7年基準 から日本国の統計はGNPでなくGDPに切り替わったのね。年寄は、つい最近だった気がしてましたが、結構昔だ。

なお、noninstitutional populationとありますが、米国では

Civilian noninstitutional population

というものが経済指標として使われているみたいです。労働に従事できそうな年齢の人口のうち、入院している、刑務所に入っている、そして軍隊へ入っているなどの人数を差っ引いたものみたいっす。日本の生産年齢人口とも労働力人口とも違うように見えるのです(まあ、日本には「軍隊」ないし。建前。)なお、サンプルデータセットの時点と現在のCivilian noninstitutional populationでは対象年齢が異なるように思われます。知らんけど。

まずは生データ

生データをロードしてみると以下のようにフツーのdata.frameです。longleyRawdata

被説明変数に当たるのがEmployedなので、まずはYearに対するEmployedの推移を折れ線グラフにしてみました。こんな感じ。

library(ggplot2)
library(ggthemes)
g <- ggplot(longley, aes(y=Employed, x=Year))
g + geom_line(linewidth=2) + theme_wsj() +labs(title="longley, Employed - Year")
g + geom_line(linewidth=2) + theme_economist() +labs(title="longley, Employed - Year")

+ theme_wsj()というのは、グラフを「ウォールストリート・ジャーナル」風にしてくれるおまじないみたいです。冒頭のアイキャッチ画像がそれ。

+ theme_economist()は、「エコノミスト誌」風にしてくれるもの。こんな感じ。EmployedPlotEcono

ちょっとカッコよくなってうれしいです。

解説ページの処理例に従う

解説ページには、lmつかって重回帰分析する例が書かれているので、処理例どおりにやってみます。最初の一歩は、説明変数の奴らをmatrixにしてx、被説明変数だけをyと取り出す処理。XYsetup

上記の分離とはかかわりなく、元データのままpairsでグラフ化もしてます。

pairsPlotOpr

結果がこんな感じ。pairsPlot

就業者数と失業者数を足したら多分noninstitutionalな意味の人口にほぼほぼ等しいのでないのとか、軍隊へ行っている人が増えたらnoninstitutionalな意味の人口は減るし、復員すれば増えるしなどと、統計素人が考えてみても、そのまま重回帰分析するには「ツッコミどころ」ありなデータであります。

しかし、処理例ではEmployedを被説明変数として、他を一緒くたに重回帰分析かけてしまってます。わざとダメな例としてやっているのだろうけれど。さすがに、GNPデフレータはGNPの補正に使えよ、そのまま使うな、などとツッコミたくなります(まあ自分でやってみれ、ということ?)

lm()つかって重回帰分析した結果が以下に。longleySummary

そして回帰診断図の描画指令が以下に。longleyLMplotOpr

回帰診断図(diagnostic plots)自体が以下です。

longleyLMplot

第57回で回帰診断図の見方を少し練習したですけれども、今回のはなあ、もしかしてマルチコってやつだし。それがどうしたって。ううむ。

データのお砂場(61) R言語、lh、血中黄体ホルモン濃度の時系列変化とな? へ戻る

データのお砂場(63) R言語、lynx、カナダ・オオヤマネコの捕獲数の推移 へ進む