【製薬会社様の解析事例】MRの営業活動による薬品売上への影響度を解析

この記事を書いた人
知己松本

筑波大学大学院システム情報工学研究科卒業後、新卒でDATUM STUDIOへ入社。その後、Nextremerに転職しAI関連の研究開発に従事。独立を経てpiponにジョイン。

はじめに

現在、新型コロナによる影響でMRは医師への訪問をすることが難しい状況が続いています。そんな中、MRの営業活動が薬の売上にどのように影響しているかを振り返る重要性が高まっているかと思います。今回は、MRさんが日々行う営業活動(メール、電話、セミナー運営等々)が売上にどのように影響をしているかを、時系列で捉えて解析する手法について解説したいと思います。まずは、時系列解析とは何かを解説します。

時系列データとは

時系列解析では、時系列データを解析します。時系列データとは、データの値1つ1つが時間との関連を持ったデータのことです。例えば身近な時系列データとして、株価の推移があります。1秒ごとに株価が変動しているとすると、現在から1秒後の株価は現在の株価を基準に上がったり、下がったりします。現在の株価が10000円だったとして、1秒後に500円になり、さらに1 秒後に14000円になったりといった乱高下は基本的にないことになります。(そもそも株価は、前日の終値に対して値幅制限まで株価が上がったり下がったりすると取引が停止されるので、株取引においてはこのような乱高下は仕様上ありません。)1秒後の株価は現在の株価”付近”の値に変動するはずです。そして更に1秒後には1秒前の株価付近の値に変動し・・・ということを繰り返すことによって、お馴染みの横軸に時間、縦軸に株価をとった折れ線グラフが出来上がるわけです。このようにデータの性質を語る際に時間と一緒に語られる必要があるようなデータを時系列データと呼びます。

構造化データ

ここで構造化データのお話を少ししておきましょう。構造化データとは行と列からなるデータのことです。エクセルを想像していただくと分かりやすいと思います。多くの場合、行はサンプル(標本)を特定するために用いられ、列は変数を特定するために用いられます。例えば健康診断を行って構造化データとしてまとめることを考えてみます。1行目には1人目の情報、2行目には2人目の情報・・・といった具合にデータが入っていきます。各列には健康診断の検査項目、例えば1列目には身長の値、2列目には体重の値、3列目には血圧の値・・・といった具合にデータが入っていきます。時系列データの特徴は行が時間を特定するのに用いられる点です。先程の株価の例では1行目には12時30分0秒の情報、2行目には12時30分1秒の情報、3行目には12時30分2秒の情報、といった具合になります。

一般の回帰モデルと時系列解析

自己回帰モデル(ARモデル)といった時系列解析で用いられるモデルの多くは重回帰分析の枠組みで説明することができます。(ARモデルを拡張したARIMAモデルなどをこちらの記事で解説しています)

しかしここではあえて時系列解析と(重回帰分析を含む)一般の回帰モデルを別物と考えてみます。構造化データを解析することを考えると、このとき時系列解析と一般の回帰モデルは以下のように使い分けることができます。

一般の回帰モデル:構造化データの行の順番を入れ替えても解析に影響がない

時系列解析:構造化データの行の順番を入れ替えると解析に影響がある

先程の健康診断の例は一般の回帰モデルでの解析対象になり得るデータです。行は健康診断を受けた順番を表しており、例えば1番目にAさんが健康診断を受けて、2番目にBさんが健康診断を受けたとしたとき、データ上は1行目にAさんの情報、2行目にBさんの情報があるわけですが、1行目にBさんの情報、2行目にAさんの情報と行を入れ替えても解析には影響がなさそうです。なぜなら、誰が何番目に健康診断を受けるかには決まった規則がなさそうだからです。一般の回帰モデルでは、このような構造化データの行を入れ替えても問題がないようなデータを扱います。

一方、株価の例は時系列解析の対象になり得るデータです。行は時間を表しており、そこには1秒ごとに1行データが追加される形になっています。このとき、行の順番を入れ替えて1行目に12時30分4秒のデータ、2行目に12時30分25秒のデータ、3行目に12時30分13秒のデータとなっているとどうでしょうか。データの特徴を捉えるのが難しくなると直感的に感じるのではないでしょうか。時系列解析ではこのように構造化データの行を入れ替えることができないようなデータを扱います。

薬の売上とMRの活動の分析に時系列解析を用いた理由

