適応的上下法
弁別閾と主観的等価点の測定
弁別閾(JND)は、理論的には精神測定関数(psychometric function;心理測定関数)において0.75(あるいはなど)を与える値として定義される。主観的等価点(PSE)は、精神測定関数値が0.5になる値である。いま、精神測定関数をとおく。は、平均、分散の累積正規分布関数である。この場合、位置パラメータである平均と傾きのパラメータである分散によって精神測定関数が与えられる。これらの値は、以前は恒常法により求められていたが、最近は適応的方法が用いられる。適応的方法として高い評価が与えられているものとしてΨ法(psi法)と呼ばれている適応的方法があるが、Ψ法については、例えば岡本安晴「計量心理学」培風館の2−5節「適応的方法」で説明している。Website「Bayesian Adaptive Method」に、Delphiで開発されたΨ法のデモンストレーション用プログラムを用意していたが、Visual C++版も開発したので本ウェブサイトに用意した。プログラムファイルは、まとめて圧縮ファイル2AFCExp.zipとして用意した。ファイル名2AFCExp.zipをクリックしてダウンロードしたものをマウスの右ボタンでクリックして表示されるメニュから「展開」あるいは「解凍」などを選ぶと解凍できる。解凍したファイルはVisual C++2008などで開くことができる。実行形式のプログラムファイル2AFCExp.exeも用意したので、.NET Framework3.5のインストールされているPCでファイル名2AFCExp.exeをクリック・ダウンロードすれば実行できる。プログラムを実行すると図1のフォームが表示される。
図1
「GO」ボタンのクリックで図2のウィンドウになる。
図2
「提示」ボタンのクリックで図3のように十字形の図形が表示される。
図3
縦の線分と横の線分を比較してどちらが長いかを判断する。図3で表示されている十字形はすぐに消えて図4のウィンドウとなり、2つのボタン「縦>横」と「縦<横」が表示される。
図4
縦の方が長いと判断したときは「縦>横」ボタンを、縦の方が短いと判断したときは「縦<横」ボタンをクリックする。ボタンのクリックで図2のような画面に戻る。図2の画面において左右下に表示されている小さいグラフは、その試行におけるパラメータとの事後分布である。事後分布については、「岡本安晴『統計学を学ぶための数学入門[下]』、培風館、9.12節『確率モデルによるデータ分析』」、「岡本安晴『データ分析のための統計学入門』おうふう、6.4節『ベイズ的方法』」などで説明している。図2の画面で左右2つのグラフが描かれているのは、プログラムでは2つの適応的方法の系列が実行されていることに対応している。2つの系列の試行をランダムに混ぜて実行することにより、系列内の依存性を回避することを考えた。
図2のような画面が提示されたら、「提示」ボタンをクリックすると次の刺激画面が提示されるので、上の手続きを繰り返す。80回の繰り返し(80試行)で実験は終了し図5のように結果が図示される。
図5
実験結果のデータを出力するためのテキストファイルの名前を設定するダイアログフォームも表示されるので、適当なファイル名を設定する。この出力ファイルは、このサイトの後半で説明する分析用プログラムで読み込んで分析することができる。ファイル名を設定して「保存」をクリックすると、図6のような画面になる。
図6
中央に大きく表示されているのが、2つの系列のデータを合わせたものに対する事後分布である。標準刺激は、十字形における横線である。長さは、十字形の中心から横線の端点までをピクセル単位で表わしたものである。比較刺激は縦線であり、長さは十字形の中心から縦線の端点までの長さをピクセルを単位として表わしたものである。
なお、単純に被験者の比較判断に応じて刺激値を増減させる上下法のプログラムも別のウェブサイトに用意した。
図6に表示されている結果は、適応的方法がリアルタイムに行われる必要上、かなり荒いグリッドが用いられている。MCMCを用いて実験結果をあらためて分析しなおすためのプログラムAnalDiscriDataMCMC.exeを用意した。プログラムのソースコードファイルなどをまとめた圧縮ファイルAnalDiscriDataMCMC.zipも用意したので、圧縮ファイル名をクリックしてダウンロードできる。ダウンロードした圧縮ファイルの名前AnalDiscriDataMCMC.zipをマウスの右ボタンでクリックして表示されるメニュから「解凍」あるいは「展開」などを選んで解凍することができる。解凍したプログラムはVisual C++ 2008などで開くことができる
プログラムAnalDiscriDataMCMC.exeをクリックしてダウンロード・実行すると図7のフォームが表示される。
図7
「GO」ボタンのクリックで入力ファイル名の設定を求めるダイアログ・フォームが表示される(図8)。
図8
入力データファイルは、上の適応的方法(psi法)のプログラムの出力データの形式のものであればよい。これは次の形式のものである。
=======================================================
/
1 100 1
2 92 1
3 88 0
4 94 0
5 101 1
・
・
・
75 91 0
76 91 0
77 98 1
78 91 0
79 97 1
80 92 1
/
=======================================================
スラッシュ/で始まる行の間にデータを
試行数 比較刺激値 反応
の形式で並べていく。反応は、比較刺激の方が強い感覚量であると判断されたときは1、標準刺激の方が強い感覚量であると判断されたときは0で表す。試行数は、データの区別のためのものである。以下のコードに示すように、文字列として読み込まれているので、試行数のところは数値以外の文字列でもよい。
for (int i = 0; i < n; i++){
String ^ s = fin->ReadLine();
Str[i] = SeekStr(s, 0);
st[i] = double::Parse(SeekStr(s, 1));
resp[i] = int::Parse(SeekStr(s, 2));
}
入力ファイル名を設定して「開く」ボタンをクリックすると、計算結果などを出力するテキストファイル名の設定を求めるダイアログ・フォームが表示される(図9)。
図9
適当なファイル名を設定して「保存」ボタンをクリックすると計算が始まる。計算が終了すると図10の画面になる。
図10
左上の「JND」ボタンをクリックするとJNDの事後分布が表示される(図11)。「Save」ボタンをクリックすると、表示されている描画画面が保存される。
図11
「PF」ボタンのクリックで精神測定関数(psychometric function)が表示される(図12)。
図12
青の曲線が推定されたパラメータによる精神測定関数であり、赤の曲線がデータを表している。データはkernel smoothingによって描画されているが、「k-width」の値(図13)を適当に選んで滑らかにすることができる(図14)。
図13
例えば、図12の結果を表示しているデータの場合、図13に示されているように1.0を設定して「PF」ボタンをクリックすると図12の赤の曲線が図14のようになる。
図14
パラメータの推定値はMAPによっているが、これについては<岡本(2011)「上下法データのベイズ的分析」>を参照されたい。
Visual C++プログラミングについては<岡本安晴「大学生のための心理学VC++プログラミング入門」勁草出版>で説明している。
補足: 弁別閾の考え方が感覚尺度の構成において理論的に重要な役割を担うことは、Okamoto(2001)”On Fechner’s Problem”<http://ci.nii.ac.jp/naid/110000032319/en/>において指摘した。