ベイジアンネットワークを用いた胃潰瘍罹患者における薬剤処方パターンの探索

【はじめに】

こんにちは。データサイエンスチームです。

今回はPREVENT社内に蓄積されたレセプトデータを用いて、因果探索を行なった事例を紹介します。

因果探索とベイジアンネットワークについて

ここで因果探索を改めて整理します。

因果分析は、①因果の報告の決定と②因果の方向を既知として因果の有無の評価に2分されます。①は因果探索、②は因果推論と呼ばれます。特に難しいとされているのは因果探索で、複雑なデータから因果構造を見つけ出すのは至難の技です。そこで着目されている手法の一つがベイジアンネットワークです。

ベイジアンネットワークは有向グラフィカルモデルで、確立変数間の依存関係をグラフで表現することができます。複雑な因子間の関連を可視化することができ、明確な仮説情報がない状況においてもネットワークモデルの構築が可能です。

ヘルスケア分野における応用例としては、生活習慣の改善意思に影響を与える要因の地域性の可視化*1や健康診断の問診と検査値の可視化*2が行われており、因子間の関連が複雑化するヘルスケア分野でのグラフィカルモデルの有用性が示唆されています。

レセプトについて

公的医療保険制度の運用に必須な診療報酬明細書(以下、レセプトといいます。)は、医療費の記載のみならず、疾患や服薬、診療行為、入院などの保険制度の意思決定に重要なデータが蓄積されおり、医療分野における主要なビックデータとして利活用することが求められています。

一方で、縦断(経年)でのデータ結合が困難なことや診療報酬明細の特色が強く疾患名の記載について不正確であることなど活用するにあたりいくつかの問題点があります。これらの問題点をうまく回避することで、明確なイシューに対して議論することができます。

今回の趣旨

PREVENTでは、名古屋大学腎臓内科と共同研究を実施しています*3。共同研究に参加いただいている今泉先生と前川先生から専門分野内でのクリニカルクエッションをいただき、ベイジアンネットワークでの可視化について検討しました。

テーマは、胃潰瘍とNSAIDs、抗うつ薬クリニカルパスの可視化です。過去の報告から、抗うつ薬であるSSRISNRIの服用により上部消化管出血が増加するといわれています。また、NSAIDsの併用により出血を増強させるとも言われています。今回、抗うつ薬とNSAIDsと上部消化管出血(胃潰瘍)の関係をベイジアンネットワークで再現できるか試みました。さらに、制酸薬を加えた時に因果構造がどのように変化するかについても検討しました。

【方法】

データセット

2014年度から2018年度(2014年4月から2019年3月まで)の5年間の匿名化データ(134,680人分)を分析対象としました。胃潰瘍診断の定義は、医科レセプトおよびDPCレセプトにICD10コードのK25に属する全27件の傷病名が記載されているものとしました*4抗うつ薬やNSAIDs、制酸薬等の薬剤服用の定義は、医科レセプト、DPCレセプト、PHAレセプトに胃潰瘍診断された月以前に該当の薬剤が記載されたものとしました。薬剤の処方期間や処方量、処方回数については今回考慮していません。

f:id:D_Sk:20210712132837p:plain

Fig 1. 疾患、処方の有無の集計

2014年4月から2019年3月までの5年間において1ヶ月ごとに疾患、処方の有無を集計しました。その月に胃潰瘍ある場合をオレンジ色で、薬剤処方がある場合を緑色で示しています。薬剤服用ありなしの判断は胃潰瘍の診断前の期間で集計し、胃潰瘍の有無と合わせて、ベイジアンネットワーク解析のため0,1のバイナリデータセットを作成しました。

ベイジアンネットワークの実装

ベイジアンネットワークの実装は、pythonのライブラリpgmpyを用いて簡単に行えます。 ライブラリpgmpyは、pipを用いてダウンロードします。

$ pip install pgmpy

