jsPsychで「参加者の名前」を刺激として利用した潜在連合テスト(Implicit Association Test)を実装する

jsPsychで「参加者の名前」を刺激として利用した潜在連合テスト(Implicit Association Test)を実装する

jsPsych

Online Psychological Experiment Advent Calendar 2020の16日目の記事になります。

潜在連合テスト(Implicit Assosication Test: IAT)は、潜在的態度を測定される際に広く使われている課題です。色々なソフトウェアが存在しますが、jsPsychを利用することで、比較的簡単に実験室でも、オンラインでも利用できるIATを作成することができます。

しかし、jsPsychには、「参加者の名前」を質問し、その後のIATに直接組み込む機能は用意されていません。実験室実験であれば、名前を聞いて課題に入れるのは簡単ですが、オンラインで大量に参加者を募集する場合、この方法は現実的ではありません。また、潜在的自尊心などの測定では、参加者自身の「姓・名」を実験刺激に組み込んだ研究も存在し(e.g. Karpinski, 2004; Karpinski & Steinman, 2006)、一定数需要があることと思います。

この記事では、jsPsych上で、参加者の名前を刺激として利用するIATの実装方法を紹介します。調査課題に参加者の名前を質問する試行を用意し、それを後半のIATの刺激として反映させます。

概要:IATに参加者の名前を組み込む

サンプルプログラム

kscscr.github.io

どんな感じのIATになるのかは百聞は一見に如かずだと思うので、実際にやってみてください↑(PCアクセス要:データは保存されません)。所要時間はそれほどかかりません。

プログラムの仕組み

jsPsych 名前
実験プログラムの構成としては、IATの前に「姓・名を質問する試行」を用意し、そこで聞いた「名前」を変数として一時保存。その後、IATで適宜変数を取り出し、課題に反映させる方法を取ります。

なお、本記事ではある程度、jsPsychの構成について理解があるという前提で進めていきます。

jsPsychで実装

大きく分けて、「名前を取得する試行」と「IATの試行」の2つが必要になります。説明文などの試行の作成方法については、今回は省きます。

名前を取得する試行

jsPsych IAT
jsPsychの”survey-text“プラグインを使用して、名前を取得する試行を作成します。それぞれ、姓と名の記入方法の例を加えて、フォームを作成します。

オンライン実験の場合は、参加者が警戒して名前を入力してくれないことも想定されるので、注意書きを加えておきましょう。

var name_trial= {
  type: 'survey-text',
  preamble:'<p>次に行う実験でどうしても必要なため記入をお願いしております。</p>'+' <p>ここで収集した名前については、次の課題でのみ使用し、分析には使用致しません。</p>'+'<p>プライバシー保護には十分配慮致します。</p>',
  questions: [
        {prompt: '名字(姓)を入力してください(例:田中 太郎さんなら:田中)', name: 'name_up', required:'True'},
        {prompt: '名前(名)を入力してください(例:田中 太郎さんなら:太郎)', name: 'name_down', required:'True'}
      ],
  button_label: '次へ',
  on_finish: function(data){
    //上で質問した名前を取得
    nameup = JSON.parse(data.responses).name_up;
    namedo = JSON.parse(data.responses).name_down;
    
    //addPropertiesに姓・名を保存
    jsPsych.data.addProperties({name01: nameup});
    jsPsych.data.addProperties({name02: namedo});
  }
};

具体的なコードはこちら。survey-textプラグインの記述方法通りに記載します。このコードで特殊な処理を施しているのは、questionon_finishの2点。

questionの部分では、後のon_finishのところで姓・名を取り出しやすい様に、name01, 02で回答の保存名をname_upname_downとしています。

on_finishでは、ここで入力してもらった名前をJSON.parseを使って姓・名それぞれ抽出し、jsPsych.data.addPropertiesを使ってプロパティとして保存しています。

jsPsych IAT
実験最後、結果をjsPsych.data.displayDataで表示させた時

jsPsych.data.addPropertiesは主に実験条件などを記録しておくに使うことが多いのですが、これを応用して名前を一時的に保存しています。

IATで表示させる

jsPsych IAT
次は、上で取得した名前をこの様にIATの刺激として表示するための実装をします。

var trial01 = {
  timeline:[
    {
      type: 'iat-html',
      stimulus: jsPsych.timelineVariable('stimulus'),
      stim_key_association: jsPsych.timelineVariable('stim_key_association'),
      html_when_wrong: '<span style="color: red; font-size: 80px">X</span>',
      bottom_instructions: '<p>間違えるとバツが表示されます。バツが表示されたら反対のキーを押してください</p>',
      force_correct_key_press: true,
      display_feedback: true,
      left_category_key: 'E',
      right_category_key: 'I',
      left_category_label: ['快い','自己'],
      right_category_label: ['不快な', '他者'],
      response_ends_trial: true
    }
    ],  
  //IATで使う刺激
  timeline_variables: [
    //自己
    {stimulus: function(){
      var nameu = jsPsych.data.get().last(1).values()[0].name01;
      return nameu;
    }, stim_key_association: 'left'},
    {stimulus: function(){
      var named = jsPsych.data.get().last(1).values()[0].name02;
      return named;
    }, stim_key_association: 'left'},
    {stimulus: '自分', stim_key_association: 'left'},
    {stimulus: '私', stim_key_association: 'left'}
    ],
  repetitions: 1
};

今回は「自己」の刺激のみ抜粋して表示しています。

通常、IATの刺激を実装する際には、上記の様にiat-htmlのプラグインを使い、提示したい刺激をtimeline_variablesで指定します。普通の刺激:「私」や「自己」の部分では、{stimulus: '(刺激)', stim_key_association: 'left'}の様に、刺激となる単語と左右どちらのキーを押すかを記述しています。

名前を表示させる場合、まずjavascriptの関数を使いnameu = jsPsych.data.get().last(1).values()[0].name01で、姓を取り出し、変数として保存します(名ならname02)。一時保存した変数を戻り値として返すことで、stimulusに入力した名前(姓・名)を入れています。

あとは、timeline.pushでそれぞれのブロックをname_trialtrial01の順番で指定すればOK。その間に他の試行が入っても無問題。

おわりに

これで、jsPsychを使って実装したIATに、刺激として参加者の名前を表示させることが可能になります。拡張すれば友人の名前を他者として表示させることも可能です。さらに。クラウドワークスで参加者を大量に募集する場合から、一人ずつの場合まで、広く活用できる様になります。

jsPsychで作成した実験をQualtricsに埋め込んで実行する方法・Rによるデータ読み込み
jsPsychで作成した実験を、Qualtricsに埋め込んで実行する方法の紹介です。既に小林さんが「jsPsychの実験をQualtricsに貼り込む」という…
kscscr.com

もちろん、これらをQualtricsに挿入して実行することも可能です。

Enjoy!

P.S.:作成の際に相談に乗ってくださった方々ありがとうございます。
もしjsPsychを使ったIATの作成等で相談がありましたら、ブログのコメント欄かTwitter(リプライ・DM)等で投げて頂けますと、可能な範囲で話相手になります。

今回使用したコード

Online Psychological Experiment Advent Calendar 2020、16日目のサンプルコード - kscscr/OPEad…
github.com

今回使用した実験課題のサンプルコードや必要なファイルを掲載しています。