PsychoPyでランダムにイベント挿入 - 井関龍太のページ

ホーム   編集 凍結 差分 バックアップ 添付 コピー 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

PsychoPyでランダムにイベント挿入

Last-modified: 2016年11月24日 (木) 11:07:31 (726d)
Top > PsychoPyでランダムにイベント挿入

試行間にランダムにイベントを挿入する

心理学の実験では,同じような試行をくり返し実施してデータを測定することは一般的です。
しかし,研究の目的によっては,ときどき実験参加者に予測のつかないタイミングで別のイベントを挿入したいことがあります。
たとえば,ランダムに何回か一回のみ,別の刺激を提示したり,参加者に質問を行ったりするなどです。

今回は,Codeコンポーネントを使ってランダムなタイミングで試行間に質問を挿入するサンプルを紹介します。

サンプルの概要

まず,サンプルのファイルをダウンロードしてください。
下のアイコンを右クリックして「対象をファイルに保存」を選んでください。
または,保存のポップアップから「ファイルを保存する」を選んでください。
プログラムはPsychoPy v.1.83.04で作成しています。

fileInterruptReading.zip

ダウンロード対象はzipフォルダになっていますので,右クリックして「すべて展開」を選び,圧縮フォルダを展開してください。
PsychoPyで作成した実験ファイル(InterruptReading.psyexp)のほかに,Excelファイルがひとつ入っています。

今回のサンプルは,文章を適当な長さに区切って一行ずつ表示するプログラムです。
実験参加者は一行読み終えるたびにボタンを押して次の行を表示させます。
このときのボタン押し時間=読むのにかかる時間を測定する仕様になっています。
ここまでであれば,単に文章を読む時間を測るだけのプログラムですが,この実験では,さらに,文章を読んでいるときの参加者の状態について尋ねる質問をランダムなタイミングで表示します。
質問は,質問画面が現れる直前について,文章を読むのに集中していたのか,ついつい他のことを考えていたのかを尋ねるものです。
このサンプルでは,2つのRoutineを用意しています。

disp1.png

ひとつは,文を一行ずつ提示するのに使うRoutineです(trialという名前にしています)。
このRoutineは条件ファイル(textstimuli.xlsx)で設定したテキスト刺激をひとつずつ,ファイルの順番に表示するものです。

disp2.png

もうひとつは,質問画面を表示するRoutineです(probeという名前にしています)。
テキスト刺激を提示してキーボード反応を測定する点はtrialと同じですが,テキスト刺激の内容は質問文に固定してあります。
また,yかn,左矢印か右矢印のキーによる反応だけを受け付けるようにしています。
さらに,このRoutineにCodeコンポーネントを設定しています。

さて,この構成でプログラムを実行すると,通常はtrialのあとに毎回probeが実行されるはずです。
これでは期待通りの動作とはいえません。
そこで,Codeコンポーネントを使って特定の試行でのみprobeのRoutineが実行され,その他の大多数の試行ではprobeをスキップするように変更します。

まず,Codeコンポーネントの“実験開始時”のタブにどの試行で質問画面を提示するかを決めるためのコードを書きます。

disp3.png

ちょっと込み入っていますが,これは質問画面の配置に際していくつかのルールを決めているためです。
サンプルでは,テキストの量が少ないのでランダムなタイミングで3回,質問画面を提示する設定にしています。
また,たとえランダムだとしても,何試行も連続で質問をするのは好ましくない内容なので,最低でも5試行以上は間隔を空けてプローブを配置するように設定します。
さらに,文章を読みはじめてから間もないタイミングでは,多くの人は文章の内容に集中していると思われるので,最初から10試行目までは質問画面を配置しないようにしています。

disp4.png

質問画面の提示位置を決めたら“フレーム毎”のタブに,各試行でprobeのRoutineを実行するかどうかを判定するコードを記入します。

disp5.png

最後に,このサンプルでは“実験終了時”のタブにもうひとつのコードを設定しています。
これは本来,今回の,ランダムにイベントを挿入するというテーマとは関係のないものですが,日本語を刺激とした実験の場合に設定したくなる内容なのでここで扱っています。
PsychoPyデフォルトの設定で出力されるデータファイルは文字コードがUnicodeになっています。
これをそのままExcelで開くと日本語が化けて表示されます。
文字コードを変換したり,Unicodeで開くようにExcelを設定してもよいのですが,そのような操作をしなくてもすむよう,出力ファイルの文字コードを日本語版のExcelでよく使うもの(Shift_JIS)に変換するように指定するのがこのコードです。
このタブのコードを追加しておくと,通常の出力ファイルのほかに,末尾に“_sjis”と付いたCSVファイルが出力されるようになります。

カスタマイズの方針

提示するプローブの数やプローブの最小間隔,最初の何試行目まではプローブを提示しないなどのパラメータを適宜希望するものに変更して利用してください。

サンプルのようにCodeを使って参加者ごとにランダムにするのでなく,実験者側で手動で挿入イベントの提示タイミングを決めるのであれば,話はずっと簡単になります
“実験開始時”のタブのコードから“import random”のみを残して他を削除し“probePos”のみを具体的な試行番号で指定すればすみます。
このとき,PsychoPyでは,試行はプログラム的には0番目から番号が付けられていることに注意してください。
たとえば,1試行目と5試行目にイベントを挿入したいのであれば,“probePos = [0, 4]”としてください。

今回のサンプルは,メインの試行と同じようにテキスト刺激の提示とキーボード反応を行うものでしたが,Routineの内容をどのように設定するかによってさまざまな挙動をさせることが可能になると思います(音声や画像を提示するなど)。

TrackBack(0) | 外部リンク元 | このエントリーをはてなブックマークに追加

添付ファイル: filedisp5.png 177件 [詳細]   filedisp4.png 184件 [詳細]   filedisp3.png 226件 [詳細]   filedisp2.png 210件 [詳細]   filedisp1.png 230件 [詳細]   fileInterruptReading.zip 156件 [詳細]