その他HSPH関連

医者が使う統計ソフトの選び方:総論

データをある程度自分で解析するためには、統計ソフトが必要になります。でも、どのソフトを使えば良いのか悩みますよね。今回のシリーズでは、医師(MD)が研究・データ解析を行う際に候補となる統計ソフトについて、日本、そしてハーバード公衆衛生大学院と関連病院で研究を行ってきた経験を元に、それぞれのソフトの特徴や人気度、使用する人の背景などについて述べたいと思います。

シリーズ①として、今回は、プログラミングのようなコード(code)の打ち込みの必要な統計ソフトと、そのようなコーディング(coding)が不要な統計ソフトに大別し、それぞれのメリット・デメリットについて語ろうと思います。

“Code”とは、パソコンへの命令を文字にしたものです。計算式だけでなく、文字を小文字で表示したり、表やグラフを描いたり、実は何でもcodeで指示することができます。そして、データの解析(統計)も、コードで指示することができます。

例えば、Rという解析ソフトを用いてt検定を行う場合、

と打ち込みます。datというデータのsheetにおいて、malesexという列=1である群と、malesexという列=0である群の間で、BMIという連続変数を比較しています。

一方、codingが不要なソフトの場合、データを読み込んだ後、BMImalesexというマウスで選択し、t検定というボタンを選択することで、同様の解析を行うことができます。

Codingが必要なソフト

解析時、上記のようなcodeを打ち込む必要がある統計ソフトのことです。R, Python, SAS, STATAといった統計ソフトがこちらに分類されます。それぞれのソフトの特徴は、次の記事をご覧ください。

「Codeを打つなんて面倒臭い」と思われるかもしれませんが、実は以下のような利点があります。

メリット

それぞれのソフトに必要な”言語”さえ理解し、codeが書けるようになれば、負担は圧倒的時に軽減されます。何故でしょうか。

1. 解析のやり直しが楽

サンプルが追加になったなどで元データが変わった際、codingが不要なソフトを用いて解析していた場合、全ての解析をやり直す必要があります。データを読み込み、解析方法を選択し、回帰分析であればその変数を決める、といったプロセスを、毎回行わなければなりません。単変量・多変量など、100個の解析があった場合、100回の解析をもう一度初めから行わなければなりません。

一方、codingで解析を行うソフトであれば、全てのコードが残っていますので、読み込むデータを変更するだけで残りの解析全て自動で行ってくれます。100個解析があろうと、他は何も変更する必要がありません。文字通り、「一瞬で」修正できます。

2. Data cleaningが可能

そもそも、データとは初めから解析に適した形式ではありません。統計ソフトで解析できるような状態にするには、“data cleaning”といってデータをキレイに整える必要があります。実施に大きなデータを扱って研究をした人ならわかると思いますが、このdata cleaningが最も大変な作業です。臨床研究で言えばこのdata cleaningが全体の9割程度の労力を必要とし、統計の解析に必要な労力なんて残りの1割程度です。

Codeを理解してない人がdata cleaningを行う唯一(?)の方法は、Excelではないでしょうか。これもやった人ならわかると思いますが、とっっっっても大変ですよね。大きなデータになるとExcelは動きが重くなり、頻繁にfreezeしてしまいますし、ミスを犯した際もそれを修正するためには非常に手間がかかります。

Excelでdata cleaningを行なっていた頃、ミスを犯した場合にその前のデータに戻れるよう、cleaning中のデータを頻繁に別名保存していました。しかし、初期段階でミスをしていた場合、そこから全てを修正しなければならないため、気が遠くなる思いをしたことが何度もあります。

しかし、特にRやPythonはdata cleaningも簡単にできます。Excelよりも、数百倍簡単です。そして、もし仮にミスを犯していても、当該部分のcodeを修正するだけで万事okです。こちらも文字通り、「一瞬で」修正後のdata cleaningが完成します。

Data cleaningと解析の修正力は、codeを練習する時間を考えても余りあるメリットです。ミスを犯して全てやり直すのに2週間かかるようなケースであっても、RやPythonであれば5秒で修正完了です。

留学するまでは、私はExcelでdata cleaningを行い、JMPで解析していました。当時はそれが普通だと思っていましたし、大半の医師はそうだと思います。

