井出草平の研究ノート

ROC曲線下の面積

ROC曲線のAUC(Area Under the Curve)はAUCは0から1までの値をとる。値が1だと完全に判別ができており、ランダムであるとき、AUC = 0.5となる。

医学で尺度(連続変数)と診断(2値)の一致度、つまり併存妥当性を表すときに使うらしい。論文でもよく使われるそうだ。僕は馴染みがないがない方法なので、使用例をどこかで探しておこうと思う。

ちなみに、ROC曲線は奥村晴彦先生の解説がわかりやすいと思う。

データの作成

尺度と診断の一致度を見るという設定で書いてみる。サンプルサイズは100である。

set.seed(101)
N   <- 100
x  <- rnorm(N, 20, 8)
y  <- x + rnorm(N, 0, 8)
y2 <- ifelse(y <= median(y), 0, 1)
x2 <- round(x)
summary(x2)
summary(y2)

仮想の尺度をx2として作成した。最小値が1、最大値が35である。こういった尺度はよくあるタイプのものだ。

Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
1.00   14.00   20.00   19.67   25.00   35.00

y2は診断で0/1で示してある。

> table(y2)
y2
 0  1
50 50

計算

ROC曲線のを求めるのにpROCパッケージを使用する。

library(pROC)
rocRes <- roc(y2 ~ x2, plot=TRUE, ci=TRUE,
               main="ROC-curve",
               xlab="specificity (TN / (TN+FP))",
               ylab="sensitivity (TP / (TP+FN))")
rocCI <- ci.se(rocRes) # 感度の信頼区間を計算
plot(rocCI, type="shape")

roc関数のmainはタイトル、xlabはx軸の名前、ylabはy軸の名前でごちゃごちゃしている感じになっている。

とりあえず1行目だけはしっかり書いておけば問題ない。plotはプロットするかどうか、ciは信頼区間を表示するかどうかである。2つとも通常は利用するのでそのままでよい。

結果は次のようになった。

Area under the curve: 0.8558
95% CI: 0.7841-0.9275 (DeLong)

一致度を見るのであれば、感度の信頼区間の計算は必要がないので省いてもいい。つまりci.se関数を使用している下2行は不要ということだ。ブートストラップを使用するので計算時間が比較的かかってマシン的につらい状態になる。

f:id:iDES:20191008152532p:plain

尺度水準に適した相関係数とシミュレーション

今回は相関係数の比較をする。

通常、相関係数というとピアソンの積率相関係数のことを指す。 ピアソンの積率相関係数は連続変数と連続変数の関連を調べるために使用されるが、連続変数以外でも下記のような相関係数がある。

  • ピアソンの積率相関係数: 連続変数と連続変数
  • ポリコリック相関係数: 順序変数と順序変数
  • ポリシリアル相関係数: 順序変数と連続変数
  • テトラコリック相関係数: 2値データと2値データ
  • 点双列相関係数: 2値データと連続変数

これらの手法を使うとどの程度、ピアソンの積率相関係数で計算したものと、結果が違ってくるのかをシミュレーションするのが今回の課題だ。

データの作成とリコード

まずはサンプルデータを作成する。こちらで作成したデータだ。

library(mvtnorm)
set.seed(1234) # 乱数シードの固定
N <-1000 # サンプルサイズの指定
Sigma = matrix(c(1,0.54,0.54,1), byrow=TRUE, ncol=2) # c()の中に相関係数を入れる。
mu <- c(45, 65) # 平均値
d1 <- data.frame(rmvnorm(n=N, mean=mu, sigma=Sigma)) # 乱数の作成
d1 <- round(d1) # まるめ(四捨五入で整数値に)
colnames(d1) <- c("Math","Science") # 列名を挿入

このデータをリコードして使用する。分位点でのリコードの方法はこちら。今回はOneRパッケージのbin関数を利用しているが、デフォルトでRにあるcut関数を利用してもよい。

4分位。順序変数に。

library(OneR)
d2 <- bin(d1, nbins = 4, labels = c(1,2,3,4),  method = "content")
library(dplyr)
d2 <- d2 %>% mutate_if(is.factor, as.ordered) # 順序型への変更
d2_num <- d2 %>% mutate_if(is.factor, as.numeric) # 実数型データの作成

2分位(中央値)。Factor型に。

