ポアソン回帰モデルの回帰曲線をRで描く

 前回の記事では熱中症搬送人員数に対する日最高気温と平均水蒸気圧の影響をポアソン回帰モデルまたは負の二項分布モデルを用いて回帰係数を求めた.今回はポアソン回帰モデルの回帰曲線をRで描く.

データを準備する

 下記コードのようにHeatStroke.xlsxをインポートする.

> library(readxl)
> HeatStroke <- read_excel("C:/Users/****/HeatStroke.xlsx", 
+     col_types = c("date", "numeric", "text", 
+         "numeric", "numeric", "numeric"))

 x, y にそれぞれ日最高気温(Temp), 平均水蒸気圧(Vapor)を格納する.

> y = HeatStroke$HeatStroke
> x = HeatStroke$Temp

 zにglm()関数を用いてポアソン分布を指定する.

> z = glm(y ~ x, family = poisson(link = "log"))

 zを展開して回帰係数を求める.

> z
Call:  glm(formula = y ~ x, family = poisson(link = "log"))
Coefficients:
(Intercept)            x  
     -7.475        0.306  
Degrees of Freedom: 82784 Total (i.e. Null);  82783 Residual
Null Deviance:	    1464000 
Residual Deviance: 698400 	AIC: 915500

データフレームにベクトルを格納する

 データフレームpにx軸のベクトルを格納する.

> p = data.frame(Temp = seq(0, 40, length.out = 100))

 式 y = exp(-7.475 + 0.306*x)の形になるようにy軸のベクトルをデータフレームに格納する.

> p$Num = exp(-7.475 + 0.306 * p$Temp)

プロットする

 下記コードでプロットする.

> plot(x, y) + lines(p$Temp, p$Num, type = "l", col = "red")

結果

 結果は以下の通りである.

散布図にポアソン回帰モデル回帰曲線を追加
散布図にポアソン回帰モデル回帰曲線を追加

ggplot2で描く

 下記コード参照.凡例の記述に問題がある.

> library(ggplot2)
> w = ggplot(data = HeatStroke, aes(x = x, y = y)) + geom_point(alpha = 0.1)
> w + geom_line(data = p, aes(x = p$Temp, y = p$Num, col = "red"))
ggplot2による回帰曲線の描画
ggplot2による回帰曲線の描画

まとめ

 散布図にポアソン回帰モデルの回帰曲線を追加した.

“ポアソン回帰モデルの回帰曲線をRで描く” への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください