Qualtricsで相互作用実験する「SMARTRIQS」実践編
by
Soichiro Kashihara
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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