d3 <- bin(d1, nbins = 2, labels = c(1,2),  method = "content")
d3_num <- d3 %>% mutate_if(is.factor, as.numeric)  # 実数型データの作成 

これでd1は連続変数、d2は4分位の整数型の順序変数、d3は2分位の引数型の2値データになった。d2_num、d3_numという実数型の変数を作成したのは、ピアソンの積率相関係数を計算するためである。

ピアソンの積率相関係数

すべてピアソンの積率相関係数で計算する場合は以下のようになる。

ピアソンの積率相関係数

cor(d1$Math, d1$Science) # 連続x連続
cor(d2_num$Math, d2_num$Science) # 順序x順序
cor(d1$Math, d2_num$Science) # 連続x順序
cor(d3_num$Math, d3_num$Science) # 2値x2値
cor(d1$Math, d3_num$Science) # 連続x2値

polycorパッケージを使用した場合

カテゴリカルな相関係数を計算する際には、polycorパッケージを利用する。psychパッケージでも計算できるが、polycorパッケージをマスクしているだけなので、polycorパッケージを利用するのがよいと思う。

library(polycor)
polychor(d2$Math, d2$Science)    # 順序x順序: ポリコリック相関係数
polyserial(d1$Math, d2$Science)  # 連続x順序: ポリシリアル相関係数
polychor(d3$Math, d3$Science)    # 2値x2値: テトラコリック相関係数
polyserial(d1$Math, d3$Science)  # 連続x2値: 点双列相関係数

結果

変数 相関係数 相関係数 ピアソンで計算した場合
連続x連続 ピアソンの積率相関係数 0.5134011 -
順序x順序 ポリコリック相関係数 0.5652811 0.4941776
連続x順序 ポリシリアル相関係数 0.5446512 0.5032072
2値x2値 テトラコリック相関係数 0.5767616 0.3763131
連続x2値 点双列相関係数 0.5599601 0.4246202

もともとのピアソンの積率相関係数より値が高いのが少し気になるが、真値とほぼ同じ結果となっている。
一方、すべて連続変数だと仮定してピアソンで計算すると、真値から離れていることがわかる。
やはり、それぞれの尺度水準に適した相関係数を利用しなければならないようだ。

考察

因子分析関連でこれらの相関係数は利用される。
シミュレーションの結果、ポリコリックとテトラコリックを比較しても大きな違いは見られなかった。2値×2値のテトラコリックでも大きな違いはない。
調査の際に5件法より7件法の方が良い、件数が多い方が良いということを聞くことがあるが、これが明らかな間違いであることがわかる。

通常の因子分析で使用できるデータは連続変数である。相関行列がピアソンの積率相関係数で計算されるからだ。
心理学では順序尺度を連続変数とみなして因子分析をしている。

もちろん手法としては誤りである。ただ7件法くらいになると、相関行列を作る際にピアソンの積率相関係数でも、ポリコリック相関係数でも大きな違いがでないため、許容されているだけである。

5件法より7件法の方が連続変数に近いので、件数が多い方が推奨されるのだと思う。しかし、無駄に件数を増やす必要はなく適切な相関係数を使用すればよいことがシミュレーションからわかる。

回答者にとってみれば、5件法より7件法の方が答えにくい。件数を増やすと回答者に負担が増える。分析者が適切な技法の習得を怠っているために、回答者への負担を増やしてしまっているのではないだろうか。

分位点でデータをリコードする

以前にもシミュレーションで使っている手技たが一度まとめておこうと思う。

55点が平均で標準偏差15程度のテストっぽい仮想データを作成する。

set.seed(123) # 乱数シードの固定
d1 <- data.frame(rnorm(100, mean=55, sd= 15)) # 100個のデータの作成
d1 <- round(d1) # まるめ(四捨五入で整数値に)
summary(d1)

最小値が20点で、最高点が88点で、平均が56.42点である。

Show in New WindowClear OutputExpand/Collapse Output
 rnorm.100..mean...55..sd...15.
 Min.   :20.00                 
 1st Qu.:47.75                 
 Median :56.00                 
 Mean   :56.42                 
 3rd Qu.:65.25                 
 Max.   :88.00

cut関数を使用する

4分位で分ける。データは整数型で出力される。

