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