津市に下宿したときの電気・ガス料金②
こんにちは、Hirokiです。
前回の記事で自分の電気・ガス使用量を赤裸々に公表したのですが、
皆さん気になりましたよね?前回の記事。
本当に2022年は電気料金が上がってるのか?←は?
いやまあ見るからに上がってるでしょ…とか言うと、有意差警察さんに怒られちゃうので、実際に色々調べてみましょう。
ここでの反論としては、2022年だけ電気使用量が多かったのでは?などが考えられると思います。なので今回はそこについて数的に議論していきましょう。
電気使用量に対する電気料金の関係
電気料金は電気使用量に対して正の相関があります(それはそう)。
そのため、まずは電気料金と電気使用量の二つの要素に関して、さらっと線形回帰して比較してみましょう。
ご覧ください。
結果からも分かる通り、2018年~2021年と2022年は全く95%信頼区間が被っていません。なお、2021年のデータのうち、2022年の信頼区間に被っている1データに関しては2021年12月のデータです。これは2022年の電気料金が有意に高いことを示しており、中部電力が2023年12月から、電気料金を値上げしたことと一致します(中部電力, 2022)。なお、これは意味のない議論です。
電気使用量を決める要因の検討
さて、上記の結果から、2022年が電気料金が高いという結果が得られました。しかしこれは、電気料金の値上げが要因であります。
しかし、電気使用量の範囲に着目すると、2021年~2022年は、2018年~2020年と比較して変域が広いように見て取れます。
そこで、ここからは電気使用量を決める要因に関して解析していきます。
なお、家庭の電気使用量の中で季節間での変動が最も高いのは冷暖房(環境省, 2013)であることから、各月の津市の平均気温のデータ(気象庁, 2022)を加味して検討します。
一般化加法モデルを作成
電気使用量を予測する上で、一般化加法モデルを作成しました。
電気使用量を応答変数とし、年度、使用月、各月の津市の平均気温を説明変数に使用しました。
各月の平均気温は応答変数との非線形な関係を考慮し、平滑化しました。
なお、全ての解析には統計解析ソフトR ver.4.0.5を用いました。
一般化加法モデルの計算は、mgcvパッケージのgam関数を用いています。
以下に結果を掲載します。
#elec.usageは電気使用量
#ave.tmpは各月の津市の平均気温のデータ
#yearは年度
#monthは使用月
> denki <- gam(elec.usage~s(ave.tmp)+factor(year)+factor(month),data=data,family="gaussian")
> summary(denki)
Family: gaussian
Link function: identity
Formula:
elec.usage ~ s(ave.tmp) + factor(year) + factor(month)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 150.392 57.409 2.620 0.01244 *
factor(year)2019 -1.194 13.629 -0.088 0.93062
factor(year)2020 17.198 13.611 1.264 0.21381
factor(year)2021 46.004 13.633 3.375 0.00167 **
factor(year)2022 25.242 13.698 1.843 0.07290 .
factor(month)2 -3.723 21.761 -0.171 0.86504
factor(month)3 -62.755 33.823 -1.855 0.07103 .
factor(month)4 -87.429 51.609 -1.694 0.09815 .
factor(month)5 -80.877 72.163 -1.121 0.26918
factor(month)6 -83.444 87.430 -0.954 0.34570
factor(month)7 -49.673 100.705 -0.493 0.62457
factor(month)8 3.665 107.710 0.034 0.97303
factor(month)9 -48.448 93.456 -0.518 0.60707
factor(month)10 -75.842 70.596 -1.074 0.28922
factor(month)11 -63.233 49.437 -1.279 0.20836
factor(month)12 -42.410 24.490 -1.732 0.09115 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(ave.tmp) 1.618 2.048 0.585 0.57
R-sq.(adj) = 0.716 Deviance explained = 80%
GCV = 1312 Scale est. = 906.44 n = 57
> plot(denki)
factor(month1)は切片項(Intercept)になっています。
ざっと目を通すと、2021年~2022年、2月を除く冬季(12月∼4月)のp値が低くなっており、推定値は統計的に有意であり、目的変数(電気使用量)に影響を与えていると言えます。
しかし、このフルモデルではオーバーフィッティングになってしまう可能性があるため、AIC を用いてモデル選択を行います。
AIC(赤池情報量規準)を用いたモデル選択
AICを用いたモデル選択は、MuMInパッケージを用いています。
なんやかんや計算していきましょう。
> library(MuMIn)
> options(na.action="na.fail")
> mlist<-dredge(denki,rank="AIC")
Fixed term is "(Intercept)"
> res1<-get.models(mlist,subset=1)[[1]]
> mlist
Global model call: gam(formula = elec.usage ~ s(ave.tmp) + factor(year) + factor(month),
family = "gaussian", data = data)
---
Model selection table
(Int) fct(mnt) fct(yer) s(ave.tmp) df logLik AIC delta weight
7 97.82 + + 9 -270.201 558.8 0.00 0.944
4 189.40 + + 17 -265.881 565.8 6.97 0.029
8 150.40 + + + 18 -264.413 566.1 7.27 0.025
5 117.80 + 4 -280.590 571.2 12.38 0.002
2 211.70 + 13 -276.585 579.2 20.38 0.000
6 171.70 + + 14 -276.163 580.6 21.78 0.000
3 83.44 + 6 -305.776 623.6 64.76 0.000
1 117.80 2 -310.292 624.6 65.79 0.000
Models ranked by AIC(x)
この結果より、電気使用量を説明するモデルとして、年度と各月の津市の平均気温を説明変数とするモデルが選択されました。
つまり、電気使用量は、年度と各月の津市の平均気温によって決まると判明しました。
では、ここで選択されたモデルをプロットしてみましょう。
選択されたモデルのプロット
> denki.model <- gam(elec.usage~s(ave.tmp)+factor(year),data=data,family="gaussian")
> summary(denki.model)
Family: gaussian
Link function: identity
Formula:
elec.usage ~ s(ave.tmp) + factor(year)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 97.8158 10.1691 9.619 7.49e-13 ***
factor(year)2019 0.7193 13.4293 0.054 0.957501
factor(year)2020 20.3305 13.4110 1.516 0.135981
factor(year)2021 49.9089 13.4042 3.723 0.000509 ***
factor(year)2022 23.9993 13.4756 1.781 0.081145 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(ave.tmp) 3.194 3.958 29.11 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.719 Deviance explained = 75.5%
GCV = 1046.6 Scale est. = 896.12 n = 57
> plot(denki.model)
電気料金を決める要因
さて、長々と検討を重ねてきましたが、そろそろ結論が出せそうですね!!
あとちょっと頑張りましょう。
一般化加法モデルを作成
最後にバーッと、電気料金を応答変数として同様の解析をしてみましょう。
説明変数には、電気使用量、年度、使用月、各月の津市の平均気温を使用します。
各月の平均気温は応答変数との非線形な関係を考慮し、平滑化しました。
> denkidai <- gam(elec.bill~elec.usage+s(ave.tmp)+factor(year)+factor(month),data=data,family="gaussian")
> summary(denkidai)
Family: gaussian
Link function: identity
Formula:
elec.bill ~ elec.usage + s(ave.tmp) + factor(year) + factor(month)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 420.847 449.447 0.936 0.3548
elec.usage 21.601 1.168 18.491 < 2e-16 ***
factor(year)2019 119.579 101.887 1.174 0.2477
factor(year)2020 17.658 103.401 0.171 0.8653
factor(year)2021 44.773 114.764 0.390 0.6986
factor(year)2022 1063.124 106.669 9.967 2.81e-12 ***
factor(month)2 78.414 161.675 0.485 0.6304
factor(month)3 -13.730 237.468 -0.058 0.9542
factor(month)4 109.551 355.401 0.308 0.7595
factor(month)5 284.188 500.573 0.568 0.5735
factor(month)6 384.081 624.456 0.615 0.5421
factor(month)7 562.873 736.222 0.765 0.4491
factor(month)8 689.520 793.872 0.869 0.3904
factor(month)9 561.502 671.018 0.837 0.4078
factor(month)10 309.180 487.601 0.634 0.5297
factor(month)11 216.563 329.791 0.657 0.5153
factor(month)12 358.870 179.687 1.997 0.0528 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(ave.tmp) 1 1 0.56 0.459
R-sq.(adj) = 0.974 Deviance explained = 98.2%
GCV = 74591 Scale est. = 51036 n = 57
> plot(denkidai)
フルモデルだと、電気料金には2022年、12月、電気使用量が影響していると言えます。
AIC(赤池情報量規準)を用いたモデル選択
> mlist.denkidai<-dredge(denkidai,rank="AIC")
Fixed term is "(Intercept)"
> res.denkidai<-get.models(mlist.denkidai,subset=1)[[1]]
> mlist.denkidai
Global model call: gam(formula = elec.bill ~ s(elec.usage) + s(ave.tmp) + factor(year) +
factor(month), family = "gaussian", data = data)
---
Model selection table
(Int) fct(mnt) fct(yer) s(ave.tmp) s(elc.usg) df logLik AIC delta weight
11 3332 + + 9 -383.232 784.6 0.00 0.646
15 3331 + + + 10 -382.040 786.0 1.30 0.337
16 2820 + + + + 21 -374.854 792.9 8.22 0.011
12 3296 + + + 19 -376.875 793.6 8.96 0.007
9 3537 + 3 -430.519 867.2 82.51 0.000
13 3537 + + 4 -430.537 869.2 84.50 0.000
14 2284 + + + 18 -423.082 883.1 98.45 0.000
10 3409 + + 14 -429.628 887.3 102.61 0.000
7 2866 + + 9 -448.448 915.1 130.41 0.000
8 3495 + + + 18 -442.040 921.6 136.97 0.000
4 4797 + + 17 -444.277 922.6 137.90 0.000
5 3537 + 5 -465.909 942.0 157.33 0.000
6 3442 + + 15 -462.587 955.3 170.62 0.000
2 5598 + 13 -465.551 957.1 172.45 0.000
3 2537 + 6 -484.346 980.7 196.04 0.000
1 3537 2 -492.849 989.7 205.05 0.000
Models ranked by AIC(x)
この結果より、電気料金を説明するモデルとして、年度と電気使用量を説明変数とするモデルが選択されました。
選択されたモデルのプロット
> denkidai.model <- gam(elec.bill~s(elec.usage)+factor(year),data=data,family="gaussian")
> summary(denkidai.model)
Family: gaussian
Link function: identity
Formula:
elec.bill ~ s(elec.usage) + factor(year)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3331.78 76.85 43.353 < 2e-16 ***
factor(year)2019 69.40 98.80 0.702 0.486
factor(year)2020 -74.71 103.73 -0.720 0.475
factor(year)2021 -14.63 103.08 -0.142 0.888
factor(year)2022 995.63 101.77 9.783 4.24e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(elec.usage) 3.093 3.874 425.4 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.976 Deviance explained = 97.9%
GCV = 55001 Scale est. = 47192 n = 57
> plot(denkidai.model)
考察
統計学的手法を用いて検討したところ、電気料金を決める要因は、年度と、電気使用量で決まると結論付けられました。
まとめ
意外な結果でしたね!(自明とか言わない)
皆さんの直感は合ってましたか?
当たり前のことを当たり前だというのは簡単ですが、統計的に証明するのはすごく難しいです。
少しでも統計おもしれ~って思ってもらえたらうれしいです。
この記事が気に入ったらサポートをしてみませんか?