2016年12月22日木曜日

対応分析

昨夜からずっと対応分析について考えていましたがどうにもよくわかりません。クラスター分析はサンプル間の「距離」を計算して類似度を求め,クラスターに分割する手法なので直感的にわかりやすいのですが。
そもそも対応分析の結果に示される座標系はいったい何なんでしょう?そこからすでにわかりません。そこで,いろいろなサイトを調べてみました。わかりやすいかどうかは別にして,参考になりそうなものをいくつかリストします。
  1. コレスポンデンス分析とは 
  2. コレスポンデンス分析/カテゴリー間の関係を視覚化する分析
  3. 対応分析法・数量化法III類の考え方
  4. 対応分析入門 原理から応用まで 解説◆Rで検算しながら理解する
  5. 【連載】記述的多変量解析 - 対応分析(コレスポンデンス・アナリシス) 
これらを読んでいると,どうやら対応分析は主成分分析に似た分析手法のようです。主成分分析の場合は量的データ(四則演算可能なデータ)を扱いますが,対応分析の場合はカテゴリカルなデータを扱うとのことです。いまいちよくわかりません。

考え方が間違っていました

KH Coderについて書いた昨日のブログは間違っていました。昨日は,単語がサンプルで,その特徴量が文だと書きましたが,これは反対ではないでしょうか。つまり,文がサンプルで,特徴量が単語です。単語はその分を特徴づけているわけですからこの考え方は自然です。たとえば野球について書かれた文の中にはピッチャーやストライク,ホームランといった単語が出てくるでしょう。それに対してサッカーについて書かれた文にはペナルティキックやロスタイム,ドリブルといった単語が出てくるでしょう。それらの単語が文(の意味やテーマ)を特徴づけているのですから。
私たちの研究で考えるなら,サンプルは疾患について書かれた文(以降,これを疾患定義文と呼ぶことにします)で,特徴量は症状です。つまり,疾患定義文は症状によって特徴づけられているわけです。特徴ベクトルの要素として,疾患定義文に対応する症状が登場するかしないかでそれぞれ1, 0の値をとるような症状ベクトルを考えると,各疾患は症状ベクトルによって特徴づけられ,それらが近接している場合は類似した疾患と分類されるでしょう。これはまさに理にかなっています。おそらくクラスター分析もこのような考え方で行っているのではないでしょうか。
ところで,各々の疾患定義文が含む症状の数はまちまちです。ですから,文の長さによる違いを除去するために何らかの方法で正規化する必要があるかもしれません。また,同じ症状が複数回登場することもあるでしょう。そのような症状はその疾患について重要な特徴であることを示しています。さらに,登場回数は少なくてもすべての疾患定義文における登場回数が少ない症状は,その疾患の特徴を表す重要な症状と言えるでしょう。ですからこれらも考慮に入れるべきです。そう考えると,症状の有無や登場回数だけで特徴ベクトルを表現する方法は好ましくありません。そこで,特徴ベクトルの各要素にtfidfを利用することが考えられます。tfはterm frequencyのことで,ある一つの疾患定義文に登場する症状tの出現回数です。そして,dfはdocument frequencyのことで,これは疾患定義文全体に登場するtの出現回数です。tfidfのiはinverseのことで,tfをdfで割ることを意味しています。こうして先に述べた問題点を解消した特徴ベクトルを作ることができます。

2016年12月21日水曜日

KH Coder

K君が実に興味深いフリーソフトを探してきてくれました。KH Coderです。これは,テキストデータを統計的に分析するフリーソフトウェアで,いわゆるテキストマイニングって奴ですね。これを使うと今やっている研究にかなり役立ちそうです。しかし,ざっとサイトを眺めただけでは使い方や結果の解釈の仕方がよくわかりません。そこで,このサイトで紹介されている参考書「社会調査のための計量テキスト分析」を購入することにしました。KH Coderのリファレンスマニュアルも掲載されているということなので役立ちそうです。
もっとも興味深いのは,「Rによる多変量解析と可視化」です。 ここでは,「階層的クラスター分析」をはじめ,様々な解析手法が紹介されており,とても興味深いです。ただし,このサイトからだけではそれぞれの解析手法がどのような仕組みで作られているかや,得られた結果をどのように見ていけばよいのかがわかりません。これについては注文した本が届くのを待つしかなさそうです。