薬の売上データは時系列データに分類されると考えたためです。例えば風邪薬の売上を分析することを考えてみます。夏には風邪が流行らないので売上は低く、秋から冬に季節が変わるにつれて風邪が流行ることによって売上が高くなるといった傾向があると思われます。このように時間の流れのよって風邪薬の売上が変動すると考えられるため、風邪薬の売上データは時系列データに分類されると考えられます。今回弊社で行った分析対象は風邪薬ではありませんが、同様に時間変化にともなって売上が変動すると考えたため、時系列解析を用いました。

状態空間モデルを用いたメリット

時系列解析のモデルの中でも、今回の解析では状態空間モデルを用いました。状態空間モデルは、自己回帰モデルといった多くの時系列解析のモデルを統合的に扱うことができるモデルで、ベイズ統計学の考え方を用いたモデルです。ここでは一般的なトレンド項と呼ばれる隠れ変数をモデルの中に組み込んだものを状態空間モデルと呼んでいます。隠れ変数とは実際に観測できていない変数のことで、データとして手に入っていない変数のことです。観測できていない変数の値を推定することができるのかと驚かれるかもしれませんが、ベイズ統計学では(モデル内のパラメータを含む)変数間の関係を確率分布という道具を通して表現することにより、観測できている変数(データ)の情報から観測できていない変数、隠れ変数の値を確率分布として得ることができます。ベイズ統計学を用いない場合、隠れ変数の存在はモデルの中に組み込まれるものの、推定時に隠れ変数を積分消去することが多いです。つまり、隠れ変数の値を最終的なアウトプットとして得ることができませんので、隠れ変数の値を確率分布として得られるのはベイズ統計学のモデル(ここでは状態空間モデル)を使用するメリットになります。(状態空間モデルの詳細な解説はこちらの記事で解説しています。)

また今回の解析の目的はMRの営業活動が薬の売上にどれだけ寄与しているのかを調べることでした。そこでトレンド項に加えてMRの複数の営業活動を定量化する項をモデルに組み込みました。MRの営業活動は医師にコンタクトを取った回数や説明会を開いた回数といったものです。したがって解析の結果、MRのそれぞれの営業活動がどのくらい薬の売上に影響しているのかが定量的に分かるようになります。例えば説明会を1回増やすと薬の売上が大体いくらくらい増えるといったことが分かるようになります。ベイズ統計学のモデル(ここでは状態空間モデル)ではこのMRの営業活動の薬に対する影響度はトレンド項と同様に確率分布として得られることになります。

状態空間モデルを用いるとどのような解析結果が得られるか

状態空間モデルをもちいたメリットでも述べたとおり、状態空間モデルでは諸々の結果を確率分布として得ることができます。つまり解析の結果、推定結果に不確実性がどれくらいあるのかということを知ることができます。

薬の売上に対するMRの営業活動(例えば説明会を開く回数)の影響度が推定されたとします。この影響度は常に同じ値を取る、つまりその影響度がBと推定されたのならば「説明会の回数を1回増やすと売上が常にC上がる!」と考えるのが自然でしょうか。それともその時々で様々な値を取る、つまり「説明会の回数を1回増やすと売上が常にD上がることもあればE上がることもある」と考えるのが自然でしょうか。おそらく後者の方が自然に感じるのではないでしょうか。ベイズ統計学のモデル(ここでは状態空間モデル)では結果は確率分布として得られるので、例えば「説明会の回数を1回増やすと売上が(モデルに組み込まれている仮定が正しいとした上で)95%の確率でD〜E上がる」と述べることができます。

また諸々の得られた結果を用いて、もしMRがこのような営業活動をしたならば1ヶ月後の売上はどうなるかということを予測したいとします。これは推定されたトレンド項とMRの営業活動の影響度を用いることで行うことができます。このとき得られるのは1ヶ月後の売上の確率分布です。したがって例えば売上は(モデルに組み込まれている仮定が正しいとした上で)95%の確率でX円〜Y円になる、と述べることができます。これはいわゆる機械学習のモデルで予測したときと大きく異なります。一般的な機械学習のモデルは「1ヶ月後の売上はZ円です!」という1つの予測しか出してくれません。ところがピタリとこの予測が当たることはまずないでしょう。当たらないのであれば、どれくらい予測が実際の値と乖離する可能性があるのかを知りたくなりませんか?ベイズ統計学のモデル(ここでは状態空間モデル)を用いることでそういった要望に答えることができます。