d2 <- lapply(d1, function(x){
             cut(x, breaks=quantile(x), include.lowest=TRUE,
                 ordered=TRUE, labels= FALSE) })
str(d2)
table(d2)

2分位(中央値)で分ける。

d3 <- lapply(d1, function(x){
             cut(x, breaks=quantile(x, prob = seq(0, 1, length = 3)), 
                 include.lowest=TRUE,
                 ordered=TRUE, labels= FALSE) })
str(d3)
table(d3)

OneRパッケージを使用する

4分位で分ける。OneRパッケージは因子型で出力される。

library(OneR) 
d4 <- bin(d1, nbins = 4, labels = c(1,2,3,4),  method = "content")
str(d4)
table(d4)

整数型で利用する際には変換が必要だ。

library(dplyr)
d4 <- d4 %>% mutate_if(is.factor, as.integer) # 整数型への変換

2分位(中央値)で分ける。

library(OneR) 
d5 <- bin(d1, nbins = 2, labels = c(1,2),  method = "content")
str(d5)
table(d5)

cut関数を使うのが標準的だが、プログラムっぽさが出てくるのて嫌がる人もでてきそうな気がする。
OneRパッケージだとパッケージのインストールの手間などはあるが、プログラムっぽくないのが利点だろうか。

全変数の関連を楽に把握する試み(ただし道半ば)

二次分析をする際に、データのどこが使える部分なのかわからない時がしばしばある。そういう時に、褒められた方法とは言えないかもしれないが、全変数の関連を把握できると分析のとっかかりになることがある。

ということで、いかに楽に把握をするかということをたまに考えたりするのだが、一つ方法を考えてみた。ちなみに、今回のエントリ内容はタイトルにもあるように道半ばであって、いかなる状況でも対応できるものではない。

カテゴリカル相関係数

連続変数だけを扱っていれば、相関行列を作成して表示すればいいのだが、カテゴリカル変数が入るとけっこうやっかいだ。そこでカテゴリカル相関係数を利用できないか、と考えた。

一応、相関係数の種類を書き出しておこう。点双列相関係数(point-biserial correlation)だけ訳語があるようなのだが、ポイント・バイシリアルと書いた方が覚えやすい気はする。

  • ピアソンの積率相関係数: 連続変数と連続変数
  • ポリコリック相関係数: 順序変数と順序変数
  • ポリシリアル相関係数: 順序変数と連続変数
  • テトラコリック相関係数: 2値データと2値データ
  • 点双列相関係数: 2値データと連続変数

ピアソン以外の相関係数はRではpolycorパッケージを利用する。データタイプの判別をして自動で適した相関係数を出力するhetcorコマンドがpolycorパッケージにある。

AERパッケージに含まれるCPS1985データを使用しよう。

データの作成

CPS1985の呼び出して連続と2値データの変数のみ抽出する。

library(AER)
data(CPS1985)
str(CPS1985) # データ構造の把握
r <- cbind(1, 2, 3, 4, 6, 7, 10, 11) # 連続と2値データのみ抽出
data <- CPS1985[,r]

相関マトリックスの作成する。

library(polycor)
het<- hetcor(data)
res <-het$correlations # 相関行列のみ取り出し
print(res)

hetcor機能でデータフレームに含まれる変数同士すべての相関係数を適切な方法で計算してくれる。

print(res)もしくはresで相関行列を表示できる。下のものはhetcor(data)を格納したhetを表示したものだ。RStudioでは表示されず、コンソールから実行しないと正しく表示されなかった。

Correlations/Type of Correlation:
              wage education experience     age     region     gender      union    married
wage             1   Pearson    Pearson Pearson Polyserial Polyserial Polyserial Polyserial
education   0.3819         1    Pearson Pearson Polyserial Polyserial Polyserial Polyserial
experience 0.08706   -0.3527          1 Pearson Polyserial Polyserial Polyserial Polyserial
age          0.177     -0.15      0.978       1 Polyserial Polyserial Polyserial Polyserial
region      0.2012    0.1831   0.009742  0.0511          1 Polychoric Polychoric Polychoric
gender     -0.2572  0.002558    0.09412 0.09928    0.03538          1 Polychoric Polychoric
union       0.2203  -0.03494     0.1666  0.1707      0.175    -0.2925          1 Polychoric
married     0.1283  -0.04662     0.3514  0.3558   -0.01116     0.0182     0.1821          1