クラスター分析

クラスター分析について解説されたこのサイトを見ると,サンプル間の距離を求めてそれを使ってクラスターに分けているようです。では,距離とは何か?
このサイトには「都道府県の特徴データ」を使った距離の定義方法が紹介されています。いろいろなやり方があるみたいですね。ここで重要なのは「特徴量」ベクトルです。「都道府県・・・」の場合は人口や降雪量,漁獲量,・・・といったデータを特徴量に使っていました。では,テキストマイニングの場合はどのように考えたらよいのでしょうか?
まず,サンプルとは何でしょうか?おそらくテキストから抽出した単語でしょうね。KH Coderの「抽出語・クラスター分析」を見ると単語をクラスターに分けていることがわかります。では,そのサンプル(つまり単語)の「特徴量」とは何でしょうか?
これについては明確な記載がありません。これは想像ですが,文(センテンス)が特徴量ではないでしょうか?例えば,解析対象の文がN個あるとして,それをD1, D2, ..., DNとします。そして,これらの文から抽出したある単語Wiがそれらの文に含まれるか(1)含まれないか(0)を要素とするベクトル(1, 0, ..., 1)を考えます。こうして作られた「特徴量」ベクトルが類似していると(たとえば頂点間のユークリッド距離やベクトルの内積,あるいは余弦などを使って類似度を計算),サンプル間の距離は小さいと判断するなどです。
この考え方があっているかどうかはわかりませんが,いずれにせよ,テキストから抽出した単語が個々のサンプルであることには間違いないでしょう。そして,各サンプルには何らかの特徴量が付随しているはずです。わたしは,それを単語を抽出した文(センテンス)と考えました。
では,なぜ文(正確には文に含まれる・含まれないという変量)が特徴量なのでしょう?
個々の文に個性がなければ特徴量とは言えません。しかし,もし,個々の文が何らかのカテゴリを持っていたら?例えば,この文は「子宮筋腫」について説明した文書,この文は「子宮内膜症」について説明した文,・・・といった具合に。そうすれば,ある単語がそれらの文(=カテゴリ)に登場するか否かを要素とするベクトルは立派な特徴量ベクトルと言えるでしょう。2つの単語(サンプル)の距離が近いということは疾患を説明する単語として類似している語と言えるのではないでしょうか。この方法で分析された単語は,疾患を説明する単語という観点から分析されていることになります。
例えばクラスター分析であれば,同一クラスターに分類された単語は疾患を説明する上で近い概念を表していると言えるかもしれません。共起ネットワークであれば,同じ疾患の説明文書に共起することが多い単語がネットワークで結ばれるでしょう。

今日のゼミで決まったこと

今日のゼミでは疾患と症状の区別がつきにくいということで,まず,みんなで手分けして疾患リストを作成しようということになりました。婦人病に関する疾患を紹介しているサイトや病院や診療所のサイトから婦人科疾患を収集します。その後,収集した疾患をマージし,最終的に今回の研究の対象となる疾患を絞ります。

2016年12月20日火曜日

テキスト解析

