www.crosshyou.info

政府統計の総合窓口のデータや、OECDやUCIやのデータを使って、Rの練習をしています。ときどき、読書記録も載せています。

国民経済計算四半期GDP速報データの分析2 - R言語で株価のデータをくっつけて、GDPと株価のチャートを作る。

 

www.crosshyou.info

 の続きです。

株価のデータを前回作成したデータフレームにくっつけようと思います。

1994年から2018年末までの株価のデータを探したら、日本取引所グループのウェブサイトに株価の長期時系列のファイルがありました。

f:id:cross_hyou:20190413154614j:plain

 

こういうファイルです。年初値、年末値、最低値、最高値があるのでこの4つの平均値をその年の平均値にしてしまいましょう。

f:id:cross_hyou:20190413155810j:plain

こんなふうに加工したCSVファイルをR言語のread.csv関数で読み込ませます。

f:id:cross_hyou:20190413160022j:plain

 

GDPのデータフレームにもこの株価のデータフレームにもTimeという名前の変数があり、これが共通です。このTime変数を基準にして、merge関数で二つのデータフレームを統合します。

f:id:cross_hyou:20190413160438j:plain

できました。

plot関数でGDPとKabukaの相関を見てみましょう。

f:id:cross_hyou:20190413160823j:plain

 

f:id:cross_hyou:20190413160839j:plain

均等に散らばっている感じですが、cor.test関数で相関関係を調べてみましょう。

f:id:cross_hyou:20190413161122j:plain

 

相関係数は0.503958でp-valueが9.033e-08ですから正の相関関係で有意ですね。

lm関数で線形単回帰分析をしてみます。

f:id:cross_hyou:20190413161447j:plain

p-valueは9.033e-08なので有意なモデルです。切片、GDPの係数ともにp値は0.05以下なので有意です。R-squareは0.254です。このモデルでは、株価をGDPで25%ぐらい説明できるということですかね。

回帰直線を散布図に重ねてみます。

f:id:cross_hyou:20190413161920j:plain

f:id:cross_hyou:20190413161952j:plain

残差プロットも描きます

f:id:cross_hyou:20190413162127j:plain

f:id:cross_hyou:20190413162138j:plain

横軸をTimeにして推移を描いてみましょう。

f:id:cross_hyou:20190413162516j:plain

f:id:cross_hyou:20190413162526j:plain

GDPはギザギザですね。Kabukaは4つ同じ値が続くので値動きがなめらかというか実際の株価の値動きよりもおだやかです。

今回は以上です。

株価の四半期のデータをどこかからとってきたいですね。

 次回は

 

www.crosshyou.info

 

です。

 

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

# 株価のCSVファイルの読込み
kabuka <- read.csv("kabuka.csv")
str(kabuka)

# dfとkabukaをTime列で統合
data <- merge(df, kabuka, by = "Time")
head(data)

# GDPとKabukaの散布図
with(data,
plot(GDP, Kabuka)
)

# GDPと株価の相関関係
cor.test(data$GDP, data$Kabuka)

# 株価 = a + b * GDP のモデル
model1 <- lm(Kabuka ~ GDP, data = data)
summary(model1)

# 回帰直線を散布図に重ねる
plot(data$GDP, data$Kabuka, pch = 21, bg = "red")
abline(model1, col = "blue")

# 残差プロット
plot(model1, which = 1)

# 横軸をTimeにしてGDPと株価の推移
par(mfrow = c(2, 1))
plot(data$Time, data$GDP, type = "l", col = "blue")
plot(data$Time, data$Kabuka, type = "l", col = "red")