.. _chapter-staircases: 階段法の手続の実験を作成しよう ======================================================================= この章の目的 -------------------------- この章では「 :numref:`{number}:{name} ` 」で解説を省略した **[Loopの種類]** のstaircaseとinterleaved staircasesの使い方を解説します。 これらのループはいずれもstaircase法(階段法)と呼ばれる手続きをBuilderで実現するために用意されています。まず通常のstaircaseから解説し、続いてinterleaved staircasesに触れます。 Staircaseループについて学ぼう -------------------------------------- :numref:`fig-staircase-properties` にstaircaseループのプロパティ設定ダイアログを示します。staircaseループでは条件ファイルを使用せず、このダイアログですべてのパラメータを設定します。 .. _fig-staircase-properties: .. figure:: fig11/staircase-properties.png :width: 60% staircaseループのプロパティ設定ダイアログ staircase法は心理物理学的測定法の一つである極限法の効率を高めた方法です。参加者の反応は「正反応」(刺激が知覚できている)と、「負反応」(刺激が知覚できていない)の二種類に分類できるとします。極限法と同様に、計測したい閾値から離れたところから刺激を提示し始めて、参加者の反応が変化するまで一定方向に刺激を変化させ続けます。極限法ならば最初に参加者の判断が変化したところで系列を終了しますが、staircase法では今までと反対方向へ刺激を変化させて続行します。その後は正反応、負反応が一定数連続する度に刺激を変化させる方向を反転させます。 :numref:`fig-staircase-procedure` は、「正反応が3回連続する」または「負反応が1回出現する」時に反転させるというルールでstaircase法を実施した例を示しています。閾値付近で何度も刺激の変化方向が反転して、閾値付近での参加者の判断を効率的に記録できることがわかります。 .. _fig-staircase-procedure: .. figure:: fig11/staircase-procedure.png :width: 90% staircase法の実行例 以上の例を踏まえて、staircaseループのプロパティについて解説します。まず、試行開始時の初期値と反転のルールを決定するパラメータを :numref:`tbl-staircase-parameters-reversal` に示します。この表で「刺激レベル」と書かれているのは :numref:`fig-staircase-procedure` の縦軸にあたる値で、Builder内では level という内部変数で参照することができます。例えば、staircaseループでPolygonコンポーネントの塗りつぶし色(RGB値)の明るさを変化させたい場合は、 **[塗りつぶしの色]** を$[level, level, level]とします。 .. tabularcolumns:: |p{10zw}|p{30zw}| .. _tbl-staircase-parameters-reversal: .. csv-table:: 初期値と反転のルールを決定するパラメータ :widths: 40, 60 **[初期値 $]**, 開始時の刺激レベルの値を指定します。浮動小数点数でなければいけません。 **[誤反応数 $]**, 正の整数を指定します。負反応がここに定められた回数連続すると刺激レベルが減少します。 **[正反応数 $]**, 正の整数を指定します。正反応がここに定められた回数連続すると刺激レベルが増加します。 **[最小値 $]**, 刺激レベルの最小値を浮動小数点数で指定します。例えば刺激のRGB値を変化させる場合、値が-1.0より小さくなると正常に表示されませんが、そのようなときにこのパラメータで下限の値を定めます。 **[最大値 $]**, 刺激レベルの最大値を浮動小数点数で指定します。例えば刺激のRGB値を変化させる場合、値が1.0より小さくなると正常に表示されませんが、そのようなときにこのパラメータで下限の値を定めます。 刺激を変化させる量を決めるには、 :numref:`tbl-staircase-parameters-stepsize` のパラメータを使用します。 .. tabularcolumns:: |p{10zw}|p{30zw}| .. _tbl-staircase-parameters-stepsize: .. csv-table:: 刺激の変化量を決定するパラメータ :widths: 40, 60 **[ステップサイズ $]**, 刺激レベルの変化量を浮動小数点数で指定します。リストが指定された場合、最初はリストの0番目の要素の値が用いられ、変化方向が反転する度にリストの次の要素の値が新たな変化量となります。 **[ステップタイプ]**, lin、log、dbのいずれかを選びます。 **[ステップタイプ]** は、 **[ステップサイズ $]** と組み合わせて使用します。 **lin** **[ステップサイズ $]** に入力された値がそのまま現在の刺激レベルに加減算されます。 **log** 現在の刺激レベルがl、ステップサイズが s とします。刺激レベルを増加させるときには次の刺激レベル値を :math:`l \times 10.0^{s}` 、減少させるときには :math:`l \div 10.0^{s}` とします。 **db** 現在の刺激レベルがl、ステップサイズが s とします。刺激レベルを増加させるときには次の刺激レベル値を :math:`l \times 10.0^{s/20.0}` 、減少させるときには :math:`l \div 10.0^{s/20.0}` とします。 一連の手続きが終了する条件を決めるには、 :numref:`tbl-staircase-parameters-terminate` のパラメータを使用します。 .. tabularcolumns:: |p{10zw}|p{30zw}| .. _tbl-staircase-parameters-terminate: .. csv-table:: staircase終了を決定するパラメータ :widths: 40, 60 **[反転回数 $]**, 終了までに最低限必要な反転回数を自然数で指定します。ただし、 **[ステップサイズ $]** にリストが入力されていて、そのリストの長さが **[反転回数 $]** より長い場合は **[反転回数 $]** のリストの長さの回数反転するまで終了しません。 **[繰り返し回数 $]**, 終了までに最低限必要な試行数(参加者の判断回数)を指定します。この回数を過ぎても、 **[反転回数 $]** または **[ステップサイズ $]** によって定められた回数反転していなければ終了しません。 なお、以下の設定をすると、刺激レベルを1.0から0.1ずつ減少させていく通常の極限法(下降系列)のようにも使えます。ただし、最初の刺激レベルがいきなり負反応の場合はうまくいきませんので十分に高い **[初期値 $]** を設定する必要があります。 - **[初期値 $]** = 1 - **[ステップサイズ $]** = 0.1 - **[ステップタイプ]** = lin - **[誤反応数 $]** = 1 - **[正反応数 $]** = 1 - **[反転回数 $]** = 1 - **[繰り返し回数 $]** = 0 チェックリスト - Builderで階段法の実験を作成することができる。 Interleaved staircasesループについて学ぼう ------------------------------------------------ interleaved staircasesループは、複数のstaircaseを切り替えながら実行させる時に使用します。 :numref:`fig-multistaircase-properties` にinterleaved staircasesループのプロパティ設定ダイアログを示します。interleaved staircasesループでは、複数のstaircaseのパラメータを条件ファイルから読み込んで実行します。 条件ファイルは **[繰り返し条件]** に指定します。各staircaseを実行する順番は **[切り替え方法]** からrandom、sequential、fullRandomの中から選びます。これは **[Loopの種類]** のrandom、sequential、fullRandomと同じ意味です。 **[繰り返し回数 $]** には各staircaseでの最小試行数を指定します。 **[ステアの種類]** では、各staircaseの刺激レベル変更方式をsimple, QUEST, questplusのいずれかから選択することができます。大文字と小文字のQUESTがありますがどちらも同じです(1.82.02で確認)。simpleは前節で解説したstaircaseと同じです。QUESTはいくつかの仮定の下で効率的に閾値を探索するアルゴリズムです。詳しくはWatson & Pelli (1983). QUEST: A Bayesian adaptive psychometric method. *Perception & Psychophysics*, 33(2), 113-120などを参照にしてください。questplusはWatson (2017). QUEST+: A general multidimensional Bayesian adaptive psychometric method. Journal of Vision, 17(3):10. doi: 10.1167/17.3.10.で提案されたQUEST+アルゴリズムに対応するものですが、ここでは解説を省略します。 .. _fig-multistaircase-properties: .. figure:: fig11/multistaircase-properties.png :width: 60% interleaved staircaseループのプロパティ設定ダイアログ interleaved staircasesの条件ファイルの例を :numref:`fig-multistaircase-properties` に示します。条件ファイルは必ず以下の列を含んでいなければいけません。 **label** データの出力時に各staircaseを区別するために用いられるラベル。すべての行で異なっている必要があります。 **startVal** 各staircase開始時の刺激レベルの値です。 **startValSd** (QUESTのみ) 閾値の推定値の標準偏差の初期値です。 上記以外の列の値は、Builderの変数として読み込まれます。例えば :numref:`fig-multistaircase-properties` にはsfという列がありますが、この列の値をGratingコンポーネントの **[空間周波数 $]** に指定したい場合は、単に **[空間周波数 $]** にsfと書けばよいということです。 :numref:`tbl-multistaircase-class-parameters` に示した名前を持つ列は、staircaseのパラメータとして利用されます。各パラメータの意味はPsychoPy公式サイトのAPIをご覧ください( `StairHandler `_ および `QuestHandler `_ )。 .. _fig-multistaircase-conditions: .. figure:: fig11/multistaircase-conditions.png :width: 90% interleaved staircaseループのプロパティ設定ダイアログ .. tabularcolumns:: |p{8zw}|p{28zw}| .. _tbl-multistaircase-class-parameters: .. csv-table:: staircaseのパラメータとして解釈される変数名 :widths: 25, 75 :delim: ; simpleの場合; nReversals, stepSizes, nTrials, nUp, nDown, extraInfo, stepType, minVal, maxVal QUESTの場合; pThreshold, nTrials, stopInterval, method, stepType, beta, delta, gamma, grain, range, extraInfo, minVal, maxVal, staircase チェックリスト - Builderでinterleaved staircasesの手続の実験を作成することができる。