COVID19-確認数および死亡数の増加を片対数を用いて可視化する

新型コロナウイルス感染症については、必ず1次情報として 厚生労働省 首相官邸 のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。本投稿は一次データにアクセスしデータを理解する技術を伝える目的で作成されており、情報の更新、厳密な公表数値の保障はいたしかねます。

世界の症例数については以下を参照ください。

Review resources about COVID-19 and the SARS-CoV2 (the novel coronavirus that causes the disease). Start with the CDC dedicated response page and explore more on the Johns Hopkins Coronavirus resource page.

 

現在(2020-04-02)、COVID19(新型コロナウィルス)の感染確認症例数、死亡症例数の増加は、世界的に指数的な増加を見せています。指数的な増加傾向を適切に理解する可視化表現として片対数を用いる方法があります。以下、New York Timesの記事等で利用されています。

Coronavirus Deaths by U.S. State and Country Over Time: Daily Tracker

この図では、国ごとに最初に死亡症例が25を超えた日からの経過日数を横軸に、死亡症例数の片対数を用いて表現しています。 もし、最初の日が25人、次の日が25*2=50人、次の日kが25*2*2 =100人、次の日が25*2*2*2= 200人と倍々に指数的な増え方をしている場合、急こう配の直線で表現されます。指数関数的な増加を続けている場合に直線として置き換えられるため、増加傾向を理解しやすく、いち早くこのカーブを直線から外し、緩やかになることが感染の収束のために望まれます。

この記事では、上記のようなグラフをTableauでどのように描くかについて解説します。

以下完成したグラフです。

 

 

Tableau Public Tomohiro Iwahashi: 

 

■ ステップ:

この記事では、Tableau の取り組みである”Trusted Coronavirus (COVID-19) global data from our community experts.” からデータを取得し利用します。以下からデータをダウンロードすることができます。

https://www.tableau.com/covid-19-coronavirus-data-resources

 

このデータセットには、Cases_Type フィールドに “Confirmed”(確認症例数)と”Deaths”(死亡症例数)の分類と対応する症例数”Cases”フィールドがあります。

 

まず、死亡数をCasesからメジャーとして取り出すために、死亡数を計算するフィールドを作成します。

 

 

起点とする最初の死亡数Nを指定するパラメータ”First N Death”を作成します。

 

その日の死亡数がパラメータ ”First N Death” を超える場合、1 を返すフラグを作ります。

 

IF [Deaths#] >= [First N Deaths] THEN 1 ELSE 0 END

 

 

死亡数が パラメータ Nを超える日のみ Dateを返す計算フィールドを作ります。

IF [OverDeath#Flg] =1 THEN [Date] END

 

Contry_Region に詳細レベルを固定(FIXED)して、その範囲で最小の日付、すなわち、「各国で最初に死亡数がNを超えた日」を作成します。

 

 

{FIXED [Country_Region]:MIN([Date(OverNDeaths)])}

 

ここでFIXED記述は、Tableau で詳細レベル式(LOD)と呼ばれ、可視化のレベルとは異なる集計単位で最小値などの集計を操作する場合に有効な手段となります。

 

詳細レベル式(LOD)FIXEDの詳細については、以下Tableau マニュアルを参照ください。

FIXED 詳細レベルの式

 

パラメタNを10とした場合、日本ではすべての行に、”2020/03/09” の日付が入ります。これが日本で死亡数10を初めて超えた日付となります。

 

 

“FirstDate_OverNDeath”から数えて何日経過しているかを計算します。

 

DATEDIFF(‘day’,[FirstDate_OverNDeaths],[Date])

 

 

DaysFromNDeaths (死亡数がNに達した日からの経過日数) と Deaths#(死亡数)でグラフを作成し、色にCountry_Region (いくつか特定の国を指定)を設定します。

 

多くの国で指数的に死亡症例が増加していることが分かります。

 

 

指数関数的な伸びを見せるグラフについては、y軸のスケールを対数(片対数)

で表示します。 片対数グラフでは、指数的な伸びを見せている場合に直線的な遷移が見られます。急激な伸びを見せる数値については、片対数を用いて可視化した方が伸び率がより理解しやすくなります。(Y軸については数値が大きくなればなるほど、間隔が短くなります。)

各国において、最初に死亡数が10を超えてからどのように死亡数が増加しているがを可視化します。

 

ここでは傾向線として”指数”を選択し、傾向線を引きます。

 

Casesを”Deaths”(死亡数)とするか、”Confirmed”(確認数)とするかを切り替えるためのパラメータ”Switch”を作ます。

以下のように”Deaths#”をパラメータを利用するように書き換えます。

 

Switchパラメータを”Death”から”Confirmed”に切り替えると、感染確認数の増加傾向を可視化します。

すべての国を表示すると、以下のように表示数が多すぎて見えなくなってしまうため、「最終症例数が一定の国のみをフィルタすることにします。具体的には国で見たときの、最大値(この場合累計の最後)を国で固定(FIXED)して、その値でフィルタをします。

このようにすると、最終的な症例数がフィルタで指定した数を超える国だけにフィルタすることができます。(FIXEDを使わないと、すべてのレコードにフィルタがかかってしまうため、最終数が指定を超える国でも、指定数を超えない期間がフィルタされてしまいます。)

 

 

最終的にConfirmedが5000件以上となる国のみでフィルタをすると以下のようになります。

PAGE_BREAK: PageBreak

 

以上、Tableau を用いて、片対数による増加傾向の可視化方法を紹介しました。状況の考察については敢えてここではいたしませんが、一次データに個人が直接アクセスし、個人で最新の状況を理解するための分析力を私含めて身に付けていきたいという思いでの投稿となります。

 

不備、技術来なご指摘等ございましたら、ご連絡頂ければ幸いです。

 

返信を残す

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

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