それぞれの変数がどの種の相関係数で計算されているかが表記される。

プロットする

これを以前のエントリでとりあげた相関プロットで表示する。

library("corrplot")
png(height=800, width=800, pointsize=15, file="corrplot02.png")
corrplot(corr = res, type="upper", addCoef.col="black" )

f:id:iDES:20191005222806p:plain

考察

相関係数は3値以上のカテゴリカル変数には対応していない。順序があれば、相関係数の計算はできるが、CPS1985のethnicity変数はcauc/hispanic/otherの3値でかつ、順序がない。この種の変数はクロス表分析(カテゴリカル×カテゴリカル)か分散分析(カテゴリカル×連続)をするしかない。

ということで、3値以上の順序の無いカテゴリカル変数があるとこの方法で把握することは無理だという欠点があるものの(それはわりと致命的な場合も多いが)、気軽に全変数の関連を調べることができるようになった、かもしれない。

続きのエントリ

結果をcsvで書き出す方法について追記しました(2020/02/21)。

ides.hatenablog.com

相関係数を指定した乱数を作る

相関係数のデモをirisデータで作っていてうまくいかず、サンプルデータを作成した時の副産物。

今回は数学と科学のテスト点のサンプルデータを作った。 使用するのはrmvnormであって多次元正規分布を作成する機能である。パッケージは不要であるmvtnormパッケージを使用する。

library(mvtnorm)
set.seed(1234) # 乱数シードの固定
N <-1000 # サンプルサイズの指定
Sigma = matrix(c(1,0.54,0.54,1), byrow=TRUE, ncol=2) # c()の中に相関係数を入れる。
mu <- c(45, 65) # 平均値
d1 <- data.frame(rmvnorm(n=N, mean=mu, sigma=Sigma)) # 乱数の作成
d2 <- round(d1) # まるめ(四捨五入で整数値に)
colnames(d2) <- c("Math","Science") # 列名を挿入

どのようなデータができたか見てみよう。

> head(d2)
  Math Science
1   44      65
2   45      63
3   46      66
4   44      64
5   44      64
6   44      64

> summary(d2)
      Math          Science     
 Min.   :42.00   Min.   :62.00  
 1st Qu.:44.00   1st Qu.:64.00  
 Median :45.00   Median :65.00  
 Mean   :44.97   Mean   :64.88  
 3rd Qu.:46.00   3rd Qu.:66.00  
 Max.   :47.00   Max.   :68.00  

相関係数を確認してみよう。

> cor(d2)
            Math  Science
Math    1.000000 0.547566
Science 0.547566 1.000000

指定通りの相関係数で乱数が作成されている。

検索していたら、太郎丸先生のrmvnormのエントリを発見した。

杉原里美『掃除で心は磨けるのか』

掃除で心は磨けるのか (筑摩選書)

掃除で心は磨けるのか (筑摩選書)

αシノドスの著者インタビューでこの本の存在を知り読んだ。Web版のシノドスにも著者インタビューは転載されている。
https://synodos.jp/newbook/22936

素手で便所の掃除をする便教会江戸しぐさ、奇妙な道徳教材、教科書採択運動の組織運動(フジ住宅など)など数々の不思議で合理的でなく、現代にそぐわない数々の出来事が掲載されている。右寄りの人には向かない箇所もあるかもしれないが、私たちが教育を考える上で、必ず知っておかなければいけないことが書かれてある。現代社会を考える上での必読の書の一つと言ってよいだろう。

個人的には、本書でとりあげられている問題はしばしは話題になるので知っているものもあったが、知らないことも多く載っていて、大変、勉強になった。

その一つ「『ファシズムの体験学習』に参加して」で書かれている甲南大学の田野大輔さんの授業は初めて知り、とても興味をひかれた。ナチスでやっていたことを疑似体験する授業を田野さんは行っているようだ。ファシズムは「集団の名前」「制服」「シンボル」3つの要素が重要で「歌」も重要だという。「制服を着ることで恥ずかしさがなくなった」という学生の声が掲載されており、ここまで制服の効果は高いのか、と興味をひかれた。

杉原さんも書かれているが、ファシズムで行っていることというのは大なり小なり高校までの学校教育で行っていることである。一般社会で行ったらおかしなことが学校でまかり通っていることの理由の一端が見えた気がする。