Yahooデベロッパーネットワークというサイトにテキスト解析というのがあります。今日はその中から「キーフレーズ抽出」というWebAPIを使ってアプリを作ってみます。この「キーフレーズ解析」というのは,「日本語文を解析し、特徴的な表現(キーフレーズ)を抽出」するということです。たとえば次の分からキーフレーズを抽出してみます。
基本的な症状は「痛み」です。 内膜症のある場所、大きさ、癒着の程度などによって症状はさまざまですが、主に生理痛や下腹部痛、腰痛、性交痛、排便痛、慢性骨盤痛などが現れます。 痛み以外では、不正出血が見られたり、経血量が多かったり、レバー状の塊が出ることもあります。
その結果,このWebAPIは,次のようなXML形式でキーフレーズを返してきます。
<?xml version="1.0" encoding="UTF-8"?>
<ResultSet xmlns="urn:yahoo:jp:jlp:KeyphraseService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:jp:jlp:KeyphraseService http://jlp.yahooapis.jp/KeyphraseService/V1/extract.xsd">
  <Result>
    <Keyphrase>慢性骨盤痛</Keyphrase>
    <Score>100</Score>
  </Result>
  <Result>
    <Keyphrase>下腹部痛</Keyphrase>
    <Score>99</Score>
  </Result>
  <Result>
    <Keyphrase>症状</Keyphrase>
    <Score>98</Score>
  </Result>
  <Result>
    <Keyphrase>生理痛</Keyphrase>
    <Score>97</Score>
  </Result>
  <Result>
    <Keyphrase>不正出血</Keyphrase>
    <Score>95</Score>
  </Result>
  <Result>
    <Keyphrase>内膜症</Keyphrase>
    <Score>95</Score>
  </Result>
  <Result>
    <Keyphrase>性交痛</Keyphrase>
    <Score>93</Score>
  </Result>
  <Result>
    <Keyphrase>排便痛</Keyphrase>
    <Score>91</Score>
  </Result>
  <Result>
    <Keyphrase>経血量</Keyphrase>
    <Score>89</Score>
  </Result>
  <Result>
    <Keyphrase>癒着</Keyphrase>
    <Score>89</Score>
  </Result>
  <Result>
    <Keyphrase>レバー状</Keyphrase>
    <Score>88</Score>
  </Result>
  <Result>
    <Keyphrase>腰痛</Keyphrase>
    <Score>64</Score>
  </Result>
  <Result>
    <Keyphrase>塊</Keyphrase>
    <Score>50</Score>
  </Result>
  <Result>
    <Keyphrase>程度</Keyphrase>
    <Score>47</Score>
  </Result>
  <Result>
    <Keyphrase>以外</Keyphrase>
    <Score>43</Score>
  </Result>
  <Result>
    <Keyphrase>場所</Keyphrase>
    <Score>39</Score>
  </Result>
</ResultSet>
作成するアプリのスクリーンショットは以下のようになります。
初画面(id="page1")文章を入力する画面

キーフレーズを抽出して一覧表示する画面(id="page2")
では,アプリを作成しましょう。 そのためには,まず,このWebAPIを使うためにはアプリケーションIDを取得する必要があります。ここから登録することができます。
メインとなるindex.htmlは次のようになります。
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <script src="components/loader.js"></script>
    <script src="js/app.js"></script>
    <link rel="stylesheet" href="components/loader.css">
    <link rel="stylesheet" href="css/style.css">
    <script>
        ons.bootstrap();
    </script>
</head>
<body>
    <ons-navigator var="myNavigator" page="page1.html"></ons-navigator> 
</body>
</html>
次にpage1.htmlは次のようになります。
<ons-page id="page1">
    <ons-toolbar>
        <div class="center">キーフレーズ抽出</div>
    </ons-toolbar>
    <br />
    <div>
        <textarea class="textarea" id="sentence" style="width: 100%; height: 300px">
        </textarea>
    </div>
    <div>
        <ons-button modifier="large--cta" id="keyphrase-button">キーフレーズ抽出</ons-button>
    </div>
</ons-page>
キーフレーズ一覧画面は次のようになります。
<ons-page id="page2">
    <ons-toolbar>
        <div class="left"><ons-back-button>Back</ons-back-button></div>
        <div class="center">キーフレーズ</div>
    </ons-toolbar>

    <div style="text-align: center">
        <ons-list id="keyphrase-list">
        </ons-list>
    </div>
</ons-page>
最後にapp.jsです。
var gAPPID = 'ここにAPPIDを書く';

$(document).on('pageinit', '#page1', function(){
    $('#sentence').val('基本的な症状は「痛み」です。 内膜症のある場所、大きさ、癒着の程度などによって症状はさまざまですが、主に生理痛や下腹部痛、腰痛、性交痛、排便痛、慢性骨盤痛などが現れます。 痛み以外では、不正出血が見られたり、経血量が多かったり、レバー状の塊が出ることもあります。');
});
    
