2016.11.12 Sat |

NDBオープンデータ解析1

medical-record

厚生労働省が先月(2016年10月)レセプトデータを集計したもの(NDBオープンデータ)を公開してくださったので、今回はそれを解析したいなと思います!

データへのリンクはこちらになります。
http://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000139390.html

ndbopendata2

Excelの表データが60個くらいあり、すべてダウンロードするだけでも一苦労です。

さらに、各表データに関して、だいたい2シートあり、一通りざっと見るだけでも、大変です。下の写真は一例です。

ndbopendata3

今回公開されたデータは、1、性年齢別、2、都道府県別、3、都道府県別性年齢階級別、の3つに名寄せすることが出来ます(いろいろ可視化や解析行ったんですがここに帰着) 。

今回はそれらのデータを説明変数として、そとから取ってきたデータを目的変数として、回帰分析を行ってみました。目的変数は、一番初めは自殺率にします。説明変数(今回公開されたデータ)から自殺率を予想するモデルを作成することで、自殺率に影響している要因はなのかを特定したいと思います。

ただし、3、都道府県別性年齢階級別、に関しては、前処理が大変だったため、解析を断念しました。具体的には、特定検診の18個のExcelデータです。

では、まず名寄せについてです。

1、性年齢別、は以下の図のイメージです。

%e3%83%ac%e3%82%bb%e3%83%97%e3%83%88%e3%83%87%e3%83%bc%e3%82%bf%e8%a7%a3%e6%9e%902

2、道府県名での名寄せは以下のような感じです。

%e3%83%ac%e3%82%bb%e3%83%97%e3%83%88%e3%83%87%e3%83%bc%e3%82%bf%e8%a7%a3%e6%9e%903

・前処理について

ファイル形式がcsvでなく、excel形式であり、セルの結合などしていること、ファイルサイズがそれほど大きくないことから今回は手作業でExcelファイルの中身を整形することにしました。

欠損値を0に置換、説明変数にするものの名前を数字とアルファベットの列に変え,桁区切りのコロンの除去、説明変数の名前付けを行いました。

以下で手順を簡単に示します。

slide1 slide2 slide3 slide4 slide5 slide6 slide7 slide8 slide9

・目的変数の作製
今回は都道府県別自殺率のデータを目的変数とします。

slide10 slide11 slide12 slide13 slide14

・パッケージの読み込み
install.packages(“randomForest”,dependencies=T)
library(randomForest)

slide16 slide17

・得られたパラメータを使用してモデル作成(randomforest)

rf3=randomForest(suiciderate~., data=t, mtry=17, ntree=500,importance=T)

・説明変数の目的変数への重要度のプロット

varImpPlot(rf3)

slide18 slide19

今回は細かく解析はしませんが、こんな感じに、オープンデータから、回帰用の説明変数を作成し、外から何か調べたい変数(今回でいうと各都道府県の自殺率)をとってきて、モデル作成して、説明変数から目的変数への重要度を算出し、特に重要な説明変数に関して、説明変数と目的変数の散布図を作ることで、説明変数と目的変数の関係性を理解する(正の相関か、負の相関か、反比例かなど(今回は実は負の相関または反比例であることが多かった))という流れになります。関係性の理解が済んだら、各説明変数の理解をしていくことになります。たとえば上の図でいうと、薬剤情報提供料とは何か?など。

今回はここまでにします。

鈴木瑞人
東京大学大学院新領域創成科学研究科 メディカル情報生命専攻 博士課程1年
一般社団法人Bizjapan(http://bizjapan.org/en/)
東京大学機械学習勉強会(http://www.machine-learning-r.com/)

 

 

 

 

2024.9  
未経験者必見!『キャリアリターン採用』開始しました  詳しく