前回(単純再認2(計算段階追加) )で作成した単純再認記憶課題において,計算段階のランダム実施と教示文などを追加し,実験として完成させます。
単純再認記憶課題において,単語の学習後の遅延時間の有無が再認テスト成績に与える影響を検討したいとします。例えば,遅延時間を置かない直後条件,遅延時間を10秒置く遅延条件を設定し,参加者ごとにいずれかの条件をランダムに実施することを考えてみます。ここまでの実験では,学習段階,計算段階,再認テスト段階の3段階を実施しているので,計算段階を行うかどうかを参加者ごとにランダムに決定することにします。
では,どうやってランダムに実施すれば良いでしょうか?今回は,参加者ごとにランダムな参加者番号を付与し,その参加者番号に基づいて計算段階の有無を決定してみたいと思います。なお,対面実験などで参加者番号を実験者が付与できる環境ではカウンターバランスを取ることができるため,この方法を紹介していますが,完全にランダムな実施でよい場合はSequenceで要素をランダム化 で紹介されているやり方がより簡単です。
参加者番号のランダム生成は,実験開始前に行うことにします。実験開始画面を作成し,その画面を呈示している時に参加者番号のランダム生成してみます。前回(単純再認2(計算段階追加) )までに作成したプログラムを開いて,以下のような作業を行いましょう。
実験開始画面としてlearningPhaseの前にScreen(canvas)を追加してください。名前は「start」としておきましょう。
Contentで画面中央にテキストを追加し,「準備ができたら,スタートボタンを押してください。実験がはじまります。」と入力してください。
前回の正誤判断のボタンのように,画面の下部に円とテキストを追加し,スタートボタンを作成してください。作成したスタートボタンにはAOIを割り当て,ラベルを「startBtn」としてください。
「Behavior」の「Responses」で以下のように設定してください。
次に,参加者番号のランダム生成と計算課題の有無を決めるスクリプトを設定します。「Scripts」を選び,「before: prepare」のタイミングに,以下のコードをコピー&ペーストしてください。このコードでは,digits
に指定した桁数の参加者番号のランダム生成にします。以下は10桁の参加者番号のランダム生成しています。
//参加者IDをランダム生成
const digits = 10;
const participantID = this.random.range(10**digits, 10**(digits+1));
this.state.participantID = participantID;
これで,start画面の完成です。
ここまでの流れを動画にしたので,こちらも参照してください。
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1d5b502f-83e7-482d-a2e6-cfbb3c57274a/reognition_3.mov
先ほど作成した参加者番号を元に計算段階を実施するかどうか設定します。ここでは,参加者番号を任意の数で割った時に生じる余りを使って条件分岐させます。よく用いられる方法ですが,詳しい説明を知りたい方は以下のボックスを読んでください(特に関心がない方は以下のボックスは飛ばしてください)。
<aside> 📝 例えば,参加者番号が「5」だったとします。この時,「5」を「2」で割った場合には,余りは1になります(5÷2=2・・・1)。参加者番号が「4」だった時に「2」で割ると,余りは0です(4÷2=2・・・0)。つまり,ある数(X)を任意の数(Y)で割った時の余り(Z)は,0からY-1の範囲を取るわけです。ある数(X)を「2」で割れば,取り得る余りは「0」か「1」ですし,「3」で割れば,取り得る余りは「0」か「1」か「2」になります。このように,ある数を条件数で割った余りによって任意の数の条件分岐を行うことができます。今回は計算課題の有無という2通りの条件があるので,「2」で割り,「0」か「1」で条件分岐させます。 今回用いたように,心理学実験の多くでは参加者番号を生成するので,参加者番号が条件分岐の変数としてよく使われます(ただし,参加者番号の生成方法には注意しましょう)。
</aside>
参加者番号によって計算段階の有無を決定するため,lab.jsのskipという設定を利用します。skipは,入力した条件式に当てはまる場合に当該コンポーネントを飛ばす(skip)という設定です。では,以下のような手順でskipを設定してください。