コロナウイルスの一次データを探して分析するまで

先日、コロナウイルスのデータ分析法を解説した記事を投稿しました。この記事では、北海道が公開している陽性患者属性データを使って年代ごとの重症化率を比較しています。

実は、この分析は私の老化研究の一環です。コロナウイルスは高齢者で重症化しやすいと言われているため、なぜ重症化しやすいのかを調べれば老化のメカニズムに迫れると考えたからです。


ただし、現時点でコロナウイルスの知見が少なく、未だ病態メカニズム解明には至れていない印象を受けています。ゆえに、今後の解析はコロナウイルスではなく「肺炎」そのものを扱う予定です。

肺炎と加齢の関係を調べた研究報告は後日記事にするとして、この記事ではコロナウイルスのデータ分析で私が苦労した部分についてお話しします。


オープンデータを見つけるまで

まず、地味に苦労したのがコロナウイルスのオープンデータを探すところです。当初は、年代ごとの死亡率を比較する予定だったので、陽性者の予後が記録されているデータを見つける必要がありました。

しかし、結果的にそのようなデータを見つけることはできませんでした。


最初は、そもそも日本のデータを扱う気はなく、アメリカやヨーロッパのCDCが公開しているデータを漁っていました。

しかし、データ説明が英語で非常に分かりづらく、様々な国を対象としているせいか各患者ごとの属性データを格納しているデータが見つかりませんでした


そこで、扱うデータを日本に限定し、各都道府県のオープンデータを探す方針に変更しました。いくつかのサイトを参考にしてオープンデータを探し出し、最終的に北海道のデータを採用するに至りました。

結局は死亡等を格納したデータは見つからず、軽症・重症を格納しているデータに妥協しましたが、ひとまずは分析目的に足るデータを探し出すことができました。


分析方法を調べ終えるまで

次に、Pandasを用いた分析方法を調べる段階に移行しました。幸いにも、PandasやMatplotlibについては以前に勉強したことがあったので、勉強時間はそれほど多くはかかりませんでした。

しかし、全てのメソッドを網羅していた訳ではなかったので、いくつかの場面で必要なメソッドを探す旅に出かけました。


例えば、年代カテゴリと状態カテゴリを割り振った後に、どのように集計すべきか迷いました。最初はgroup_byとvalue_countsを上手く使うことを検討していましたが、Multiindexの扱い方などで手間取り、最終的には廃案になりました

その後、crosstabというメソッドを見つけ出しました。このクロス集計が今回の目的に非常に合っていることが判明し、こちらを採用したことで問題はあっさり解決しました。


あとは、Pandasのplotメソッドを日本語対応させるのに少し苦労しました。何も対策せずにグラフを表示させると日本語部分が豆腐になってしまうので、日本語対応モジュールを使うか、全てのラベルを英語で書き直すかしないといけません。

今回はGoogle Colaboratory上で分析を行っていたので、「colab matplotlib 日本語」などで検索して日本語対応方法を調べました。記事に書いてある通り、japanize_matplotlibを導入することで日本語対応を達成しました。


分析を終えて

今回、分析を行うにあたって書籍の方も色々漁ってみたのですが、多くのデータ分析本では機械学習がメインとなっていて、今回のようなデータ可視化などはあまり扱われていない印象でした。

機械学習についてはいずれは扱う予定ですが、最初はデータの集計やグラフ作成など簡単な処理から手をつけていく予定です。なので、現状ではテキストが不足しており上手く勉強ができていません。

ただし、以下のようなデータ可視化に特化した本も最近出版されたようなので、こちらは後で読んでみたいと思います。


www.shoeisha.co.jp


今度は、PandasとMatplotlibの使い方にもっと習熟して、データが見つかれば即座に分析できるくらいを目指していきたいと思います。