総務省の公開しているe-Statには社会疫学的指標が多く含まれる.今回熱中症搬送人員数に様々な指標を加えて解析してみた.
説明変数として日最高気温,日平均水蒸気圧,都道府県人口に加えて過去30日間の平均気温,エアコン保有台数,年間収入のジニ係数,光熱・水道費,実収入,第1次産業就業者比率,第2次産業就業者比率,都市公園数,都市緑化割合,自然公園割合,自然公園数,生活保護被保護人員を加えた.
すべての変数が有意であったが,VIFを見ると多重共線性を疑わせる変数もあり,良いモデルとは言えない結果となった.
データのダウンロード
トップページの「地域」をクリックする.
「都道府県データ」の「データ表示」をクリックする.
地域選択
「地域選択」ではまず「全て選択」し「全国」を「地域を削除」する.
表示項目選択
エアコン保有台数
「分野」は「L 家計」,「大分類」は「L5 所有量・消費量」,「小分類」は「L51 耐久消費財所有数量(二人以上の世帯)」を選択すると「L5104 耐久消費財所有数量(二人以上の世帯)(ルームエアコン【台】)」が表示されるのでこれをクリックして「項目を選択」する.
ジニ係数
「分野」は「L 家計」,「大分類」は「L4 非農家世帯の家計(全国消費者実態調査)」,「小分類」は「L46 ジニ係数」を選択すると「L4601 年間収入のジニ係数(二人以上の世帯)」が表示されるのでこれをクリックして「項目を選択」する.
実収入
「分野」は「L 家計」,「大分類」は「L4 非農家世帯の家計(全国消費実態調査)」,「小分類」は「L41 収入」を選択すると「L4110 実収入(二人以上の世帯のうち勤労者世帯)」が表示されるのでこれをクリックして「項目を選択」する.
図には示していないが水道・光熱費もここに含まれている.
労働力人口,第1次産業就業者数,第2次産業就業者数,第3次産業就業者数
「分野」は「F 労働」を選択すると「F1101 労働力人口(人)」「F2201 第1次産業就業者数(人)」「第2次産業就業者数(人)」「第3次産業就業者数(人)」が表示されるのでそれぞれクリックして「項目を選択」する.
都市公園数,都市緑地面積
「分野」は「H 居住」,「大分類」は「H9 都市公園」を選択すると「H9101 都市公園数(箇所)」「H920502 都市緑地面積(ha)」が表示されるのでそれぞれクリックして「項目を選択」する.
生活保護被保護人員
「分野」は「J 福祉・社会保障」,「大分類」は「J1 生活保護等」,「小分類」は「J11 生活保護」を選択すると「J1105 生活保護被保護人員(人)」が表示されるのでクリックして「項目を選択」する.
総面積
「分野」は「B 自然環境」,「大分類」は「B1 土地面積」,「小分類」は「B11 総面積等」を選択すると「B1101 総面積(北方地域及び竹島を除く)(ha)」「B1102 総面積(北方地域及び竹島を除く)(ha)」が表示されるのでクリックして「項目を選択」する.
自然公園割合,都道府県率自然公園数
「分野」は「B 自然環境」,「大分類」は「B2 自然公園」を選択すると「B2101 自然公園面積(ha)」「B2102 都道府県立自然公園数(箇所)」「B2103 都道府県立自然公園面積(ha)」「B2104 国立公園面積(ha)」「B2105 国定公園面積(ha)」が表示されるのでそれぞれクリックして「項目を選択」する.
Power Queryによるデータクレンジング
Power Query によるデータクレンジングは省略する.労働力人口で第1次産業就業者数,第2次産業就業者数,第3次産業就業者数をそれぞれ割って第1次産業就業者数比率,第2次産業就業者比率,第3次産業就業者比率とする.
SQL Serverへのインポート
SQL Serverへのウィザードを使用したインポートも省略する.
クエリ
下記クエリ参照.
USE HeatStrokeDB GO WITH CTE_MOVING_AVERAGE(date, pref, Avg10, Avg20, Avg30) AS( SELECT D.年月日 , D.都道府県 , AVG(D.日平均気温) OVER (PARTITION BY D.都道府県 ORDER BY D.年月日 ASC ROWS BETWEEN 9 PRECEDING AND CURRENT ROW) AS '移動平均10日間' , AVG(D.日平均気温) OVER (PARTITION BY D.都道府県 ORDER BY D.年月日 ASC ROWS BETWEEN 19 PRECEDING AND CURRENT ROW) AS '移動平均20日間' , AVG(D.日平均気温) OVER (PARTITION BY D.都道府県 ORDER BY D.年月日 ASC ROWS BETWEEN 29 PRECEDING AND CURRENT ROW) AS '移動平均30日間' FROM dbo.T_DailyAvgTemp AS D ) SELECT M.都道府県コード AS PrefCode , M.都道府県 AS Pref , M.年月日 AS Date , M.日最高気温 AS MaxTemp , CTE_MOVING_AVERAGE.Avg10 , CTE_MOVING_AVERAGE.Avg20 , CTE_MOVING_AVERAGE.Avg30 , V.日平均蒸気圧 AS Vapor , P.総人口 AS Pop , A.[ルームエアコン【台】] AS AirCon , G.年間収入のジニ係数 AS Gini , I.[光熱・水道費【円】] AS EnergyCost , I.[実収入【円】] AS Income , L.第1次産業就業者比率*100 AS PrimaryIndustry , L.第2次産業就業者比率*100 AS SecondaryIndustry , L.第3次産業就業者比率*100 AS TertiaryIndustry , PA.H9101_都市公園数 AS UrbanParkNum , (PA.[H920502_都市緑地面積【ha】]/dbo.T_AREA.[B1102_総面積【ha】])*100 AS UrbanGreenRatio , (CAST(NA.[B2101_自然公園面積【ha】] AS float) / CAST(dbo.T_AREA.[B1102_総面積【ha】] AS float))*100 AS NatureParkRatio , NA.[B2102_都道府県立自然公園数【箇所】] AS NatureParkNum , W.[生活保護被保護実人員【人】] AS Wellfare , H.[搬送人員(計)] AS Num FROM dbo.T_MaxTemperature AS M INNER JOIN CTE_MOVING_AVERAGE ON CTE_MOVING_AVERAGE.date=M.年月日 AND CTE_MOVING_AVERAGE.pref=M.都道府県 INNER JOIN dbo.T_HeatStroke AS H ON M.都道府県コード = H.都道府県コード AND M.年月日 = H.日付 INNER JOIN dbo.T_VaporPressure AS V ON M.都道府県コード=V.都道府県コード AND M.年月日=V.年月日 INNER JOIN dbo.T_Population AS P ON M.都道府県コード = P.都道府県コード AND YEAR(M.年月日) = P.調査年 INNER JOIN dbo.T_AirCon AS A ON M.都道府県コード = LEFT(A.都道府県コード, 2) AND CASE WHEN YEAR(M.年月日) >= 2014 THEN 2014 ELSE CASE WHEN YEAR(M.年月日) >= 2009 THEN 2009 ELSE 2004 END END = A.調査年 INNER JOIN dbo.T_Gini AS G ON M.都道府県コード = LEFT(G.都道府県コード, 2) AND CASE WHEN YEAR(M.年月日) >= 2014 THEN 2014 ELSE 2009 END = G.調査年 INNER JOIN dbo.T_Income AS I ON M.都道府県コード = LEFT(I.都道府県コード, 2) AND CASE WHEN YEAR(M.年月日) >= 2014 THEN 2014 ELSE CASE WHEN YEAR(M.年月日) >= 2009 THEN 2009 ELSE 2004 END END = I.調査年 INNER JOIN dbo.T_LaborForce AS L ON CASE WHEN YEAR(M.年月日) >= 2020 THEN 2020 ELSE CASE WHEN YEAR(M.年月日) >= 2015 THEN 2015 ELSE CASE WHEN YEAR(M.年月日) >= 2010 THEN 2010 ELSE 2005 END END END = L.調査年 AND M.都道府県コード = LEFT(L.都道府県コード, 2) INNER JOIN dbo.T_PARKS AS PA ON M.都道府県コード = LEFT(PA.都道府県コード, 2) AND CASE WHEN YEAR(M.年月日) >= 2021 THEN 2021 ELSE YEAR(M.年月日) END = PA.調査年 INNER JOIN dbo.T_NaturePark AS NA ON CASE WHEN YEAR(M.年月日) >= 2021 THEN 2021 ELSE YEAR(M.年月日) END = NA.調査年 AND M.都道府県コード = LEFT(NA.都道府県コード, 2) INNER JOIN dbo.T_AREA ON M.都道府県コード = LEFT(dbo.T_AREA.都道府県コード, 2) AND CASE WHEN YEAR(M.年月日) >= 2021 THEN 2021 ELSE YEAR(M.年月日) END = dbo.T_AREA.調査年 INNER JOIN dbo.T_Wellfare AS W ON M.都道府県コード = LEFT(W.都道府県コード,2) AND YEAR(M.年月日) = W.調査年 ORDER BY M.都道府県コード, M.年月日
(71656 行処理されました)
Rでの解析
> Num = HEATSTROKE24$Num > MaxTemp = HEATSTROKE24$MaxTemp > Avg30 = HEATSTROKE24$Avg30 > Vapor = HEATSTROKE24$Vapor > Pop = HEATSTROKE24$Pop > AirCon = HEATSTROKE24$AirCon > Gini = HEATSTROKE24$Gini > Income = HEATSTROKE24$Income > EnergyCost = HEATSTROKE24$EnergyCost > Primary = HEATSTROKE24$PrimaryIndustry > Secondary = HEATSTROKE24$SecondaryIndustry > UrbanParkNum = HEATSTROKE24$UrbanParkNum > UrbanGreenRatio = HEATSTROKE24$UrbanGreenRatio > NatureParkRatio = HEATSTROKE24$NatureParkRatio > NatureParkNum = HEATSTROKE24$NatureParkNum > Wellfare = HEATSTROKE24$Wellfare > z = glm(Num ~ MaxTemp + Avg30 + Vapor + AirCon + Gini + Income + EnergyCost + Primary + Secondary + UrbanParkNum + UrbanGreenRatio + NatureParkRatio + NatureParkNum + Wellfare, offset = log(Pop), family = poisson(link = "log"))
結果
> summary(z) Call: glm(formula = Num ~ MaxTemp + Avg30 + Vapor + AirCon + Gini + Income + EnergyCost + Primary + Secondary + UrbanParkNum + UrbanGreenRatio + NatureParkRatio + NatureParkNum + Wellfare, family = poisson(link = "log"), offset = log(Pop)) Deviance Residuals: Min 1Q Median 3Q Max -12.4897 -1.3044 -0.4867 0.7585 16.5535 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -2.220e+01 4.828e-02 -459.911 < 2e-16 *** MaxTemp 3.141e-01 5.416e-04 579.992 < 2e-16 *** Avg30 -1.068e-01 6.350e-04 -168.164 < 2e-16 *** Vapor 9.617e-02 4.383e-04 219.387 < 2e-16 *** AirCon 1.203e-04 2.999e-06 40.120 < 2e-16 *** Gini -3.301e+00 1.185e-01 -27.851 < 2e-16 *** Income -2.910e-06 6.053e-08 -48.077 < 2e-16 *** EnergyCost 9.799e-05 8.588e-07 114.099 < 2e-16 *** Primary 1.777e-02 9.481e-04 18.749 < 2e-16 *** Secondary -5.739e-03 4.339e-04 -13.225 < 2e-16 *** UrbanParkNum 2.997e-05 1.483e-06 20.212 < 2e-16 *** UrbanGreenRatio -1.554e-01 2.710e-02 -5.734 9.81e-09 *** NatureParkRatio -4.013e-03 1.933e-04 -20.766 < 2e-16 *** NatureParkNum 2.068e-02 4.489e-04 46.062 < 2e-16 *** Wellfare -5.096e-07 4.719e-08 -10.799 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for poisson family taken to be 1) Null deviance: 1051129 on 71655 degrees of freedom Residual deviance: 237779 on 71641 degrees of freedom AIC: 426578 Number of Fisher Scoring iterations: 5
多重共線性を確認するためにVIFを確認する.
> library(car) > vif(z) MaxTemp Avg30 Vapor AirCon 1.534149 1.895470 1.674347 1.730607 Gini Income EnergyCost Primary 1.686180 3.238139 1.551542 4.882376 Secondary UrbanParkNum UrbanGreenRatio NatureParkRatio 2.901447 8.837021 9.658774 1.995241 NatureParkNum Wellfare 1.409218 11.322891
考察
Variable | Effect size | Pro | VIF |
---|---|---|---|
(Intercept) | -22.20 | *** | |
MaxTemp | 0.3141 | *** | 1.53 |
Avg30 | -0.1068 | *** | 1.89 |
Vapor | 0.09617 | *** | 1.67 |
AirCon | 0.0001203 | *** | 1.73 |
Gini | -3.301 | *** | 1.68 |
EnergyCost | 0.00009799 | *** | 1.55 |
Income | -0.000002910 | *** | 3.23 |
Primary | 0.01777 | *** | 4.88 |
Secondary | -0.005739 | *** | 2.90 |
UrbanParkNum | 0.00002997 | *** | 8.84 |
UrbanGreenRatio | -0.1554 | *** | 9.66 |
NatureParkRatio | -0.004013 | *** | 2.00 |
NatureParkNum | 0.02068 | *** | 1.41 |
Wellfare | -0.0000005096 | *** | 11.32 |
過去30日間の平均気温
「涼しい地域ほど搬送数が増えやすい」との指摘がなされている.言われてみればもっともな話である.本稿ではその涼しさを過去30日間の日平均気温の平均として扱った.過去10日間,過去20日間とも比較したが,過去30日間の平均が最もAICが小さくなったため過去30日間を採用した.逆にそれ以上の日数の平均気温とは比較していない.
エアコン保有台数
日本の住宅は断熱性・気密性で世界基準よりも性能が劣っている.その低性能な住宅環境を空調で補っている可能性がある.エアコン保有台数はその代替変数である可能性がある.住宅の断熱性能が低いということは外界の温度変化の影響が屋内環境に及びやすいという意味であり,エアコン保有台数と熱中症搬送人員数が正相関を示すことは理にかなっている.
年間収入のジニ係数
ジニ係数とは格差の変数であり,その値が高いほど格差が大きいという意味である.一般には格差が大きいと貧困層において熱中症搬送人員数が増えるため,ジニ係数と搬送人員数は正相関しそうな気がする.しかし実際にはジニ係数は熱中症搬送人員数と負の相関を示している.日本においては逆に富裕層でも高性能の住宅が普及しておらず,一部の富裕層が高性能の住宅に居住することで搬送人員数が減り,負の相関を示すのかもしれない.またジニ係数は富裕層と貧困層の就労環境の違いにも関連する可能性があり,それは熱中症のリスクに直結している可能性がある.
光熱・水道費
光熱・水道費は内部に電気料金を含む.搬送人員数と正相関を示している.エアコン保有台数の項でも述べたが,光熱・水道費は低性能な住宅の居住環境を補正するために上昇する可能性がある.つまり,光熱・水道費もまた住宅の性能の代替変数である可能性がある.燃料貧困という言葉がある.収入の1割以上を燃料費に費やしている家庭は燃料貧困の可能性がある.
実収入
収入と搬送人員数は負の相関を示す.収入は居住している住宅性能の違い,就労現場の温度環境の違いにも影響しており,それは熱中症のリスクに直結するだろう.
第1次産業就業者比率,第2次産業就業者比率
第1次産業就業者比率は正の相関,第2次産業就業者比率は負の相関を示した.前者は農林水産業,後者は製造業に従事していることを示す.第1次産業就業者が自然環境に直接曝されていることと搬送人員数の正相関を示すことは無関係ではあるまい.第2次産業就業者の就労環境は屋内が多いと考えられ,したがって空調が整備されている可能性がある.第3次産業就業者比率は第1次産業就業者比率と第2次産業就業者比率との和が1となるため解析から除外した.
都市公園数,都市緑化割合
都市公園数とは正相関,都市緑化割合とは負の相関を示した.前者の理由はよくわからない.公園一つ一つの面積が小さい可能性はある.後者は納得できる.緑地面積が大きければ日陰が増え,気温は下がり,日光に直接曝されるリスクは減る.いわゆるヒートアイランド現象を軽減させる効果があるのだろう.都市緑化割合の効果量が非常に大きいが,都市緑地面積の分布に留意すべきとは思う.
自然公園割合,自然公園数
自然公園割合とは負の相関,自然公園数とは正相関を示した.自然公園には人の住む住宅は存在せず,自然公園で就労している人も多くはない.しかし自然公園の占める割合が大きいほど搬送人員数が少なくなるというのは納得できる話ではある.
生活保護被保護人員
生活保護被保護人員とは一見,正相関を示しそうな気がするが,実際には負の相関を示した.この理由も不明である.VIFからは多重共線性の可能性がある.
まとめ
説明変数として日最高気温,日平均水蒸気圧,都道府県人口に加えて過去30日間の平均気温,エアコン保有台数,年間収入のジニ係数,光熱・水道費,実収入,第1次産業就業者比率,第2次産業就業者比率,都市公園数,都市緑化割合,自然公園割合,自然公園数,生活保護被保護人員を加えたが,すべての変数が有意となった.
しかしVIFからは生活保護被保護人員や都市公園数,都市緑化割合などが多重共線性の疑いがあり,良いモデルとは言えない.
“e-Statからの社会疫学的指標を加えて熱中症搬送人員数を分析する” への1件の返信