Qualtricsで相互作用実験する「SMARTRIQS」実践編
by
Soichiro Kashihara
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
SMARTRIQS 実践編 柏原 宗一郎 関西学院大学 社会学研究科/ 日本学術振興会 (DC2) 1
Slide 2
Slide 2 text
目次 I. 入門編:SMARTRIQSの説明と実施まで 1. SMARTRIQSとは 2. 環境構築から実験実施まで 3. 演習1:実際に実験を動かしてみる(最後通牒ゲームを例に) 4. 演習2:日本語化 5. モニタリング II. 基礎編:仕組みの理解と実験の作り方 1. 仕組みを理解する 2. 実験の作り方 3. 演習3:人数と利得構造を変える(公共財ゲームを例に) 4. 演習4:繰り返しにする(公共財ゲームを例に) 5. 演習5:独裁者ゲームを最後通牒ゲームにする III. 実践編/応用編 1. 実験実施する上での注意点(リクルーティング / 質問紙の追加位置) 2. タイムアウトとBotや脱落について 3. チャットテンプレート 4. 自分でサーバーを立てる 5. JavaScriptを使ったカスタマイズ(先制攻撃ゲームを例に) 6. 結果の表示の仕方(補足) 2
Slide 3
Slide 3 text
3.1 実験実施する上での注意点 - リクルーティング - 実践編
Slide 4
Slide 4 text
参加者募集をどこでするか? •複数の参加者を一度に募集する • oTreeなどでも同じ問題に直面する •推奨する(される)リクルーティング方法 • 実験室 • Zoom • Yahoo!クラウドソーシング • MTurk • Prolific 4 大学生対象 一般人対象
Slide 5
Slide 5 text
リクルーティングによる違い •1回あたり少数しか集めない場合 • 実験室実験・Zoom実験 • 参加者の確認・コントロールはしやすい •1度にたくさん集める場合 • YahooクラウドソーシングやMturkなど • 参加者のコントロールは困難 5
Slide 6
Slide 6 text
クラウドソージングで推奨されること 1. 同時に参加者を募集 2. ピーク時間帯のみ参加者を募集 • 例:平日の12~21時 3. リアルタイムの相互作用が含まれることを明確に • なるべく中断せずに回答してもらいたい 4. 通常の研究よりも少し多めに参加者に支払う • 報酬を高くすると離脱率が下がる https://smartriqs.com/best-practices/ 6
Slide 7
Slide 7 text
Mturkなどでの募集のコツ •小さな募集人数の単位で公開する • 数百人一度に募集せず、10~15分ごとに小さな単位で • 例えば30~40人のワーカーで募集 •承認率でフィルター • 99%や100%の承認率でフィルターする https://smartriqs.com/best-practices/ 7
Slide 8
Slide 8 text
3.1 実験実施する上での注意点 - 質問紙の追加位置- 実践編
Slide 9
Slide 9 text
質問紙との組み合わせ •質問紙を追加する • 心理変数と実験行動の関連を見たい! • MATCHやCOMPLETEの前後に追加するだけ •「どっちに追加するべき?」 • 参加者の回答進捗が異なる • リクルーティングの場所によっても変わる • 適切に対処しないとマッチングの問題が生じる 9
Slide 10
Slide 10 text
質問紙の追加場所 ① 実験開始前 • 質問紙 → 実験(MATCH) ② 実験終了後 • 実験(COMPLETE) → 質問紙 10 説明(Intro) SEND BLOCK GET BLOCK 回答表⽰ MATCH BLOCK 回答 COMPLETE BLOCK ここ① ここ②
Slide 11
Slide 11 text
質問紙の配置位置 ① 質問紙 → 実験(MATCH) • 質問紙の数によっては、回答時間に差が生じる • 心理尺度は3つ程度が限界 • Yahooクラウドだと、一度に大量の人が来るので、回答の早い人遅い 人で適度にバラける(らしい) • 重要じゃない変数は後回しにする etc ② 実験(COMPLETE) → 質問紙 • 集まってすぐ実験なので、マッチングの問題は生じにくい • (因果やオーバーラップ効果を考えると先に質問紙をしたい) 11 実は公式はこちらを推奨
Slide 12
Slide 12 text
3.2 タイムアウトとボット
Slide 13
Slide 13 text
参加者の脱落への対処 •実験中参加者が回答を中断 / 参加者が集まらない • 何らかの事情で、実験が止まることがある • 参加者が中断する or 実験プログラムのミス etc •ボット処理が必要 • 不足した参加者を、ボットで補う 13
Slide 14
Slide 14 text
想定される状況1:マッチングしない •MATCH BLOCKに揃わない • 例:3人のゲームなのに、2人しかいない 14 説明(Intro) MATCH BLOCK 回答 ①BOTを追加する BOT ②実験を開始しない
Slide 15
Slide 15 text
想定される状況2:脱落する •GET BLOCKで全員の回答が揃わない • 例:1人がYouTubeを見始めた 15 BOT BOTを追加する
Slide 16
Slide 16 text
(MATCH BLOCKで)参加者が集まらないとき ① ボットとデフォルトの応答 1. マッチングしない(想定状況1):BOT追加 2. 脱落する(想定状況2): BOT追加 • 参加者が最大待機時間を超えると、ボットが回答者を補う ② デフォルトの回答のみ 1. マッチングしない(想定状況1):実験開始しない 2. 脱落する(想定状況2): BOT追加 • 実験開始するには、まず人数が揃う必要がある • 実験途中で、誰かが非アクティブになった場合や脱落した場合のみ 16
Slide 17
Slide 17 text
ボットの設定の仕方(埋め込みデータで) ① ボットとデフォルトの応答 • botMatch = yes • defaultData • maxWaitTime = デフォルトは3分(180秒) ② デフォルトの回答のみ • botMatch = (空白) • defaultData • maxWaitTime = デフォルトは3分(180秒) 17
Slide 18
Slide 18 text
Qualtrics上での画面 •埋め込みデータのはじめの方に設定する 18
Slide 19
Slide 19 text
MATCH BLOCKで集まらない場合① ① ボットとデフォルトの応答なら:botMatch = yes • グループに2人(A, B)しか来なかった場合 • maxWaitTime 経過すると、A, Bさんには、BOTとマッチし たことが通知される 19 Cさん Aさん Bさん
Slide 20
Slide 20 text
MATCH BLOCKで集まらない場合② ② デフォルトの応答のみ:botMatch = (空白) • グループに2人(A, B)しかこなかった場合 • maxWaitTime 経過しても実験開始しない 20 Cさん Aさん Bさん
Slide 21
Slide 21 text
GET BLOCKで脱落する場合① •Aさん, Bさんが回答し、Cさんが画面で止まった場合 • maxWaitTime 経過すると、A, BにはCさんが脱落と表示 21 Cさん Aさん Bさん
Slide 22
Slide 22 text
SEND BLOCKで脱落する場合② •脱落したCさんにも • コンピューターによって脱落したことが表示される 22 Cさん Aさん Bさん
Slide 23
Slide 23 text
BOTであることを知られないようにする •MATCHやSEND BLOCKを編集する • 日本語化や文章変更によって • BOTであることを知られないようにもできる 23
Slide 24
Slide 24 text
3.3 チャットテンプレート
Slide 25
Slide 25 text
チャット •“Communication”実験 • サンプルがチャットではない • 上2つは、SEND, GETで送受信 •CHAT BLOCKの実験 • この5つはCHAT BLOCK使用 25
Slide 26
Slide 26 text
チャットを試してみよう •Demoの”Single-Stage Chat”を試す • 2人用のシンプルなチャット • Chat_single_stage_2_TEMPLATE_11-6-2019.qsf • researcherIDとstudyIDをセットして試す 26
Slide 27
Slide 27 text
アンケートフローでの流れ •とてもシンプル • SENDやGETの代わりに「CHAT BLOCK」に 27
Slide 28
Slide 28 text
チャット専用ブロック:CHAT BLOCK •CHAT BLOCK • 1セッションにおいて、複数回メッセージを送信できる •Variables • チャット保存用の埋込データ • 名前はなんでもOK(サンプルはchatLog) • chatName • ここに指定した埋め込みデータに、チャットログが保存される • chatDuration:制限時間(10〜600秒) • chatInstructions:説明文 • allowExitChat:退出ボタン • その他:ウィンドウサイズ変更など 28 https://smartriqs.com/chat/
Slide 29
Slide 29 text
チャットの履歴 •chatNameで指定した埋め込みデータに保存 • 内容はチャットの画面そのまま • HTML形式で保存される 29 Aさんの回答列 → Bさんの回答列 →
Slide 30
Slide 30 text
グループ分け •4人などの場合、2グループ作成も可能 • 設定する埋め込みデータを条件分岐で変える • こんなことにも:実験課題を行い、成績上位2名 と 下位2名 30
Slide 31
Slide 31 text
3.4 自分専用の SMARTRIQSサーバーを設置する
Slide 32
Slide 32 text
SMARTRIQSサーバーを設置する •公式が用意したものを使っている • このサーバーを自分で用意することもできる • 設置用のファイルが公開されている 32
Slide 33
Slide 33 text
自分でサーバーを設置するメリット •メリット • 公式サーバーに影響されない • 何でも情報を送信できる • 1グループの人数制限を撤廃可能 •デメリット • 自分でサーバー管理する必要あり • サーバーのキャパなどは見極める必要あり • モニタリングできない 33
Slide 34
Slide 34 text
実験者・先生向け(あとは倫理申請) •万が一のために知っておいて損はない • 公式サーバーがダウンする可能性もある • バックアップ手段は、あって損はない •外部サーバーに公開できないデータもアップできる • 実験のインタラクションで、他人が管理するサーバーに送る とまずい情報をやりとりする場合 34
Slide 35
Slide 35 text
①サーバーを借りる •一般的なレンタルサーバーでOK • ドメイン設定とFTPソフトでファイルアップできる • Xserverとかさくらサーバー etc 35
Slide 36
Slide 36 text
(余談)サブドメイン設定 •多くのサーバーではサブドメインを設定できる • 実験用ドメインを作成できる • メインアドレス: https://hogehoge.com • サブアドレス: https://experiment.hogehoge.com 36
Slide 37
Slide 37 text
② GitHubからファイルをダウンロード •公式GitHubからファイルをダウンロード • 6つのPHPファイルが必要 37
Slide 38
Slide 38 text
③ レンタルサーバーにアップロード •ドメイン直下にsmartriqsフォルダ作成してアップ • サーバーのURLは、以下になる serverURL = https://www.yourdomain.com/smartriqs 38
Slide 39
Slide 39 text
④フォルダ作成する •SMARTRIQSフォルダ内に適当なフォルダを作成 • このフォルダが、researcherIDとなる • 必要なユーザー分だけ作成する 39
Slide 40
Slide 40 text
⑤アンケートフローで設定 •serverURL • 先ほどの通りにリンクを設定する serverURL = https://www.yourdomain.com/smartriqs •researcherID, studyID • researcherID: さっき作ったフォルダ名 • studyID: なんでもOK 40
Slide 41
Slide 41 text
8人よりも多い人数で実験する場合 •PHPファイルを編集する • ファイルの人数部分を変更するだけ • (公式でやってないのでリスクもあるはず) https://kscscr.com/archives/smartriqs- group-size-extend.html 41
Slide 42
Slide 42 text
3.5 複数の情報を送信する (JavaScriptで拡張) 先制攻撃ゲームを例に
Slide 43
Slide 43 text
個人から複数のデータを送信する •参加者一回につき一つの情報しか送信できない • 投資ポイントや実験での選択など • 「反応時間と選択の両方を送信したい!」 •例:先制攻撃ゲーム • 500円の持ち金/ 制限時間 30秒 • 先に攻撃すると100円消費し、相手から400円減らす • 攻撃しないと、お互い500円もらえる 43 VS
Slide 44
Slide 44 text
ゲームの構造 •流れ 1. 30秒以内に攻撃する or 攻撃しない 2. 「選択」と「反応時間」を集計 3. 結果を表示する 1. 自分:攻撃した場合 1. 相手も攻撃 1. 相手より反応時間が早いかどうか 2. 相手が攻撃しない 2. 自分:攻撃しない 1. 相手が攻撃 2. 相手が攻撃しない 44
Slide 45
Slide 45 text
反応時間と選択データを一緒に送信する •SEND BLOCK • 1ステージ1データのみ送信できる • 一緒にまとめて送信すればいい • 埋め込みデータ”set” • カンマ区切りで”選択”と”時間”を一緒にサーバーへ 45
Slide 46
Slide 46 text
GET BLOCKは通常通り •回答は通常通り受信する • まとめて送ったデータをそのまま受け取る 46
Slide 47
Slide 47 text
JavaScriptで回答を分解する •ブロック内にJavaScriptを書く • JavaScriptで分割する • 相手の選択 + 反応時間 47
Slide 48
Slide 48 text
豆知識:JavaScriptで埋め込みデータの操作 •JavaScriptで埋め込みデータの操作 • 呼び出し • 差し込みテキストを挿入と同じ形式で呼び出す • 設定する • setEmbeddedDataを使う 48
Slide 49
Slide 49 text
ChatGPTに頼る •GPT-4oはいい感じのコードを書いてくれる 49
Slide 50
Slide 50 text
(余談)もっと簡単な解決策 •SEND・GET BLOCKを2つ連続させる • 1つ目(Stage1):攻撃 or 攻撃しない選択を送信 • 2つ目(Stage2) :反応時間を送信 50 SEND BLOCK1 GET BLOCK1 SEND BLOCK2 GET BLOCK2