Builder Tips:一定数の試行ごとに休憩する

心理実験では普通被験者の疲労などを考慮して、何試行かおきに休憩を入れるのが普通です。それをCoderコンポーネントを利用して実現します。

例えば、以下の実験プログラムのループプロパティを見てみると、「2パラメータ、300条件」とあります。つまり、300試行を休憩無しに行うようなデザインになっていることがわかります。これはさすがに被験者にとっての負担が多すぎるでしょう。そこで、20試行に一度休憩を取ることができるように変更してみましょう。

 

まずは「Rest」という名前のルーチンを作り、その中に休憩用のメッセージを呈示するテキストコンポーネントと先に進む際のキー押しを取得するキーボードコンポーネントを置きます。

 

それが出来たら「trial」ルーチンにcodeコンポーネントを作成して、コードを記入していきます。まず、”実験開始時”タブを開き、以下のコードを記入します。

trialCounter = 0
nRestTrial = 20

trialCounterという変数には今何試行目かという数値を入れますので、まず最初に初期化(0を代入)します。nRestTrialという変数には何試行おきに休憩を取るかを値で入力します。ここは実験計画に応じて変更可能です。

 

次に”Routine開始時”タブを開いて、以下のコードを入力します。

trialCounter = trialCounter + 1

if trialCounter % nRestTrial == 0:
    isRest = 1
else:
    isRest = 0

まず、一行目ですがtrialCounterに1加えることで、現在の試行数を更新しています。その次はifステートメントですが、ここに新しい記号「%」があります。これは割り算の剰余(余り)を出してくる演算子です。例えば「10 % 3」と書くと、10を3で割った余りである「1」を返してきます。

20試行おきに休憩を取るとなると、試行数を20で割って余りが0になる試行の時に休憩を取ればいいということになります。このコードでは、現在の試行数trialCounterをnRestTrial(=20)で割ったときに余りが0になるときには、isRestという変数に1を、そうでなければ0を代入することになっています。

 

これで下準備が完成しました。変数isRestの値が1の時はrestルーチンを実行し、0の時はrestルーチンをスキップするように設定します。このような処理の分岐をBuilder上で行う際にはループを利用するとよいでしょう。

まず、restルーチンだけを囲むループを設定します。その上で、その繰り返し回数に先ほど設定したisRestを指定します。

ループの回数を0に設定すると、その内部の処理が実行されずスキップされます。これを利用したテクニックです。

今回は非常にシンプルな分岐でしたが、複数のループを使うことによって、より複雑な処理分岐を行うことも可能です。必要に応じてチャレンジしてみてください。