そして、留学して初めてRやPythonに出逢いました。Cleaningから解析まで全てRやPythonでやるわけですが、その利便性・時間の節約には度肝を抜かれました。何故以前はあんなに面倒なことをコツコツしてたのでしょう。今考えると、馬鹿みたいと思ってしまうほどです。

3. 信頼性(再現性)が高い

上記のメリットと共通しますが、やはりcodeが残っていることが良いことです。研究は、誰がやっても同じ結果になるという「再現性」が大切です。Codeと元dataがあれば、誰がやっても同じ結果になります。これまでの研究の多くがこのような再現性に乏しいと言われていますので、data cleaningも含め解析過程を全てcodeにして残すということはとても重要になります。

4. 動きが軽快

統計ソフトに限らず、MicrosoftのWordやPower pointといった、ボタンをクリックして動かすソフトウェアは、動きが重い傾向にあります。それは、ボタンをクリックすることでcodeに変換し、パソコンに命令する、という手順をおっているためです。一方、codeを打ち込むタイプのソフトは、そのようなプロセスをスキップして直接パソコンに命令することができます。そのため、気持ちいいほどサクサク動きます。

デメリット

一方、codingするタイプの統計ソフトにも、当然デメリットがあります。

1. プログラミング言語の勉強が必要

ほぼ唯一にして最大の問題点でしょう。特に、パソコンに詳しくない人にとっては、programやcodeという言葉を聞くだけで、「自分には無理」と思ってしまうこともあるかと思います。

しかし、後述のように、そうとも限りませんので安心してください。

Codingが不要なソフト

簡単に言えば、上記の逆ですね。

メリットとしては

  • プログラミング言語を知らない初心者でも簡単に使える
  • Codeの練習が要らない

デメリットとしては

  • 解析のやり直しが面倒
  • Data cleaningはExcelなど他のツールを使う必要がある

といったところでしょうか。

Codingの習得は難しいのか

統計ソフトで使うようなcodeを自分で理解し、書けるようになることは、どのくらい難しいことなのでしょうか。参考までに、私の経験をシェアします。

私は、今も昔もパソコンに疎い人間です。留学するまでは、”R”, “Python”, “SQL”といった言葉を全く聞いたことがありませんでした。恐らく多くの臨床家がSPSSやJMPとったcodingが不要な統計ソフトを使って研究をしていると思いますし、私もその一人でした。周囲にもそうでない人(codingを使って解析している人)が居なかったので、Excelを使ってdata cleaningを行い、codingが不要な統計ソフトを使って解析することに、何の疑問も持っていませんでした。

しかし、留学して初めてSASやSTATA、R、Pythonという様々な言語を使った統計ソフトの存在を知りました。そして、それらを使えることが、決して特別ではなく、ある意味当たり前のことであることも知りました。

そして、いざ勉強を始めると、意外に簡単であることがわかりました。例えば、Rの勉強を初めて1ヶ月を過ぎた頃からR言語を「読める」ようになり、3ヶ月を過ぎた頃にはかなり自分で「書ける」ようになっていました。勉強を初めて半年も過ぎた頃には、講義の宿題や自分の研究も含め、ほぼ全てRでできるようになっていました。

まとめ

確かに、codingが必要な統計ソフトを使うためには、codeの読み書き(”言語”の習得)が必要になります。使えるようになるためには、ある程度の勉強時間が必要です。しかし、習得できた時には非常に強力な武器になります。もし少しでも興味がある人は、ぜひチャレンジしてみてください。

次回はそれぞれの統計ソフトについての各論を記事にしますので、是非ご覧ください。

ABOUT ME
木村聡
福岡県の研修病院で初期研修修了後、大学に入局。米国オハイオ州に臨床研究で留学するも、知識の欠如を痛感。ハーバード公衆衛生大学院に進学し、MPHを取得。マサチューセッツ工科大学メンバーとの共同研究などに関与。 日本では麻酔・集中治療医として働き、オーストラリアでは小児集中治療を一から学び直しています。 乗り越える壁を見つけ続けることは、なかなか簡単ではありませんよね。アラフォー目前、様々な壁にぶち当たり、それなりに多くの経験をしてきました。私の挑戦や経験・知識、失敗談などが、他の誰かの刺激になり、役に立つことを切に願っています。 プロフィールをもっと詳しく見る

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です