General

COVID-19データーを自動解析してグラフにする

2021年2月23日

COVID-19が全世界で猛威を振るっています。その感染情報が気になるところですが、日本全国や都道府県別の検査陽性者数などの情報が公開されており、それを閲覧することである程度知ることが出来ます。例えば、NHKの特設サイト・新型コロナウイルスは、全国や都道府県別のグラフがあり、生データーもcsvファイルで提供されているので、便利です。

ただ、生データーは、週前半の値が週後半の値に比べて少なくなるなど、そのままでは感染状況などを把握しづらいです。Excel等の表計算ソフトを利用するなど、ある程度の計算を行うと、生データーよりも見やすいデーターのグラフが書けたり、実効再生産数を計算できたりします。私もExcelを用いてデーター解析を行っていたのですが、日々公表される最新のデーターは手作業で打ち込みせざるを得ず、手間がかかっていました。

そこで、そういった計算を自動で行うwebサイトを構築することにしました。ブラウザーでアクセスするだけで、生データーを計算して、さまざまなグラフを表示することが出来ます。次のURLにアクセスしてください。
https://www.rad51.net/projects/covid19/covid19.html

下の図は、表示されるグラフの一例です。
2021-02-23-positives.png

このグラフはいろいろな所で使われる陽性者数の推移のグラフで、おなじみだと思います。最近は、振れが激しい生データーだけでなく、7日間平均の値も同時に出すものが増えてきました。ですので、ここではあまり説明はしません。

次のグラフは、最初のグラフと同じですが、縦軸を対数表示にしたものです。
2021-02-23-log.png
通常表記のグラフでは、感染が指数関数的に拡大している時や、逆に指数関数的に収縮している場合などは、プロットが曲線になり、良くわかりません。そういった場合、対数グラフを見ると、指数関数的な変化を起こしているときは直線的に値が変化するので、分かりやすいです。

3番目のグラフは、実効再生産数を表示します。
2021-02-23-ern.png
実効再生産数は、一人の感染者が、次に何人の人に感染させているかの値です。COVID-19の場合は、5日間で何倍に増えるかで計算されることが多いようです。この値が1なら感染者数は横ばい、2なら5日間で2倍に(1か月でおよそ64倍)、0.5なら5日間で半分に(1か月でおよそ1/64)なります。ここでは、7日間平均の陽性者数のデーターを用い、5日前の値と比べることで、計算しています。速報値は、平均値は使わず7日前の値との比較を5/7乗することで計算しています。

最後のグラフは、死者数を表示します。
2021-02-23-death.png
死者数のデーターは、感染者数のデーターよりおよそひと月程遅れて出ますので、将来の感染者数がどのように推移するかの予測にはあまり役立ちません。ただし、過去に公表された陽性者数が本当に感染者数を反映しているのかを検証するのには、非常に役に立ちます。例えば、ある月に陽性者数が減少しているにもかかわらず次の月に死者数が同じように減っていなければ、その「ある月」の陽性者数のデーターを疑ってみる必要があります。つまり、検査の取りこぼしがあって、検査せずに陽性者とみなされていない感染者が多数いたかもしれません。また、日本ではCOVID-19の死亡率がおよそ1.6%ですから、それよりも高い死亡率が出た場合なども、検査せずに陽性者とみなされていない感染者が多数いたことを示唆するデーターです。

ページの一番下には、表示範囲を調整するためのスライダー、CSVファイルをダウンロードするためのボタン、都道府県別のデーターを表示するためのリンクがあります。
2021-02-23-tools.pngスライダーは、右に動かせば直近の日付だけを表示、左に動かせば全体表示です。「Save CSV file」ボタンを押せば、CSVファイルをダウンロードできるので、別途、表計算ソフトで解析できます。また、都道府県名をクリックすれば、全国レベルでなく、都道府県別のグラフを表示します。

Webアプリケーションの技術的なことに関して

グラフを表示するこのページは、HTML5とサーバーサイドスクリプトを用いた、Webアプリケーションとして作成しました。グラフの表示は、それ用のCartd.jsというライブラリーを用いて、簡易に実装しています(すごく便利です!)。サーバーサイドでは、PHPを用いてNHKのページからCSVファイルを取り込んで、それをJavascriptに変換しています。ソースコードを公開してGitHubに置きましたので、興味のある方は見てみて下さい。ごく簡単なプログラムで、ソースコードはコメントを含めても400行未満です。

一応、セキュリティーチェックもしてあります。入力はCSVファイルと、都道府県番号の二つです。前者はNHKのサイトから来ますが、NHKの該当ページが万一ハッキングされた場合の事を考えて、対処しています。後者に関しては、入力値を整数値に変換することで、対処することが出来ます。いずれにせよ、仮に脆弱性があったとしてもXSSで、サーバーサイドでの任意コード実行や、サーバーの情報漏洩など(例えば、ディレクトリートラバーサルとか)の最悪レベルのセキュリティーホールは、起こりえないと思います。

コメント

コメントはありません

コメント送信