自転車駐輪場の利用利用金収入額と駅の平均乗降客数の分析

教科書p.60[事例5-b]の分析

回帰式を求め,データと共に描画します.

これを描くRのコードは以下です.

# coded by F.Nakai
# 2021.01.20

#データの読み込み
SIU <- read.csv("https://fnakai.web.nitech.ac.jp/data/13_LP/StationIncomeAndUsers.csv")

#Rのlm関数による回帰パラメータの導出
result <- lm(SIU$Income~SIU$UsersNum)
result

##問2 手計算の過程の再現
#yの偏差
yy <- (SIU$Income-mean(SIU$Income))
#xの偏差
xx <- (SIU$UsersNum-mean(SIU$UsersNum))

#xの分散とxとyの共分散を求める
Sxy <- sum(xx*yy)*(1/length(xx))
Sxx <- sum(xx^2)*(1/length(xx))

# b=(xとyの共分散/xの分散)
b <- Sxy/Sxx

# a= (yの平均)-b*(xの平均) 
a <- (mean(SIU$Income))-(b*mean(SIU$UsersNum))

#教科書p.61の図を描く
plot(SIU$UsersNum,SIU$Income,
     xlim = c(0,300),
     ylim = c(0,250),
     main = "自転車駐輪場の利用利用金収入額と駅の平均乗降客数",
     xlab = "駅の平均乗降客数(百人/日)",
     ylab = "自転車駐輪場の利用料金収入額(万円/月)"
)

#回帰直線を重ねる
abline(a = a, b = b)

##発展編:きれいに図を描くggplotパッケージの利用

#パッケージのインストール
install.packages("ggplot2")
install.packages("ggpmisc")

#パッケージの読み込み
library(ggplot2)
library(ggpmisc)

#回帰のモデル式を保存しておく
my.formula <- y ~ x

#図を描く
ggplot(data = SIU, mapping = aes(x = UsersNum, y = Income)) +
  geom_point() +
  labs(title = "自転車駐輪場の利用利用金収入額と駅の平均乗降客数") +
  xlab("駅の平均乗降客数(百人/日)") +
  ylab("自転車駐輪場の利用料金収入額(万円/月)") +
  geom_point() +
  geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula, size = 0.5)+
  stat_poly_eq(formula = my.formula, 
               aes(label = paste(..eq.label..)), 
               parse = TRUE) +
  theme_gray()

#問2 Table3の計算
table3 <-cbind(SIU,yy,xx,yy^2,xx^2,xx*yy)
table3

##問3 決定係数を求める
#yの予測値からの偏差平方和の平均(配布資料の2.2式)
Sxy2 <- (1/length(SIU$Income))*sum((SIU$Income - predict(result))^2)
Sxy2

#yの分散
Syy <- sum(yy^2)*(1/length(yy))
Syy

#決定係数
r2 <- 1-(Sxy2/Syy)

#相関係数
r <- sqrt(r2)

#Rのlm関数によって求めた決定係数との比較:summary関数を用いた表示
summary(result)

#Rのcor関数によって求めた相関係数との比較
cor(SIU$Income,SIU$UsersNum)