前回の記事では2019年の都道府県別の熱中症搬送人員数を1枚のグラフで描いた.今回は都道府県別に2008年から2021年までの熱中症搬送人員数の予測と実際をEXCELの組み合わせグラフで描く.
Heat-related mortality: a review and exploration of heterogeneityというレビューでは人口密度が高いほど熱の影響が大きいことが示されている.その理由として高度に設計された環境では蓄熱量が大きく,換気が悪く,自動車やエアコン等の熱源が局在するいわゆる都市のヒートアイランド現象が起きているためであると説明している.
それを受けて,詳細は割愛するが,都道府県総人口をその可住地面積(e-Statより)で割った人口密度を投入してみた.するとその係数は大きさこそ小さいものの,符号は負となり,投入前よりもAICが改善した(488368->478801).人口密度が大きいほど搬送数が減少するという意味である.これはにわかには信じがたい.考えられる理由として,日本においては人口密度の高い都市部ほど空調導入率が高い可能性がある.しかし,空調導入率そのものの指標がないため,検証は困難である.
データ
データは前回同様SQL Serverからクエリで抽出する.抽出結果をヘッダーごとコピーしてEXCELに貼り付け,テーブルに変換する.
USE HeatStrokeDB; GO SELECT YEAR(T.年月日) AS YEAR , MONTH(T.年月日) AS MONTH , T.年月日 AS DATE , H.都道府県コード AS PrefCode , T.都道府県 AS Pref , T.日最高気温 AS TEMP , V.日平均蒸気圧 AS VAPOR , P.総人口 AS POP , P.[65歳以上人口] AS POP65 , P.人口密度 AS DENSITY , H.[搬送人員(計)] AS NUM , CAST(EXP(-21.41 + 0.2760 * T.日最高気温 + 0.07337 * V.日平均蒸気圧 - 0.9215 * (1/(1 + EXP(16 - 2 * MONTH(T.年月日)))) - 0.00004231 * P.人口密度 + LOG(P.[65歳以上人口])) AS int) AS MODEL FROM dbo.T_HeatStroke AS H INNER JOIN dbo.T_MaxTemperature AS T ON H.都道府県コード = T.都道府県コード AND H.日付 = T.年月日 INNER JOIN dbo.T_VaporPressure AS V ON H.都道府県コード = V.都道府県コード AND H.日付 = V.年月日 INNER JOIN dbo.T_PopulationDensity AS P ON H.都道府県コード = P.都道府県コード AND YEAR(H.日付) = P.調査年 ORDER BY PrefCode, DATE
EXCEL VBAでの処理
下記コードを実行する.
Sub makechart() Dim mySh1 As Worksheet Dim mySh2 As Worksheet Dim myLstObj As ListObject Dim h As Long Dim myRng1 As Range Dim i As Long Dim Cht As Chart Dim j As Long Dim myXValue() As Date Dim myValue1() As Integer Dim myValue2() As Integer Dim SeriesM As Series Dim SeriesR As Series Dim myPref As String Set mySh1 = Worksheets("Sheet1") Set myLstObj = mySh1.ListObjects(1) For h = 1 To 47 Set mySh2 = Worksheets.Add With mySh2 For i = 2008 To 2021 Set Cht = .Shapes.AddChart2(XlChartType:=xlColumnClustered, _ Left:=200 * ((i - 2008) Mod 4), _ Top:=200 * ((i - 2008) \ 4), _ Width:=200, _ Height:=200).Chart With myLstObj .Range.AutoFilter field:=4, Criteria1:=h .Range.AutoFilter field:=1, Criteria1:=i Set myRng1 = Intersect(.DataBodyRange, _ .Range.SpecialCells(xlCellTypeVisible)) myPref = myRng1.Cells(1, 5) For j = 0 To myRng1.Rows.Count - 1 ReDim Preserve myXValue(j) ReDim Preserve myValue1(j) ReDim Preserve myValue2(j) myXValue(j) = myRng1.Cells(j + 1, 3) myValue1(j) = myRng1.Cells(j + 1, 12) myValue2(j) = myRng1.Cells(j + 1, 11) Next j Set SeriesM = Cht.SeriesCollection.NewSeries With SeriesM .Name = "Model" .XValues = myXValue .Values = myValue1 .ChartType = xlLine .Format.Line.Weight = 1# '.Format.Line.ForeColor.ObjectThemeColor = msoThemeColorAccent2 End With Set SeriesR = Cht.SeriesCollection.NewSeries With SeriesR .Name = "Real" .XValues = myXValue .Values = myValue2 .ChartType = xlColumnClustered End With .Range.AutoFilter field:=1 .Range.AutoFilter field:=4 End With With Cht .HasTitle = True .ChartTitle.Caption = i .ChartGroups(1).GapWidth = 0 End With Next i .Name = myPref End With Next h End Sub
結果
北海道
青森県
岩手県
宮城県
秋田県
山形県
福島県
茨城県
栃木県
群馬県
埼玉県
千葉県
東京都
神奈川県
新潟県
富山県
石川県
福井県
山梨県
長野県
岐阜県
静岡県
愛知県
三重県
滋賀県
京都府
大阪府
兵庫県
奈良県
和歌山県
鳥取県
島根県
岡山県
広島県
山口県
徳島県
香川県
愛媛県
高知県
福岡県
佐賀県
長崎県
熊本県
大分県
宮崎県
鹿児島県
沖縄県
まとめ
都道府県別の2008年から2019年の熱中症搬送人員数の予測と実際をEXCELの組み合わせグラフで描いた.モデルに投入しなかった変数が予測と実際の乖離をもたらしていると考えているが,その推定は容易ではない.地形は都道府県ごとに固定されているが,その違いの影響を定量的に評価するには困難を伴う.特に北海道は一つの単位として扱うには広大すぎる.また気候の影響は最高気温と平均水蒸気圧で代表させるには少なすぎるのかもしれない.空間異質性を推定できる空間統計を併用する必要性を感じている.さらに人体側では暑熱馴化,その日に限定されたイベントなど,特殊な事情が誤差を発生させている可能性もある.
とは言え,回帰式の内部に都道府県人口(あるいは65歳以上人口)をオフセット項として導入したことで,異なる人口規模の都道府県に対してある程度普遍性のある一つの回帰式を提示できるようになった意義は大きい.さらなる拡張として,二次医療圏ごとや消防署の管区ごとの人口をオフセット項として投入することで,より小さな単位での熱中症搬送人員数を予測できる可能性がある.そのためにはより詳細な地域単位での搬送人員数の統計が必要である.
熱中症搬送人員数の予測は一筋縄ではいかない.しかし少なくとも都道府県別に予測式を組み立てることは無駄ではないと思われる.市区町村別の搬送人員数の集計を総務省消防庁には希望したい.しかし労働人口は市区町村を超えて勤務していることが予想され,出動する消防署と収容される医療機関との地域差がさらなる誤差を生み出す可能性を考慮すると,現在の都道府県別の集計にはある程度の合理性があるのかもしれない.