目的

ランダム化・並び替えは一口に言っても様々なパターンがありますが,目的は実験・調査に必要な任意の配列を作成することです。ここでは使用頻度が高い方法を説明していきます(徐々に追加予定)。  jsPsychの関数の方が容易にランダム化・並び替えを実行できるので,jsPsychのランダム化を行う関数であるjsPsych.randomizationを用いています。もちろん,javascriptの関数を用いたり,より一般的なループを用いた並び替えも可能ですので,お好みの方法を用いてください。ここで紹介する方法によってランダム順の配列も含め,目的の配列を生成できるため,試行の設定でランダム呈示(randomize_order: true)にする必要はないでしょう。なお,ここではランダム化・並び替え部分のコードだけを紹介します(index.htmlでの実装は省略します)。  なお,ここで紹介していない方法として,Excelで参加者分の刺激割り当てを別途作成して,それを用いるといった力業もあるかとは思います。

jsPsychでのjsPsych.randomizationの説明

公式での説明も確認しながら進めましょう。

jsPsych.randomization - jsPsych

配列から要素をランダムに抽出する

以下のような場合に用います。

重複なしでランダムに抽出する

jsPsych.randomization.sampleWithoutReplacement(配列, 抽出数)を使います。配列(wordList)から,任意の抽出数で要素をランダムに抽出した配列(targetList)を作成します。重複しないように抽出するので,配列の要素数以下の抽出数であれば,要素は重複しません(同じ刺激は選ばれない)。

//単語リスト
const wordList = ["one", "two", "three", "four", "five"];

//単語リストから3個をランダムに選んだターゲット語リストを作成
const targetList = jsPsych.randomization.sampleWithoutReplacement (wordList, 3);

重複ありでランダムに抽出する

jsPsych.randomization.sampleWithReplacement(配列, 抽出数, 重みづけ)を使います。配列(wordList)から,任意の抽出数で要素をランダムに抽出した配列(targetList)を作成します。要素は重複します(同じ刺激は選ばれる可能性がある)。重みづけによって,各要素の頻度を調整できます(例では省略)。

//単語リスト
const wordList = ["one", "two", "three", "four", "five"];

//単語リストから3個をランダムに選んだターゲット語リストを作成
const targetList = jsPsych.randomization.sampleWithReplacement (wordList, 3);

要因計画に基づいた配列の作成

ここで紹介する方法は少し複雑ですが,要因計画(実験デザイン)に基づいて任意の配列を作成する方法です。この方法を利用すると,比較的,簡単に要因に合わせた刺激リストを作成できます。ぜひ利用してみてください。

各刺激を要因の各水準に均等に割り当てた配列の作成