$(document).on('click', '#keyphrase-button', function(){
    var options = {
        sentence: $('#sentence').val()
    };
    myNavigator.pushPage('page2.html', options);
});

$(document).on('pageinit', '#page2', function(){
    var page = myNavigator.getCurrentPage();
    var sentence = page.options.sentence;
    var url = 'http://jlp.yahooapis.jp/KeyphraseService/V1/extract';
    $.ajax({
        url: url,
        type: 'POST',
        data: {
            appid: gAPPID,
            sentence: sentence
        }
    }).done(function(xml) {
        listKeyphrase(xml);
    }).fail(function(XMLHttpRequest, textStatus, errorThrown) {
        alert("error");
    });
});

function listKeyphrase(xml) {
    var html = '';
    $(xml).find('Result').each(function(){
        var Keyphrase = $(this).find('Keyphrase').text();
        console.log(Keyphrase);
        html += '<ons-list-item modifier="chevron" class="keyphrase">' + Keyphrase + '</ons-list-item>';
    });
    $("#keyphrase-list").html(html);
    var content = $("#keyphrase-list").get(0);
    ons.compile(content);
}

2016年12月14日水曜日

ゼミのテーマが決まりました

ゼミのテーマが決まりました。症状から疾患を推定するアプリの開発です。手法としてはナイーブベイズ分類器を用います。仮題を次のようにしておきましょう。
ナイーブベイズ分類器を用いた症状から疾患を推定するアプリの開発と評価
まず予備実験をやってこの研究を前に進めてよいかどうかを判断することとします。そのために以下の材料を集めます。
  1. 推定対象となる疾患
  2. 疾患定義データ(疾患を定義する文書を各疾患について10個ずつくらい,疾患の数だけ集める)
  3. 症状を集めた医学辞書
  4. 形態素解析ツール
上記1についてはすでに64疾患が挙がっています。上記2は,疾患を定義したテキストデータです。上記3はテキストデータに含まれる症状を抽出するための辞書です。上記4は,テキストデータを形態素解析するためのツールです。「茶筌」を考えています。

2016年12月13日火曜日

症状から病名を診断すること

症状から受診すべき診療科を決めることはどのくらい難しいのだろうか。今回の卒業研究報告会に人工知能を使ってそれを実現するという内容の発表があった。しかし,どこで人工知能を使っているのか,また,その人工知能の手法(機械学習のアルゴリズムなど)については何の説明もなかった。ただ,IBMのWatosonを使っているとだけ言っていた。発表だけからは詳しいことはわからないが,①医学書を用いて各々の疾患にはどのような症状が出るかを調べた,②病院のホームページを調べて診療科リストとそれぞれの診療科で扱う疾患を調べた,③そして患者の症状から①によって疾患を求め,②によって診療科を決定するという内容のように理解した。しかし,症状から疾患は一意に決まるのだろうか。仮に一意でない場合,どうやって疾患を絞り込むのだろう。たとえば「発熱」は多くの疾患の症状として現れるだろう。また,診療科によって扱う疾患は決まるのだろうか。同じ疾患であっても外科的なアプローチと内科的なアプローチはあるだろう。

この手法の問題点は,症状→疾患→診療科という三段論法で診療科が決まるというあまりに非現実的で安易なモデル設定にある。現実には,症状から疾患を特定することはできない。できることは候補を確率をつけてリストアップすることくらいだろう。今はやりの人工知能がやっているのもそれに過ぎない。どんなに情報を集めても確定診断などできるはずがない。

では,どうやって症状から確率付きで疾患を割り出せばよいのか。それこそがWatsonなどの人工知能がやっていることである。人工知能は客観的な事実を収集し,得られた情報から結論を確率的に導く。Watsonは深層学習というものを使っているらしい。

学習アルゴリズムには数々の手法が提案されているが,もっとも直感的で実装が簡単な割にそこそこの精度があるナイーブベイズという手法がある。これは収集した情報から事前確率を計算し,手元にある事実から事後確率(つまり,条件付確率)を計算し,それを使って意思決定を行うというものである。

