crosshyou

主にクロス表(分割表)分析をしようかなと思いはじめましたが、あまりクロス表の分析はできず。R言語の練習ブログになっています。

人口の推移と株価の関係の分析1 - R言語でデータの整理(subset関数やmerge関数)

e-Stat(政府統計の総合窓口)のレイアウトが令和になって変更になりました。

f:id:cross_hyou:20190504112145j:plain

今回は右下の「地域」をクリックしてみます。

f:id:cross_hyou:20190504112220j:plain

クリックすると、上図のような画面になります。データ表示をクリックしてみます。

f:id:cross_hyou:20190504112302j:plain

都道府県別の人口を選択して、データを表示します。

f:id:cross_hyou:20190504112343j:plain

このようなデータですね。ダウンロードします。

f:id:cross_hyou:20190504112424j:plain

こんなファイルです。10行目に私が独自の変数名を付けました。

これをread.csvファイルでR言語で読み取りましょう。

f:id:cross_hyou:20190504113230j:plain

株価と人口の関係を調べたいので、株価のファイル、も読込みます。

株価のファイルは下図のようなものです。

f:id:cross_hyou:20190504113522j:plain

これもread.csv関数で読込みます。6行目から読み込むので、skip = 5 としてやります。

f:id:cross_hyou:20190504113840j:plain

株価のデータでは、Timeという変数が西暦を表していて、人口のデータでは、Year1が西暦を表していますが、西暦を百万倍して10万を足した数になっています。これを西暦に直します。

f:id:cross_hyou:20190504114510j:plain

上図のように、うまく変換できました。

次は、merge関数を使って、wdとkabukaを合体させます。

f:id:cross_hyou:20190504115216j:plain

kabukaにYear1という名前で西暦を表す変数を作ってやり、Year1をキーにしてwdとkabukaをmerge関数で統合しました。head関数で始めの数行を表示していますが、1975年がwdは複数行あり、kabukaでは1行だけですが、ちゃんとkabukaのデータがどの1975年にも入っています。

summary関数で基本統計量を表示します。

f:id:cross_hyou:20190504115621j:plain

f:id:cross_hyou:20190504115652j:plain

ここで、分析に必要な変数だけにしておきましょう。必要な変数は、Year1, Pref2, T, M, F, J, JM, JF, KabukaとKabuka1Yです。subset関数を使います。

f:id:cross_hyou:20190504120335j:plain

これでデータの整理は終わりました。

wd, ワーキングデータは、2064の観測と10の変数があります。このうち、KabukaとKabuka1Yがresponse(被説明変数)で、残りがexplanatory(説明変数)です。

1975年から2017年までのデータで、全国と47都道府県のデータです。
Tが総人口、Mが男の総人口、Fが女の総人口、Jが日本人の総人口、JMが男の日本人人口、JFが女の日本人人口です。なので、TとJの差が外国人ということですね。KabukaはTopixの値、Kabuka1Yは1年後の騰落です。1.1だと10%上昇した、ということですね。

これらの人口のデータで株価を説明できるかどうかをこれから調べていきたいと思います。

今回は以上です。

 次回は

 

www.crosshyou.info

 

です。

今回のR言語のコードです。

# ファイルの読込み オリジナルデータ = od
od <- read.csv("jinkou.csv", skip = 9, na.strings = c("***", "-", "X"))
str(od)
head(od)
summary(od)

# 株価データの読込み
kabuka <- read.csv("KABUKA_YEARLY.csv", skip = 5)
str(kabuka)
head(kabuka)
summary(kabuka)

# オリジナルデータのYear1を4桁の西暦に直す
wd <- od # オリジナルデータ(od)をワーキングデータ(wd)にコピー
wd$Year1 <- (wd$Year1 - 100000) / 1000000 # 4桁の西暦に変換
head(wd$Year1) # 変換できたか確認

# wdとkabukaの統合
kabuka$Year1 <- kabuka$Time # Timeと同じデータでYear1という変数をkabukaに追加
wd <- merge(wd, kabuka, by = "Year1") # Year1をキーにしてwdとkabukaを統合
str(wd)
head(wd)
summary(wd)

# 必要な変数だけにする
wd <- subset(wd, select = c(Year1, Pref2, T, M, F, J, JM, JF, Kabuka, Kabuka1Y))
str(wd)
head(wd)
summary(wd)