今回は変数間の関係とその方向性を明らかにする因果探索がメインとなるので、ConstraintBasedEstimatorを用いました。(https://pgmpy.org/_modules/pgmpy/estimators/ConstraintBasedEstimator.html

from pgmpy.estimators import ConstraintBasedEstimator

ConstraintBasedEstimatorでは、one-hotのデータセットから各々の変数の確率を算出し、変数の独立依存性を検定します。この時に得られる独立でない(関係性のある)変数間の構造をスケルトンといいます。その後、スケルトン構造に対して、V-Structureやオリエンテーションルールに則って方向性を付与していきます。 以下、胃潰瘍や薬剤服用の有無を集計したone-hotデータセット(dataset)によるベイジアンネットワーク探索のコード例です。

skel, seperating_sets = dataset.estimate_skeleton(significance_level=0.05)
print("Undirected edges: ", skel.edges())

pdag = dataset.skeleton_to_pdag(skel, seperating_sets)
print("PDAG edges:       ", pdag.edges())

model = dataset.pdag_to_dag(pdag)
print("DAG edges:        ", model.edges())

print("DAG edges: ", model.edges())で、どの変数にどのような方向性の因果関係があるかが表示されます。例えば、(変数A, 変数B)ならば、「変数A->変数B」という変数間の関係性が得られたことが示されます。一方で、一部の変数間では方向性が同定できずにスケルトン構造のままのところがあります。その場合は、変数間の時間的順序に基づいて方向性を決定します。それでも難しい場合はBICによるスコアリングを用いて全体のネットワーク構造を決定します。 以下、BICを求めるコード例です。

from pgmpy.models import BayesianModel
from pgmpy.estimators import BicScore

BN_model = BayesianModel(DAG_edges)
BIC = BicScore(dataset).score(BN_model)
print(BIC)

今回は使用していませんが、得られた結果をnetworkxライブラリを用いて可視化できます。

import networkx as nx
import matplotlib.pyplot as plt

DAG_model = BayesianModel(DAG_edges)
nx.draw_circular(DAG_model, with_labels=True, arrowsize=30, node_size=2000, alpha=0.3, font_weight='bold')
plt.show()

また、得られたネットワークモデルからget_cpds()を用いて条件付き確率表を作成することも可能です。

BN_model.fit(dataset)

BN_model.get_cpds({変数名})

【結果】

抗うつ薬とNSAIDsと胃潰瘍の関係

抗うつ薬やNSAIDs服用者の人数は以下の通りです。

対象 134680人
男性 83662人
40歳以上 83742人
胃潰瘍罹患者 13569人
SNRI服用者 2004人
NSAIDs服用者 74894人

抗うつ薬とNSAIDsと胃潰瘍のネットワークモデルをFig 2に示します。NSAIDs -> SSRI -> SNRIの関係が示されました。SNRIの服用は性別と年齢に影響を受けること、NSAIDsの服用は年齢に影響を受けることが示されました。

f:id:D_Sk:20210712132847p:plain

Fig 2. 抗うつ薬とNSAIDsと胃潰瘍の関係

抗うつ薬とNSAIDsと胃潰瘍のネットワーク構造に制酸薬を加えた場合

制酸薬の種類とそれぞれの薬剤服用者の人数は以下のようになりました。この検討では、SNRISSRI以外の抗うつ薬としてNaSSAも加えています。NaSSAはSNRISSRIと異なり上部消化管出血に寄与しないと報告されています。

対象 134680人
プロトンポンプ阻害薬服用者 14180人
プロスタグランジン服用者 249人
レバミピド服用者 52805人
テプレノン服用者 13380人
ヒスタミンH2受容体拮抗薬服用者 15785人
スクラルファート水和物服用者 766人
NaSSA服用者 931人

ネットワークモデルの結果ですが、有向巡回グラフ構造がみられました(Fig3. ①、②)。胃潰瘍からNSAIDsに向かう方向性がみられ、時間的順序と相反する結果となりました。さらに、胃潰瘍抗うつ薬との関係は独立関係となりました。

f:id:D_Sk:20210712132842p:plain

Fig 3. 抗うつ薬とNSAIDsと制酸薬と胃潰瘍のネットワーク構造

ネットワークを構成するための変数を増やすとそれだけ計算時間が増加し、さらに関係性の解釈が複雑になってしまいました。そこで、次の検討では制酸薬や抗うつ薬を種類分けせずにできるだけ変数を減らしネットワークモデルを単純化しました(Fig 4.)。制酸薬の服用は性別、年齢、抗うつ薬の服用、NSAIDsの服用に影響を受けること、また、胃潰瘍の有無は性別、年齢制酸薬の服用、NSAIDsの服用に影響を受けることが示されました。

f:id:D_Sk:20210712132850p:plain

Fig 4. 抗うつ薬とNSAIDsと制酸薬と胃潰瘍の単純化したネットワーク構造

【考察(所感)】

関連が未知の複数因子に対して、ベイジアンネットワークにより因果探索を実施できるのかという点については、統計的に導いたとしても要素が複雑化すると解釈が困難になるため、可視化だけでは困難でした。これはレセプト特有の問題ではなく、因果探索の難しい点でした。しかし、専門家と共同で行うことでデータからの可視化と臨床的な知見、専門知識によって様々な討論ができました。レセプトをグラフィカルモデルによって可視化するメリットが示唆されました。  

【まとめ】

今回の検証では1. 年度単位での薬剤判定、2. onehotの判定(複数回の処方の丸め込み)によってベイジアンネットワークの構築を試みました。1と2により時間因子を丸め込みバイナリーデータとして扱っているため、グラフィカルモデルにより因子間の関連について可視化するに留まりました。レセプトは薬剤処方の期間や頻度の情報を保有していますので、テーマを絞ることで因子構造を検討することができます。期間と頻度に着目すればレセプトのみからでも、薬剤処方と目的因子について偏相関係数を求め、因果推論までできるのではないかと考えています。この点についてはテーマを絞り、検討する予定です。