ナイーブベイズの理論的な土台はベイズの定理である。ベイズの定理は次のように定式化される。

$ P(Y|X)=\frac{P(Y)P(X|Y)}{P(X)} $

これは,事象$X$,$Y$が起きる確率をそれぞれ$P(X)$,$P(Y)$とし,事象$Y$のもとで事象$X$が起きる確率(これを尤度という)を$P(X|Y)$とした場合,事象$X$のもとで事象$Y$が起きる確率$P(Y|X)$を求める公式である。たとえば,$X$を症状,$Y$を疾患と考えた場合,この式は罹患率$P(Y)$と疾患$Y$を発症したときに症状$X$が現れる確率$P(X|Y)$から,症状$X$が出たときに疾患$Y$である確率$P(Y|X)$を求める計算式となる。

これは,見方を変えれば,事前確率から事後確率を求める計算式でもある。事前確率は,何も情報を持ち合わせていないときの確率で,ベイズの定理は,入手した事実によって事前確率を更新し,事後確率を得るという枠組みを示している。

つまり,患者の症状を知らない状況ではその患者がどのような疾患にかかっているかを判定するには罹患率$P(Y)$しかない。けれども,その患者の症状がわかれば,尤度$P(X|Y)$を使って症状を織り込み済みの罹患率(これが$P(Y|X)$)が得られるのである。こうして,症状織り込み済みの罹患率(事後確率)の大きい順に疾患をリストすればその患者の疾患候補を確度の高い順に並べることができるのである。

さて,では, $P(Y)$や$P(X|Y)$はどのようにして計算すればよいのだろう。これを医学的に(以後,医学モデルと呼ぶ)求めるのは医学の知識がない者には無理である。そこで,知識を医学文書(あるいは文献)に求めることを考える(以後,これを文書モデルと呼ぶ)。すなわち,入手可能な文献から疾患$Y$と症状$X$の関係性を求めるというやり方である。文献も一種の知識であるから,これはもっともな手法と考えてよい。

そこで,症状と疾患について書かれた文書$D_{i}$を収集する。たとえば「疾患$Y$には$X$の症状が現れる」といった文書である(このような記述は医学事典に豊富にあるだろう)。 次に,事前確率$P(Y)$と尤度$P(X|Y)$を求める。事前確率$P(Y)$は,全文書中の疾患$Y$について書かれた文書の割合とする。本来,事前確率$P(Y)$は罹患率であるが,文書モデルではその疾患についての文書がどのくらい頻繁にみられるかという程度を示している。しかし,ここに問題がある。文書の収集は恣意的である。必ずしも母集団から無作為に選んでいるわけではないだろう。言ってしまえば集めやすいものを集めているだけである。であれば,各々の疾患についての文書は等しく集めるのが無難だろう。そうすれば事前確率$P(Y)$は考えなくてよくなる。

次に尤度$P(X|Y)$であるが,これはその疾患について記述した文書の中で,その症状がどのくらい出やすいかを示すもので,疾患$Y$の文書に出てくる症状$X$の回数を,その疾患の文書に出てくる症状の総数で割ることにより求められる。

実際には症状は$X_{1},X_{2},...$と複数ある。したがって求める尤度は

$\prod_{i}P(X_{i}|Y)$

である。事前確率$P(Y)$は等しくなるようにデータを収集するので,求める事後確率$P(Y|X)$は上記の尤度に比例する。

具体例を考えよう。いま,「腰痛」「排便通」という症状からこれが「子宮内膜症」なのか「子宮筋腫」かを判別する問題を考える。「子宮内膜症」について書かれた文書には全部で症状が100個あり,そのうち,「腰痛」,「排便通」の出現数はそれぞれ30個,20個とする。同様に,「子宮筋腫」の場合は全部で80個の症状が書かれてあり,そのうち「腰痛」,「排便通」の出現数はそれぞれ10個,40個とする。すると, 「子宮内膜症」である事後確率は$0.3\times0.2=0.06$,「子宮筋腫」である事後確率は$\frac{10}{80}\times\frac{40}{80}=0.0625$となって,「子宮筋腫」であると判定できる。

  1. ナイーブベイズを用いたテキスト分類
  2. ナイーブベイズ分類器でTwitterの男女判別!
  3. MathJax