心理療法の介入研究の問題点と展望

オープンダイアローグのエビデンス

オープンダイアローグはエビデンスが弱いと言われる。
また、オープンダイアローグはエビデンスを作るのに向いていないとも言われる。
では、介入の科学的エビデンスを作るにはどのようにすればよいか? ということを考えてみた。

確かに薬物療法の介入研究などと比較すれば、難しいのはおそらく間違い。しかし、他の心理療法と比較して効果測定が難しいのかというと、それほど大きな違いはないように思える。オープンダイアローグのエビデンスの作り方のプランというよりも、心理療法の介入研究全般にあてはまることなので、タイトルをなど全体の筋立てを変えてみた。

効果検証とは

一般に言われる心理療法の介入のエビデンスとは何か、ということを最初に確認しておいた方が話がわかりやすくなるだろう。
一言で言えば「平均値の差の検定」である。

「平均値の差の検定」と心理療法の効果の検証については『一事例の実験デザイン―ケーススタディの基本と応用』でデビット・H・バーローらは次のように述べている。

事例を個別に取り上げるとあるクライエントは改善していて、別のクライエントでは悪化していることを指摘した。それを統計的に平均値を出してしまうと、おたがいに相殺されてしまい、全体は無効の結果になってしまう

臨床家にとって「これは有効な技法だ」と感じるものがあるとする。実際に、良くなった患者も複数いる。これを検証しようとすると、実際にはまったく効いていない患者もいるし、中には悪化している患者もいたりする。加算して平均をとるとゼロになるので、その心理療法は有効ではない、という結論となる。

フロイト先生のウソ (文春文庫)』ではロルフデーゲンは次のように少しセンセーショナルに書いている。

結論を先に述べれば、プラセポ効果を上回る効果のある心理療法はただの一つも存在しない。

ロルフデーゲンの言っていること正しい。バーローらの言及の方がより客観的ではあるものの。

「検証」=「平均値」と捉えために「介入は失敗した」という結論になる。
しかし、それだけで話を終えていいのだろうか。

カウンターカルチャーで終わらせないために

エビデンスが出せないなら、エビデンスむしろ出さなくていい、マイナー路線で行く、専門家集団から認められなくてもいい、カウンター・カルチャーでいい、というスタンスにでいる人もいる。エビデンスがない状態でオープンダイアローグに賛同するというのは、将来性にかける、技法に魅了されるという点ももちろん大きい動機だが、精神医療福祉の現状の不満・不具合の受け入れ先、もう少し正確に言えば、ガス抜きになっている側面が大きいとみている。

専門家集団からオープンダイアローグが冷遇されている最も大きな理由はエビデンス・レベルの低い報告しかないからである。もちろん、統合失調症への伝統的な物の見方も関連しているが、説得をするには科学的なエビデンスが不可欠である。カウンターカルチャーで終わらせないならば、エビデンスの積み重ねがこれから必要になってくるのではないか、と考えている。

効果の検証とは

誰に対しても有効な万能薬のようなものは存在しない。何にでも効く薬として売られているものは、だいたいは詐欺商品であり、逆に信用がならない。

精神科領域でも同じことが言えるが、これは他の医学分野でも同様である。例えば、ある抗がん剤はAさんには効いたが、Bさんには効かなかったということがある。現在では遺伝子検査をして、特定の抗がん剤の有効性があるかを調べる研究が盛んである。DNAを採取すれば、100%わかるわけではないが、総当たり方式で薬を入れるよりも、優先順位をつけて治療ができるので、臨床的に有用である。

NNT(Number Needed to Treat)という指標がある。抗うつ剤の場合は5~8とされることが多い。数字は小さい方がよくて、2であれば2人の患者があればどちらかに有効性があることを意味している。つまり、抗うつ剤の5~8というのは5人に1人から8人に1人くらいの有効性だということだ。効かなければ、あきらめるのではなく、別の抗うつ剤にスイッチをする。このNNTが心理療法の場合、正確には計算できない上に、間違いなく薬物療法より悪い値となる。

ただNNTも平均値である。NNTがたとえ20、つまり20人に1人しか効かないであっても、有効性があるのであれば、無意味とは言えない。有効性があること自体に意味があるし、他の方法でうまくいっていない人に効いたのであれば、なおさらのこと、価値がある。NNTが20くらいになると、平均値の差の検定では統計学的に有意な結果を得ることはかなり難しい。

