SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
PsychoPyを使った 
初学者向けの心理実験環境の構築 
! 
小川洋和 
関西学院大学 文学部 総合心理科学科
今日の内容 
自己紹介 
PsychoPyとは? 
入門編:実験作成の基礎 
応用編:コードコンポーネントについて 
実験実習・卒論実験に導入する際のノウハウ
自己紹介
専門:実験心理学(視覚的注意・顔認知など) 
自身の実験プログラム環境は、MATLAB+PTBを使用。 
毎年16~12名程度の卒論生を指導。その全員に別々実験 
のプログラムが必要となる。 
➡ 学生自身が自力で学べる心理実験のためのプログラミン 
グ環境の必要性
PsychoPyとは?
PsychoPyの特徴 
心理実験用の刺激呈示・データ収集アプリケーション 
Python言語をベースとしている 
無料で利用できる(オープンソース) 
インストールが簡単 
プラットホームを問わない(Windows / Mac / Linux) 
GUI環境で実験を構築できる(もちろんコードを直接書くことも 
できる) 
パラレルポートなどを利用した外部トリガー出力も可能。
インストール 
PsychoPy Webpage(http://www.psychopy.org)からダウンロードページへ
Windows:「*-win32.exe」ファイルをダウンロード→ダブルクリック 
Mac:「*-OSX.dmg」ファイルをダウンロード 
   ディスクイメージ内のアイコンをアプリケーションフォルダにD&D
コーダ̶(Coder)機能 
Pythonのコードを直接記述するかたちでプログラミン 
グする機能 
ビルダー(builder)機能 
GUIベースで刺激や反応取得のルーチンを配置していく 
ことで実験を作成する機能
Coder View 
通常のエディター機能に加 
え、Outputを表示したりや 
Shellコマンドを実行する機 
能が実装されている。 
CoderとBuilderはメニュー 
から随時切り替え可能。
Builder View ルーチンペイン 
フローペイン
ルーチンペイン 
実験を構成するイベントの時間的な流れが示されている 
注視点・刺激のタイミング 
反応取得の期間など 
フローペイン 
実験内でのルーチンの実行順序を示す。教示や刺激、繰り返し(ルー 
プ)など
コンポーネント 
実験の中で呈示される様々な刺激や反 
応取得のイベント(部品) 
これらを並べることによって試行をデ 
ザインすることができる。
刺激呈示に関するコンポーネント 
Image:画像ファイルを表示 
Text:文字を表示 
Polygon:多角形を表示 
Grating:縞模様を表示 
Dot:一様に運動するドットを表示 
Sound:音声ファイルを呈示 
Movie:動画ファイルを再生
反応取得に関するコンポーネント 
Keyboard:キーボードの反応を取得 
Mouse:マウスカーソルの座標・ボタン状態を取得 
Rating Scale: 
レーティングスケールを表示して反応を取得 
Microphone:マイクから音声を録音 
Cedrus button box:Cedrus社製ボタンボックス 
の制御 
ioLabs button box:ioLabsのボタンボックス制御
その他のコンポーネント 
Code: 
Pythonのコードを入力する。任意のタイミングで 
実行することによって、動的な制御を実現できる。 
ISI: 
大きなサイズの画像を読み込むなど時間が掛かる処 
理を行うための期間を設定 
Parallel out: 
パラレルポートからの信号出力を制御
入門編:実験作成の基礎
実験課題 
二枚の画像の選好判断(2AFC) 
カーソルキーの左右で反応。反応キーと反応時間を記録。 
実験刺激 
10枚の顔画像(001.jpg~010.jpg) 
試行の流れ 
+ 
ブランク 
(500 ms) 
注視点 
(750 ms) 
刺激 
(反応まで)
ブランク
ブランク 
Durationなどを設定する 
この期間に呈示する画像ファ 
イルなどを先読みすることが 
可能(後述)
注視点 
Nameにコンポート名を設定 
(変数などと重複不可) 
呈示タイミング・じいじ時間 
などを設定 
文字の大きさをピクセル単位 
で設定(視覚・画面上での比 
率などでも設定可能) 
位置は画面中央が[0,0]
注視点 
Nameにコンポート名を設定 
(変数などと重複不可) 
呈示タイミング・じいじ時間 
などを設定 
文字の大きさをピクセル単位 
で設定(視覚・画面上での比 
率などでも設定可能) 
位置は画面中央が[0,0]
注視点
刺激画像 
image欄にファイル名を 
記入(プログラムと違う 
フォルダにある場合はパ 
ス名も) 
反応まで呈示し続ける場 
合にはStop欄を空白に 
位置、サイズなどを設定
刺激画像 
image欄にファイル名を 
記入(プログラムと違う 
フォルダにある場合はパ 
ス名も) 
反応まで呈示し続ける場 
合にはStop欄を空白に 
位置、サイズなどを設定
刺激画像
反応取得 
Start, Stopで反応を取得 
する期間を設定 
“Force end of Routine” 
にチェックを入れるとキー 
押しがあった時点でルー 
チンが終了する。 
“Allowed Keys”で受け付 
けるキー種類を設定
反応取得 
Start, Stopで反応を取得 
する期間を設定 
“Force end of Routine” 
にチェックを入れるとキー 
押しがあった時点でルー 
チンが終了する。 
“Allowed Keys”で受け付 
けるキー種類を設定
反応取得
繰り返しの処理(ループ) 
Flowペインから”Insert Loop”をクリック
繰り返しの処理(ループ) 
“LoopType”で繰り返しの 
種類(どのようにランダ 
マイズするか)を設定で 
きる 
“nReps”で繰り返し回数 
を設定 
“conditionsFile”で試行ご 
とのパラメタリストを読 
み込むことができる。
繰り返しの処理(ループ) 
一行目にPsychoPy内 
での変数名を記入 
二行目以降に変数に入 
る値を記入 
一行に記入する値が 
一試行の値となる。
繰り返しの処理(ループ) 
“conditionsFile”でExcel 
ファイルを指定すると、 
読み込まれて先ほど指定 
した変数名が認識されて 
いることがわかる。
繰り返しの処理(ループ)
刺激画像 
先ほど設定した画像のプ 
ロパティを再度開き、設 
定ファイルで指定した変 
数名($imageName1) 
を入力 
“set every repeat”に設 
定することを忘れずに!
完成!
結果の出力 
CSVファイルで各試行の刺激・反応が記録される 
日本語が含まれる場合、文字コードの関係で文字化けする。 
その場合はExcelファイルで出力するように設定を変更す 
ることで回避可能
結果の出力 
CSVファイルで各試行の刺激・反応が記録される 
日本語が含まれる場合、文字コードの関係で文字化けする。 
その場合はExcelファイルで出力するように設定を変更す 
ることで回避可能
Youtubeにストループ課題の作成チュートリアル動画が 
掲載されています。 
http://www.youtube.com/watch?v=VV6qhuQgsiI
応用編:コードコンポーネントについて
コードコンポーネント 
動的な刺激制御 
反応の結果に応じてフィードバックのメッセージを変 
えるなど、動的な刺激制御を行うためには、コードコ 
ンポーネントを利用する。 
Pythonのコードを直接記入することで、条件分岐など 
の複雑な処理を行うことが可能になる。
コード実行タイミング 
実験開始/終了時・ルーチン開始/終了時・各フレームの 
それぞれのタイミングで、スクリプトを実行することがで 
きる。
コードの記入例 
画像の呈示位置(左右)をランダマイズするには? 
先ほどの例では画像ペアの左右が固定なので、試行 
毎にランダムに左右位置を決定する 
反応に応じてフィードバックメッセージを呈示するに 
は? 
反応時間が3秒以上の場合に「Too late!」という 
メッセージを表示する。
乱数に応じてファイル名をスワップする 
Begin Routineに左の 
ようなコードを記入す 
る。 
Random()は0以上1未 
満の乱数を返す関数 
trials.addDataでここ 
で値を変更した変数を 
指定すると結果ファイ 
ルに書き出される。
乱数に応じてファイル名をスワップする 
Begin Routineに左の 
ようなコードを記入す 
る。 
Random()は0以上1未 
満の乱数を返す関数 
trials.addDataでここ 
で値を変更した変数を 
指定すると結果ファイ 
ルに書き出される。 
コードで指定した変数に変更
結果ファイルの確認 
trials.addDataで指定した変数が挿入されている。 
試行によって画像の呈示位置がスイッチされてることも確 
認できる。
コードの記入例 
画像の呈示位置(左右)をランダマイズするには? 
先ほどの例では画像ペアの左右が固定なので、試行 
毎にランダムに左右位置を決定する 
反応に応じてフィードバックメッセージを呈示するに 
は? 
反応時間が3秒以上の場合に「Too late!」という 
メッセージを表示する。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
メッセージ用のルーチンを作成する 
“Insert routine”から新しくメッセージ呈示用のルーチン 
を作成し、テキストコンポーネントでメッセージを入力す 
る。
反応時間に応じてフラグを立てる 
Trialルーチンでコードを開 
き、”End Routine”のタブに 
左のようなコードを入力する 
各試行の反応時間は 
「response.rt」という変数 
に入っている(結果ファイル 
でも確認できる)。
ループ回数の設定で処理の分岐を行う 
メッセージのルーチンにループを設定し、繰り返し回数に 
先ほどのフラグ変数を指定する。 
➡ ループ回数が0の場合には処理をスキップすることを利 
用した処理分岐
完成!
実験実習・卒論実験などへの導入
関西学院大学文学部総合心理科学科での導入事例 
PsychoPyを学科保有のPC(60台前後)に加えて、全学 
のPC教室にインストール 
2014年度から3年生対象の実験実習科目の一環として 
PsychoPyを使った実験プログラム実習を実施
実際に導入してみた感想… 
UIが取っつきやすいこともあり、想定していたよりも学生 
の理解は早い。 
2週(各連続2コマ)で概容を説明し実験作成例を呈示 
することによって、基本的な実験作成が可能になる。 
もちろん細かい点については個別に説明・対応する必 
要あり 
エラーメッセージが非常にわかりにくいため、トラブルが 
あったときの対処に時間がかかる。
よくあるトラブル 
全般的にエラーメッセージとミスの内容が対応しておらず、 
プログラムの知識がないとデバグが困難である。 
プログラムのパス名(上位階層も含む)に2バイト文字が 
含まれているとプログラムを実行できない。しかも、その 
場合特にエラーメッセージが表示されない。 
コンポーネントで値を変数で指定する場合「Set every 
repeat」にセットする必要があるが、これを忘れることが 
多い。また、その場合に表示されるエラーメッセージから、 
このミスに気づくことが難しい。
PsychoPy導入のメリット・メリット 
学生自身が実験プログラムを手軽に作成できる 
実験に対する理解が深まりやすい 
作成済みのプログラムを渡されるよりも、自身の卒論 
研究に対してより動機づけが強まりやすい(?) 
厳密な時間制御が必要な実験(特に視聴覚刺激・動画)の 
精度には注意が必要。 
Coder機能を使ってコードを自分で書くか、他の実験 
環境の利用を検討した方がよい。
参考資料 
愛媛大学十河先生が非常に詳細(約400ページ!)かつわ 
かりやすいテキストをPDFで提供されているので是非ご覧 
ください。 
PsychoPy Builderで作る心理学実験 
http://www.s12600.net/psy/python/ppb/ 
私のサイトにも簡単な実験作成方法を紹介しています。 
PsychoPy講座 
http://ogwlab.org/?page_id=460

Mais conteúdo relacionado

Mais procurados

Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani
 

Mais procurados (20)

ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learningゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
 
研究分野をサーベイする
研究分野をサーベイする研究分野をサーベイする
研究分野をサーベイする
 
よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理よくわかるフリストンの自由エネルギー原理
よくわかるフリストンの自由エネルギー原理
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
『自由エネルギー原理入門』勉強会1章&2章前半
『自由エネルギー原理入門』勉強会1章&2章前半『自由エネルギー原理入門』勉強会1章&2章前半
『自由エネルギー原理入門』勉強会1章&2章前半
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
 
マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編マルチレベルモデル講習会 理論編
マルチレベルモデル講習会 理論編
 
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -Surveyから始まる研究者への道 - Stand on the shoulders of giants -
Surveyから始まる研究者への道 - Stand on the shoulders of giants -
 
POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用POMDP下での強化学習の基礎と応用
POMDP下での強化学習の基礎と応用
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
SHAP値の考え方を理解する(木構造編)
SHAP値の考え方を理解する(木構造編)SHAP値の考え方を理解する(木構造編)
SHAP値の考え方を理解する(木構造編)
 
Private Recommender Systems: How Can Users Build Their Own Fair Recommender S...
Private Recommender Systems: How Can Users Build Their Own Fair Recommender S...Private Recommender Systems: How Can Users Build Their Own Fair Recommender S...
Private Recommender Systems: How Can Users Build Their Own Fair Recommender S...
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
心理学者のためのJASP入門(操作編)[説明文をよんでください]
心理学者のためのJASP入門(操作編)[説明文をよんでください]心理学者のためのJASP入門(操作編)[説明文をよんでください]
心理学者のためのJASP入門(操作編)[説明文をよんでください]
 
ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築ROS を用いた自律移動ロボットのシステム構築
ROS を用いた自律移動ロボットのシステム構築
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ【DL輪読会】ViT + Self Supervised Learningまとめ
【DL輪読会】ViT + Self Supervised Learningまとめ
 

Semelhante a PsychoPyを使った初学者向けの心理実験環境の構築

Semelhante a PsychoPyを使った初学者向けの心理実験環境の構築 (13)

20170131 python3 6 PEP526
20170131 python3 6 PEP526 20170131 python3 6 PEP526
20170131 python3 6 PEP526
 
MS COCO Dataset Introduction
MS COCO Dataset IntroductionMS COCO Dataset Introduction
MS COCO Dataset Introduction
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
#jjug_ccc #ccc_f1 広告システム刷新の舞台裏 - PHPからJavaに変えてみました
 
科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要科学技術計算関連Pythonパッケージの概要
科学技術計算関連Pythonパッケージの概要
 
Spock's world
Spock's worldSpock's world
Spock's world
 
R spec勉強会
R spec勉強会R spec勉強会
R spec勉強会
 
PHP基礎勉強会
PHP基礎勉強会PHP基礎勉強会
PHP基礎勉強会
 

PsychoPyを使った初学者向けの心理実験環境の構築