2016年12月11日日曜日

プライバシー情報を扱うスマホアプリから情報を収集する方法について

プライバシー情報を扱うスマホアプリで問題となるのがその情報をどこに保存するかです。スマホに保存すればネットを介した情報漏えいのリスクは回避できます。しかし,それではアプリに入力した情報を関係者間で共有することができません。したがって情報共有を目的としたスマホアプリではこのプライバシーの問題が大きな壁となって立ちはだかります。一方,入力された情報を集めて統計分析するなどしてデータの再利用をするアプリでは必ずしもその限りではありません。なぜならその場合は個人情報が必要ないからです。しかし,この場合であってもデータから個人が特定される危険性があります。例えばアプリに入力したある属性(例えば病名)を収集する必要がある場合,その属性が非常に稀なものであれば,そしてある個人がその属性を持っていることが周知されていたら,かなりの確度でその個人を特定できるかもしれません。この場合,問題なのは属性から個人が特定され,それに紐づけられたほかの情報が漏えいすることです。であれば,属性と他の属性を紐づけて送信しなければ問題はないように思えます。つまり,収集した情報を使って何らかの統計処理を行いたい場合,その統計処理に必要な情報に加工して送信するのです。例えば属性1と属性2の関係性を調べたい場合,属性1そのものではなく属性1に対応した識別子(これはその属性が名義尺度であれば非公開のローカルなコードである必要があります)と属性2に対応した識別子(〃)をペアにして送信します。他の属性とは紐づけません。そうすればたとえ情報が漏えいしたとしても意味すらわかないでしょう。解析する側は属性をローカルコードのまま分析し,結果が出たらローカルコードから属性を復元してその意味を解釈すればよいのです。そうすれば,少なくともシステム上には一切の個人情報も個人情報を特定されそうな情報も残りません。

2016年12月7日水曜日

SmartWatchを用いた患者呼び出しシステム 「」

現状分析と外部設計

アナログをデジタルに!!
今日は附属病院の実習の経験をもとに、詰所で行っている患者呼び出しシステムの分析(図1)と外部設計(図2)を行いました。
現状は電話が来たらノートに記載している。そのシナリオを図に起こしました。
デジタル化するにあたり、入力する項目と何を勉強するのか、通信方法を調べるなど課題が見つかりました。出た課題をもとに、実際に現場で働いている方(クラーク、Ns)にインタビューを行うなどし、解決していきたいと考えています。



図1

図2
図3

2016年12月6日火曜日

メンタルヘルス

インターネットでメンタルチェックサイトを調べてみた。
@メンタルヘルス
無料で自分自身のこころの状態を知るための診断チェック。「メンタルヘルスの悩み相談と無料のメンタルヘルス診断」を謳っている。うつ病,アスペルガー症候群,社会不安障害,サイコパスなど,全部で15の診断ができる。そのほか同じ悩みを持つ話し相手を探すための「話し相手募集」という掲示板や自分の気持ちを自由に呟ける「つぶやき」など,利用者のコミュニケーションを促進する仕掛けがある。
気になるのはどこが運営しているかとビジネスモデル。サイトにはいろいろ広告が出ているので広告収入か?
運営者は株式会社 studio C というところ。事業内容はウェブサイト企画・設計など。精神医療とは無縁っぽい。「どの診断チェックも実際に精神科、心療内科で使用されている信頼性があるものをベースに作成しておりますので、ご自身のこころの状態を確認するためにお役立て下さい」と書いているが出典がないので確認のしようがない。
他にもこのようなサイトがある。
ストレス度診断チェックテスト
「全国約120万人のデータをもとに、あなたのストレス度を判定いたします。ストレスレベルに応じて対処法ページへリンクしています」と書いてあるが・・・。制作しているのは株式会社メンティグループという会社。業務内容は「コンテンツ提供」。「ストレス対応,メンタルヘルス対応」などのコンサルティングや研修なども業務内容に入っている。また,代表者はメンタルヘルス関係の著書もある。「主にマネジメントの観点から、官公庁・企業などでストレス・メンタルヘルス対策、パワハラ対策のコンサルティングや研修・講演などを行ってきた」とあるのでまがい物ではなさそう。少し掘り下げて調べてみる価値はあるかもしれない。
自分で出来るストレスチェック
株式会社フィスメックという会社がやっている。事業内容は「メンタルヘルス事業,医療関連事業」取引先も警視庁など堅実なところが多い。「現在、多くの医療機関や施設で、ストレス状態を把握するためにさまざまなチェックリストが使用されています。このページでは比較的容易に利用できるセルフチェックリストを、順次紹介していきます」とあるがどのようなチェックリストがあるのか知りたいものだ。
うつ病のチェック診断「脳ナビ」
これは辻メンタルクリニックという医療機関がやっているサイト。専門機関だから信用できるだろう。しかし,この診断の出典が記載されていないのは気になる。