有用性と平均値とは必ずしも両立しないし、平均値ばかり見ていると、真の価値を見逃すことがしばしばあるのだ。

介入方法の検証の方法が「平均値の差の検定」だけである続ける限りは、心理療法の介入効果を示すのは非常に難儀なものであり続ける。

FACTFULNESS(ファクトフルネス) 10の思い込みを乗り越え、データを基に世界を正しく見る習慣』を書いたハンス・ロスリングは「わたしは平均が大好きだ」だと言っているが、僕はロスリングほど平均値が好きにはなれない。もちろん平均値や分布(特に正規分布)がなければ、使える統計技法は限定されてしまうし、それこそ僕は毎日平均の計算ばかり(計算しているのは統計パッケージだが)しているのたが、それでも、平均値の抱える問題に日々苦しめられている。平均値によって隠されてしまうものが出てこないように、いかに分析をするか、ということにかなり神経を使っているのが実情である。

2つ指針

「平均値の差の検定」をしないならばどうするのか。おそらく2つの方法がある。

A.一事例研究/少数事例研究

一つ回答は、ケースを平均で比較するのではなく、ケース内で平均の比較を行うというデビット・H・バーローらの方針である。ややこしい書き方になるが、平均値の差の検定をバーローらが行っていないわけではない。心理療法の有効性が確かめられるような形で、平均値の差の検定を利用しているというのが正確な表現かもしれない。

一事例の実験デザイン―ケーススタディの基本と応用

一事例の実験デザイン―ケーススタディの基本と応用

本のタイトルからもわかるように一事例研究の方法をバーローらが書いた本だ。

バーローは行動療法家であるので、この本ではABAやABACAといった実験の方法論が書かれている。心理療法という括りではオープンダイアローグとは同じだが、違いもある。ABAデザインであれば、ほとんどの心理療法で使えるが、ABACAデザインの場合、Cの条件付けができるかは、心理療法によって異なるので、オープンダイアローグでは実施できない可能性もある。この本の通りにオープンダイアローグを含めどのような心理療法でも使えるわけではないが、基本的な方針の一つにはなりうるはずだ。

バーローらの本には書かれていないが、2名以上の少数事例のケースを扱う場合には、マルチレベルデータ(もしくはパネルデータ)として分析することになるだろう。

B.条件の検証

もう一つの指針は条件を明らかにするというものである。

抗がん剤の有効性のDNA検査に比べると抗うつ剤の同様の研究はあまり進んでいるとは言えない。実用的なレベルになっているのは、患者の属性項目による抗うつ剤の効き方の違いの研究である。

英文での抗うつ薬の研究は2000年に入ったころから、この薬剤は誰に効きやすいのか?という検討を行う研究が増えた。例えば、高齢者にはどの抗うつ薬が有効なのか、女性に有効性の高い薬剤は何か、未成年ならばどの薬が副作用が起こりにくいか、といったような研究である。現在、発売されている抗うつ剤が誰に効きやすいかという論文は、かなり調べられていて、だいたい分かっている。

抗うつ剤のNNTが5~8と先ほど書いたが、これらの研究を踏まえれば、ある程度は改善することができる。

しかし、よく考えると、この研究動向は少し妙である。

そもそも、実験デザインとは対象者は均質なグループという仮定の下で行うものだったからだ。
RCTはオースティン・B・ヒルの行ったストレプトマイシンの研究からスタートしており、医学の中で発展したものである。ヒルは臨床研究を行う際には、実験心理学の実験デザインを参考にしている。

実験心理学の実験デザインは、人間は均質なものだという仮定に立ち、人間全般に均質性のあるものを本来は計測するものが多い。実験心理学の研究を読んだことがある人であればわかるが、被験者はその辺から適当に集めているものが多い。社会学ではランダム・サンプリングが他分野からすると驚くほど強調されるが、その真逆の考え方に立っていると言えよう。ランダム・サンプリングはしないが、ランダマイズとブラインド(盲検化)はするのだ。「適当」という言葉を使ったが、手抜きという意味ではない。人間の本質が変わらず、変わらない部分を実験で明らかにするから、ランダム・サンプリングは不要なのである。

