弁別実験/精神物理学(心理物理学)
適応的方法:Psi法
弁別閾(JND)は、理論的には精神測定関数(psychometric function;心理測定関数)において関数値0.75(あるいはなど)を与える値として定義される。主観的等価点(PSE)は、精神測定関数値が0.5になる値である。いま、精神測定関数をとおく。は、平均、分散の累積正規分布関数である。この場合、位置パラメータである平均と、傾きのパラメータである分散によって、精神測定関数が与えられる。これらの値は、以前は恒常法により求められていたが、最近は適応的方法が用いられる。適応的方法として高い評価が与えられているものとしてΨ法(psi法)と呼ばれている適応的方法があるが、Ψ法については、例えば岡本安晴「計量心理学」培風館の2−5節「適応的方法」で説明している。Psi法による実験のサンプルプログラムは、ソースコードファイルなどをまとめて圧縮ファイル2AFCExp.zipとして用意した。ファイル名2AFCExp.zipをクリックしてダウンロードしたものを、マウスの右ボタンでクリックして表示されるメニュから、「展開」あるいは「解凍」などを選ぶと解凍できる。解凍したファイルは、Visual Studio 2013で開くことができる。実行形式のプログラムファイル2AFCExp.exeも用意したので、プログラムファイル名2AFCExp.exeをクリック・ダウンロードすれば実行できる。
プログラムを実行すると、図1のフォームが表示される。
図1
「GO」ボタンのクリックで、図2のウィンドウになる。
図2
「提示」ボタンのクリックで、図3のように十字形の図形が表示される。
図3
縦の線分と横の線分を比較してどちらが長いかを判断する。図3で表示されている十字形はすぐに消えて図4のウィンドウとなり、2つのボタン「縦>横」と「縦<横」が表示される。
図4
縦の方が長いと判断したときは「縦>横」ボタンを、縦の方が短いと判断したときは「縦<横」ボタンをクリックする。ボタンのクリックで図2のような画面に戻る。図2の画面において左右下に表示されている小さいグラフは、その試行におけるパラメータとの事後分布である。事後分布などベイズ的分析方法については、本書「心理学データ分析と測定」の「付録C ベイズ的分析法」を参照されたい。
図2の画面で左右2つのグラフが描かれているのは、プログラムでは2つの適応的方法の系列が実行されていることに対応している。2つの系列の試行をランダムに混ぜて実行することにより、系列内の依存性を隠している。
図2のような画面が提示されたら、「提示」ボタンをクリックすると次の刺激画面が提示されるので、縦線と横線のいずれが長いかの判断を行う。この<「提示」ボタンのクリック、刺激の提示、長さの判断>のサイクルを繰り返す。80回の繰り返し(80試行)で実験は終了し、図5のように結果が図示される。
図5
実験結果のデータを出力するためのテキストファイルの名前を設定するダイアログフォームも表示されるので、適当なファイル名を設定する。この出力ファイルは、このサイトの後半で説明する分析用プログラムで読み込んで分析することができる。ファイル名を設定して「保存」をクリックすると、図6のような画面になる。
図6
中央に大きく表示されているのが、2つの系列のデータを合わせたものに対する事後分布である。標準刺激は、十字形における横線である。長さは、十字形の中心から横線の端点までをピクセル単位で表わしたものである。比較刺激は縦線であり、長さは十字形の中心から縦線の端点までの長さをピクセルを単位として表わしたものである。
図6に表示されている結果は、適応的方法がリアルタイムに行われる必要上、かなり荒いグリッドが用いられている。MCMCを用いて実験結果をあらためて分析しなおすためのプログラムAnalDiscriDataMCMCMono.exeを用意した。プログラムのソースコードファイルなどをまとめた圧縮ファイルAnalDiscriDataMCMCMono.zipも用意したので、圧縮ファイル名をクリックしてダウンロードできる。ダウンロードした圧縮ファイルの名前AnalDiscriDataMCMCMono.zipをマウスの右ボタンでクリックして表示されるメニュから、「解凍」あるいは「展開」などを選んで解凍することができる。解凍したプログラムはVisual Studio 2013で開くことができる
プログラムAnalDiscriDataMCMCMono.exeをクリックしてダウンロード・実行すると図7のフォームが表示される。
図7
「GO」ボタンのクリックで、入力ファイル名の設定を求めるダイアログ・フォームが表示される(図8)。
図8
入力データファイルは、上の適応的方法(psi法)のプログラムの出力データの形式のものであればよい。例えば、本書「心理学データ分析と測定」の表11.1.1のデータ(DataTable1111.txt)であれば、以下のようになる。
=======================================================
/
1 100 1
2 92 1
3 88 0
4 94 0
5 101 1
6 87 0
7 101 1
8 86 0
9 100 1
10 86 0
11 100 1
12 87 0
13 98 1
14 88 0
15 97 1
16 89 0
17 96 1
18 90 0
19 96 1
20 90 0
21 95 0
22 98 1
23 91 0
24 97 0
25 100 1
26 90 1
27 87 0
28 100 1
29 88 0
30 100 1
31 88 0
32 99 1
33 89 0
34 98 1
35 89 0
36 98 1
37 90 0
38 98 1
39 90 0
40 97 1
41 100 1
42 92 1
43 88 0
44 94 1
45 87 0
46 94 1
47 87 0
48 90 0
49 94 0
50 100 1
51 99 1
52 86 0
53 98 1
54 87 0
55 98 1
56 88 0
57 97 1
58 89 0
59 96 0
60 100 1
61 88 0
62 99 1
63 89 0
64 98 1
65 90 0
66 90 0
67 97 0
68 100 1
69 99 1
70 90 0
71 90 0
72 98 1
73 91 0
74 98 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/>において指摘した。