2016.11.12 Sat |
NDBオープンデータ解析1
厚生労働省が先月(2016年10月)レセプトデータを集計したもの(NDBオープンデータ)を公開してくださったので、今回はそれを解析したいなと思います!
データへのリンクはこちらになります。
http://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000139390.html
Excelの表データが60個くらいあり、すべてダウンロードするだけでも一苦労です。
さらに、各表データに関して、だいたい2シートあり、一通りざっと見るだけでも、大変です。下の写真は一例です。
今回公開されたデータは、1、性年齢別、2、都道府県別、3、都道府県別性年齢階級別、の3つに名寄せすることが出来ます(いろいろ可視化や解析行ったんですがここに帰着) 。
今回はそれらのデータを説明変数として、そとから取ってきたデータを目的変数として、回帰分析を行ってみました。目的変数は、一番初めは自殺率にします。説明変数(今回公開されたデータ)から自殺率を予想するモデルを作成することで、自殺率に影響している要因はなのかを特定したいと思います。
ただし、3、都道府県別性年齢階級別、に関しては、前処理が大変だったため、解析を断念しました。具体的には、特定検診の18個のExcelデータです。
では、まず名寄せについてです。
1、性年齢別、は以下の図のイメージです。
2、道府県名での名寄せは以下のような感じです。
・前処理について
ファイル形式がcsvでなく、excel形式であり、セルの結合などしていること、ファイルサイズがそれほど大きくないことから今回は手作業でExcelファイルの中身を整形することにしました。
欠損値を0に置換、説明変数にするものの名前を数字とアルファベットの列に変え,桁区切りのコロンの除去、説明変数の名前付けを行いました。
以下で手順を簡単に示します。
・目的変数の作製
今回は都道府県別自殺率のデータを目的変数とします。
・パッケージの読み込み
install.packages(“randomForest”,dependencies=T)
library(randomForest)
・得られたパラメータを使用してモデル作成(randomforest)
rf3=randomForest(suiciderate~., data=t, mtry=17, ntree=500,importance=T)
・説明変数の目的変数への重要度のプロット
varImpPlot(rf3)
今回は細かく解析はしませんが、こんな感じに、オープンデータから、回帰用の説明変数を作成し、外から何か調べたい変数(今回でいうと各都道府県の自殺率)をとってきて、モデル作成して、説明変数から目的変数への重要度を算出し、特に重要な説明変数に関して、説明変数と目的変数の散布図を作ることで、説明変数と目的変数の関係性を理解する(正の相関か、負の相関か、反比例かなど(今回は実は負の相関または反比例であることが多かった))という流れになります。関係性の理解が済んだら、各説明変数の理解をしていくことになります。たとえば上の図でいうと、薬剤情報提供料とは何か?など。
今回はここまでにします。
鈴木瑞人
東京大学大学院新領域創成科学研究科 メディカル情報生命専攻 博士課程1年
一般社団法人Bizjapan(http://bizjapan.org/en/)
東京大学機械学習勉強会(http://www.machine-learning-r.com/)