古典的な実験心理学では、盲検化だけで十分である。しかし、その実験デザインを、均質性が欠ける対象の検討をする医学の臨床研究に持ち込んだのがRCTなのだ。それをさらに個々の患者の異質性の高い精神医学分野に持ち込むと、RCTの難易度は格段に上がることとなった。

RCTの裏技

介入研究では、メタ・アナリシスやガイドラインの二次研究を除いて一時研究では、RCT(ランダム化比較試験)が最もエビデンス・レベルが高いとされているし、それは間違っているわけではない。

しかし、対象の均質性が十分に保証されていない分野でのRCTは困難を極める。そこで裏技が使われ始めた。

裏技はいくつかパターンがある。例えば対人関係療法(IPT)では対人関係にコンフリクトがあるグループに有効性が高いので、アメリカ在住のラテン系の女性を多くしてRCTを実施している研究がある。これは有効性のあるグループで検証に多く参加してもらうという裏技の一例だ。

ドイツでは精神分析のRCTを行っている研究者たちが存在するが、他の心理療法に比較して介入期間が長い。2年あまりの長期で実施するのが普通である。精神分析には時間がかかるというのは事実だから、理論的に説明はつけられるが、長期間の介入をすれば技法の種類は問わずとも改善した可能性は少なくない。こちらは長期に介入するという裏技だ。

薬物療法のRCTでも裏技は存在する。フルオキセチンセルトラリンなどで顕著だが、一般的にSSRIは男性より女性の方が有効性が高い性質がある。その性質を利用して、検証を行う際には、女性を多して研究が実施されている。論文を読む際には、性別は割と重要である。もともと、男性より女性の方がうつ病は約2倍多く、研究への参加募集をかけると、女性の方が多く集まるのは不自然ではない。ただ、研究者が女性によく効く薬であることを承知していて、女性を中心に研究への参加を勧誘をしている側面はおそらくあるはずだ。

ここまでの状況を生んでいる伝統的なRCTを続ける理由があるべきだと個人的には考えていはいない。正確に言えば、均質ではないということを前提として、RCTを行った方が現実的なのではないか、均質性をコントロールする計量モデルを組み込んだRCTをした方がよいのではないか、と考えている。

臨床で知りたいことは何か

例えば、65歳の男性のうつ病患者が目の前にいて、抗うつ剤を投薬をしなければならないとする。現在研究では、この患者の場合、年齢と性別から考えて、第一選択はデュロキセチンである。高齢者のうつ病エビデンスはデュロキセチンがとびぬけて高く、次点でパロキセチン、オプショナルな選択としてミルタザピン、あとのSSRIなどはプラセボと同等の効果しか認められていないので、投薬の優先順位は低い。

未成年のうつ病の場合も同様である。副作用のアクチベーションに気を付けなればならない。アクチベーションを最も起こさないのはフルオキセチンである。次点でエスシタロプラムである。あとのSSRIや三環系抗うつ薬は、リスク/ベネフィットの観点から投薬は慎重にする必要がある。

このようなことを考えてみると、臨床家の知りたいことは、1) 手技の有効性とともに2) 有効性/有害性が発揮される条件だと言えよう。

臨床では治したもの勝ちと言っていいだろう。有効性が100%でなくても、有効なグループの条件がわかっていれば、対処ができる。それ以外の患者には他の方法であたる。つまり「条件」がわかることは非常に臨床に役に立つのである。

RCTはRCTであっても条件付きの(conditional)の方がより正確性が高く実用的だと言える。統計手技としてプリミティブな方法は先ほど紹介した男女や年齢でわけて行うRCTである。もう少し計量技術の高いものを取り入れる場合、RCTの中に異質性の計測を行い、多変量解析を組み込む。男女も差異の推定だが、患者のもつ性質は性別以外にも多々あり、これらの条件を多変量解析で統制することによって、介入法のより純粋な効果を推定することができる。

エビデンスレベルの低い研究と多変量分析のミックスデザイン

RCTをするのは大変だ。例えば、新しくICD-11で導入されたゲーム障害の研究をするには、まずゲーム障害害外来を開く必要がある。専門外来を開くとゲーム障害の患者さんたちが集まってくる。協力してくれる人もいれば、協力してくれない人もいるので、外来を開けばよいというものではなく、患者集めに数年かかる。スタートするまでに、がんばっても5年くらいは最短でかかるのではないだろうか。もちろん、多額の資金と人員も必要となる。