こうして見ていくと,設問数と言い,設問内容と言い,似通ってはいるが全く同じではない。それぞれ何を根拠としているのだろうか。また,臨床試験は行っているのだろうか。原典に当たりたい。

これはどうだ?
うつ度チェック 簡易抑うつ症状尺度(QIDS-J) 
これはきちんとした根拠に基づいているようだ。
「簡易抑うつ症状尺度(Quick Inventory of Depressive Symptomatology:QIDS-J)は、16項目の自己記入式の評価尺度で、うつ病の重症度を評価できるほか、アメリカ精神医学会の診断基準DSM-IVの大うつ病性障害(中核的なうつ病)の診断基準に対応しているという特長を持っています。世界的に知られた精神科医John Rush先生によって開発され、世界10カ国以上で使用されています」
うつ病に使われる心理検査。ハミルトンうつ病評価尺度(HAM-D)とは?
こういうのもある。これも「せせらぎメンタルクリニック」という医療機関がやっているので信頼できるだろう。
心理検査
代表的な検査手法が紹介されている。これは役に立ちそう。

2016年12月1日木曜日

覚悟

専門知識に裏付けられない、単なる思い付きと現実を見ない試みは、素人のたわごとと相手にされない可能性が大です。しかし、専門知識はなくとも事実に基づく研究であれば、データの集め方と分析の手法さえ間違わなければ堂々と渡り合うことができます。そこで、次のようなことを考えてみました。
まず、メンタルなコンディションを表す変数をY、それに影響を与えるだろうと思われる複数の要因を(X1, X2, ..., Xn)とします。アンケート調査等により、Yと(X1, X2, ..., Xn)の組を集め、それらを分析して(X1, X2, ..., Xn)とYの関係を求めます。これはいわゆる多変量解析ですが、得られた結果は間違いなく事実に基づいています。ですから、その結果を用いてやりたいことを実現させれば十分に研究として成立すると思います。たとえばスマホから(X1, X2, ..., Xn)を入力してもらい、Yを推測し、アラートを出すアプリを開発するなど。さらに、このアプリに学習機能を加え、ユーザの気持ちとアプリの結果の差異を学習させればより精度を上げることも可能かもしれません。今はやりの人工知能です。
まず、分析についてですが、例えば次のようなことがあるでしょう。
  • XiとXjの相関を求め、それをもとにネットワーク図を描いて要因Xのクラスタリングを行う。これによってメンタルコンディションYに与える要因をグループ化することができます。
  • いわゆる重回帰分析を行ってXからYを推定する(各要因の寄与を調べる)
  • 同じことを決定木を使って行い、どのようなロジックで判定が行われているかを調べる
  • ベイズ学習によって推定の精度を上げる
他にもいろいろあると思いますが、最終的にはこれらの分析によって得られた知見を基にメンタルサポートアプリを開発します。そのアプリを何人かの被験者に使ってもらい、学習効果によって精度がどのように向上したかを分析するのも面白いと思います。特に、最初にアンケートで収集したデータに基づく分析結果と学習後の分析結果を比較すればアプリの重要性を主張できるのではないかと思います。それにこの手のメンタルコンディションを推定するアプリで学習機能を持ったものなどないと思います。