より難易度が低いのがオープン・トライアル、ケースコントロール研究、そして観察研究である。

社会学・経済学などの分野では社会現象を扱うので実験ができない。それらの分野では、実験を行う理数系の分野、心理学、医学などとは別の統計手法が開発されてきた。実験ができれば最も良い。しかし、社会現象で実験はできない。

そこで、あの手この手を使って、特定の変数・現象の効果の推定を行ってきた結果、多くの技法の蓄積を持つようになった。それら手技を実験デザインにも応用すると、伝統的な方法よりも正確な結果が得ることがてきる。RCTに匹敵する客観性には届かないものの、かなりの改善が期待できるはずである。

多変量解析の導入は、均質性のない精神疾患の解析にも向いている。ゲーム障害の研究をする際には、ゲーム障害の人ばかり集めなければならないと書いたが、実際に外来に来院する人たちは様樣な精神疾患を抱えている。様々な精神疾患の人が混じるデータであっても、薬物療法の有効性や、心理療法の有効性を特定することができる。つまり、まったく実験のデザインをしていないデータでも分析はできるということである。

複雑な要因をどのように統制するか

セイラックとアーンキル本の前書きで翻訳者の斎藤さんが書いているのは次のようなものだ。

(RCTは)精神療法や対話療法のように、複数の要因が複雑に関与する手法の検証にはそもそも不向き

複数の要因が複雑に関与している状況を読み解くのは実験デザインには不向きなのは確かである。条件を変えて何度も実験ができるならば、可能である。例えば、ヴィネット調査を実験デザインに変更すれば、短期間に同一の対象者に条件を変えて実験ができるが、テーマが非常に限られてしまう。臨床の介入の場合、同日に複数、条件を変えて計測することは不可能である。

従って、複数の要因をコントロールする研究デザインを組み込むことが現実的な選択肢になる。オープンダイアローグがどのように患者を変容させていくか、その他の要因がどのように変容させるか、本で読んだ知識以上のものは僕にはないし、実際にやったこともないので、よくわからないのだが、臨床家であれば、ある程度のパターンに気づくはずである。その条件を見つけ出す。つまり仮説を立てる作業からまず始める。

研究デザインは実験ではなく、オープントライアル/観察研究が比較的現実可能性が高い。観察研究では、時系列分析であったり、パネルデータ分析を行い、オープンダイアローグとその他の要因についての効果を推定する作業を行う。オープントライアルの場合は、完全に統制できるわけではないが、オープンダイアローグの効果も推定できる。RCTにはない、オープンダイアローグの阻害要因と促進要因、つまり有効性の条件を特定することもできる利点もある。

倫理的な問題

臨床研究で問題となることの一つは倫理の問題である。効果のある技法と効果の無い技法を比較する実験デザインでは、効果のない技法を引き当てた患者は、ハズレくじを引いたことになる。くじくらいであればいいが、生死がかかった疾患となると、ハズレくじでは済まない。仮にRCTをするとしても、対象疾患はケアが無くても大きな問題を起こさないものや後からリカバーできるものという条件が整わなければやるべきではないだろう。

多変量解析を組み込んだ実験デザインだとコントロールができるため、有効だと思われる治療 vs.無効の治療(プラセボ)という設定をしなくてもよい、というのは利点の一つと言えるかもしれない。例えば、オープンダイアローグ vs. 認知行動療法を比較して、それぞれを受けた人がどのような変化をしていくか、というデザインでもよい。

認知行動療法の有効性はかなり多くの分野で確かめられており、研究に参加する患者に大きな不利益はない場合が多い。実験デザインでは非劣等性試験と呼ばれるものに相当する。しかし、単に効果だけを計測するのではなく、阻害要因と促進要因を計測していれば、非劣等性試験以上のインプリケーションがある。例えば、効果のあり方がことなった、有効性のある部分が異なった、という結果でもOKである。臨床に参考になる情報なるだろう。

上手く調査を組めば、オープンダイアローグの有効な対象や、他の心理療法にはない有効性(オープンダイアローグのみが有効なもの)を明らかにできる可能性は十分にあるのではないかと思う。これは他の心理技法に関しても同じである。