SlideShare uma empresa Scribd logo
1 de 94
Baixar para ler offline
今回の資料およびコードはコチラにあります
https://github.com/akrgt/otree-train
!1
oTreeで実験を作ろう.
!2
オンライン実験について:
実習編
明治大学 情報コミュニケーション学部
後藤 晶
akiragoto@meiji.ac.jp
!3
oTreeで実験を作ろう.
oTreeで実験を作ろう.
今日のおはなし
❖oTreeとPythonの関係
❖oTreeによる実験プログラムの作成
❖oTreeによる新たな実験の可能性について
❖振り返り
!4
oTreeで実験を作ろう.
今日のおはなし
❖oTreeとPythonの関係
❖oTreeによる実験プログラムの作成
❖oTreeによる新たな実験の可能性について
❖振り返り
!5
oTreeのWebアプリケーションの基本構成:
❖Pythonのdjangoを使ってページを構成していく
– そのためにMTVモデルが用いられている
• Model:データベースに格納されているデータ
• Template:テンプレートファイルで定義されたページのデザイン
• Views(Pages):表示させるページを決定する
!6
参考:https://www.sejuku.net/blog/26407
models.py:実際のゲームの動きを作る
❖ここにゲームのルールを記入したり,保存すべきデータを定義する.
– ゲーム全般の構成はこのファイル内で行う
!7
!8
ゲームの条件を定義
計算のルールを定義
支払額の選択範囲を定義
templates:この中に実際に表示する画面を入れる
❖htmlで作成する
– 既にあるページに流し込むイメージ
– 個別に設定する項目について違うページを入れ込む
!9
pages.py:
❖実際に画面で表示するものを設定する.
– 数字を答える画面を表示する,計算結果を示すなど.
– ページ遷移もこのページで定義する.
!10
Contributionページに表示
ページ遷移を定義
templateのイメージ !11
ページA
タイトルは共通
フッターは共通
ページB
タイトルは共通
フッターは共通
tests.py:
❖ゲームをパイロットテストする際に使う
– いわゆるbot機能
– 複数人でゲームをする際に,途中離脱された際にも対応できる.
– 今回時間の都合上触れられません.ご了承ください.
!12
1ポイントを支払います
settings.py:全てのプログラムを管理する.
❖関連する項目が多いから次のページへ
!13
settings.py:全てのプログラムを管理する.
❖データベースの設定
❖パスワードなどの設定
❖金額・ポイントの設定
❖言語設定
❖タイムゾーン設定
❖「ROOM」の設定
❖MTurkのための設定
❖使うアプリの設定
!14
settings.py:全てのプログラムを管理する.
❖データベースの設定
❖パスワードなどの設定
❖金額・ポイントの設定
❖言語設定
❖タイムゾーン設定
❖「ROOM」の設定
❖MTurkのための設定
❖使うアプリの設定
!15
oTreeで実験を作ろう.
今日のおはなし
❖oTreeとPythonの関係
❖oTreeによる実験プログラムの作成
❖oTreeによる新たな実験の可能性について
❖振り返り
!16
今回のためにインストールしたもの:
❖Python 3.7
– https://www.python.org/
❖Pycharm
– https://www.jetbrains.com/pycharm/
– コミュニティエディションをインストールしている.
– Professional版をアカデミックで使えるが,登録等が必要であるため
❖この時はwindows環境で開発をしました.
– 一部のパスを適宜読み替えて行ってください.
!17
!18
実験プログラムを
作りましょう.
oTreeで実験を作ろう.
今日の目標:
❖①性別・年齢を尋ねる「アンケート」を作ろう
– 簡単なアンケートフォームを作りましょう.
❖②「公共財ゲーム」を作ろう
– 簡単なインタラクションのあるゲームを作りましょう.
!19
作ろうとしているプログラムの画面: !20
Page1
Page2
①oTreeをインストール&アップデートします:
❖Powershellかコマンドプロンプト(Win),ターミナル(Mac)
で以下コードを入力します.
❖最初にインストールして,アップデートをしましょう.
❖今回での作業を中心とします.
❖今回は”otreetest”という名前の作業フォルダを作ります.
❖例題となるアプリも入れられるけどまずは入れない→ n
!21
pip install -U otree
cd C:¥Users¥[個人のアカウント]¥Desktop
otree startproject otreetest
②アプリを作りましょう:
❖土台となるアプリを作成します.
– ここに手を加えて実験用アプリを作成します.
❖フォルダを移動した後にこのコードを叩きます.
❖これにより” simple_survey”という名前のフォルダが
できます.
!22
otree startapp simple_survey
models.py:実際のゲームの動きを作る
❖ここにゲームのルールを記入したり,保存すべきデータを定義する.
– ゲーム全般の構成はこのファイル内で行う
!23
models.py:実際のゲームの動きを作る
❖models.pyの4つの要素
– class Constants:アプリ内のパラメータを設定する.
• 人数・繰り返しの回数など
– class Subsession
• 繰り返しの各period内だけに関わる変数を定義・計算する.
– class Group
• 同一グループのメンバーに関わる変数を定義・計算する.
– class Player
• 各プレイヤーに関わる変数を定義・計算する.
!24
その他: !25
https://otree.readthedocs.io/en/latest/conceptual_overview.html#conceptual-overview
③models.pyの定義:
class Player(BasePlayer):
name = models.StringField(verbose_name='あなたの名前を教えてください.')
age = models.IntegerField(verbose_name='あなたの年齢を教えてください.')
sex = models.CharField(initial=None,
choices=['男性', '女性'],
verbose_name='あなたの性別を教えてください.',
widget=widgets.Select())
!26
❖simple_surveyフォルダ内のmodels.pyを開く.
❖“class Player(BasePlayer):”に以下を書き足してください.
❖models.pyではデータベースに登録するデータを指定します.
❖Pythonでは大文字と小文字を区別します.気をつけましょう.
③models.pyの定義:データ入力のためのフィールド
❖BooleanField():Yes/No,もしくはTrue/False
❖CurrencyField():ポイント等,プログラム内の通貨
❖IntegerField():整数値
❖PositiveIntegerField():正の整数値
❖CharField():文字列
❖StringField():文字列
❖LongStringField():長い文字列
!27
❖くらいのイメージでどうにか乗り切ってます.
③models.pyの定義:widgetについて
❖何も指定しない:自分で入力,数字の場合は半角数字
が求められるなど.
❖Select():複数の中から選択
❖RadioSelect():ラジオボックスで選択
❖RadioSelectHorizontal():縦に並んだラジオボック
スで選択
❖Slider():スライダーでデータ入力
❖ChackboxInput():チェックボックス,チェックの有
無(1,0)で入力
!28
③models.pyの定義:models.pyの全体
from otree.api import (
models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer,
Currency as c, currency_range
)
author = 'みなさんの名前を入れましょう.'
doc = """
簡単な調査アプリです.
"""
class Constants(BaseConstants):
name_in_url = 'simple_survey'
players_per_group = None
num_rounds = 1
class Subsession(BaseSubsession):
pass
class Group(BaseGroup):
pass
class Player(BasePlayer):
name = models.StringField(verbose_name='あなたの名前を教えてください.')
age = models.IntegerField(verbose_name='あなたの年齢を教えてください.')
sex = models.CharField(initial=None,
choices=['男性', '女性'],
verbose_name='あなたの性別を教えてください.',
widget=widgets.Select())
!29
ただし,適宜改行を入れてあげると読みやすいです.
templates:この中に実際に表示する画面を入れる
❖htmlで作成する
– 既にあるページに流し込むイメージ
– 個別に設定する項目について違うページを入れ込む
!30
④templateの定義:
❖ここでは2つのページを作成します.
❖simple_surveyフォルダ→templatesフォルダ
→simple_surveyフォルダ
– Page1:名前と年齢を入力し,性別を選択するページ
– Page2:入力した結果を出力して確認するページ
!31
④templateの定義:Page1の作成
{% extends "global/Page.html" %}
{% load otree %}
{% block title %}
あなたのことを教えてください.
{% endblock %}
{% block content %}
以下の情報を教えてください.
{% formfields %}
{% next_button %}
{% endblock %}
!32
④templateの定義:Page2の作成
{% extends "global/Page.html" %}
{% load otree %}
{% block title %}
あなたの情報
{% endblock %}
{% block content %}
あなたが入力した内容は以下のとおりです.<br>
<p>
   あなたの名前:{{ player.name }}<br>
   あなたの年齢:{{ player.age }}<br>
   あなたの性別:{{ player.sex }}<br>
</p>
{% next_button %}
{% endblock %}
!33
pages.py:
❖実際に画面で表示するものを設定する.
– 数字を答える画面を表示する,計算結果を示すなど.
– ページ遷移もこのページで定義する.
!34
Contributionページに表示
ページ遷移を定義
⑤pages.pyの定義:
❖pages.pyでは各ページでの動きを設定します.
– page1を表示する
• 名前・年齢・性別の入力欄を作成する.
– page2を表示する
• 名前・年齢・性別の結果を表示する.
– Page1の次にPage2を表示するように設定する.
❖それでは1つずつ設定していきましょう.
!35
⑤pages.pyの定義:Page1について
❖Page1には3つの項目を設定する必要があります.
!36
class Page1(Page):
form_model = 'player'
form_fields = ['name', ‘age’, ‘sex’]
⑤pages.pyの定義:Page2について
❖入力する項目が何もない時はPassと入れておく.
!37
class Page2(Page):
Pass
⑤pages.pyの定義:Pageの表示順について
❖pages.pyの下部で表示の順番を指定する.
!38
page_sequence = [
Page1,
Page2
]
⑤pages.pyの定義:全部合わせるとこんな感じ !39
from otree.api import Currency as c, currency_range
from ._builtin import Page, WaitPage
from .models import Constants
class Page1(Page):
form_model = 'player'
form_fields = ['name', 'age', 'sex']
class Page2(Page):
pass
page_sequence = [
Page1,
Page2
]
⑥settings.pyでsession configの定義: !40
SESSION_CONFIGS=[
{
'name': 'simple_survey',
'num_demo_participants': 1,
'app_sequence': ['simple_survey'],
},
# その他のアプリがあればここへ
]
❖settings.pyを開いたら,”SESSION_CONFIGS”を見つけてください.
❖そして,下記の内容を[]内に書き足してください.
⑦サーバとして起動する:
>otree resetdb
>otree runserver
❖ こちらを打ってから,ブラウザで”http://localhost:8000”にアクセ
スすると作成した調査を実施することができます.
!41
画面の説明①:実験プログラムの起動 !42
画面の説明②:実験プログラムの起動 !43
画面の説明③:結果のダウンロード !44
今日の目標:
❖①性別・年齢を尋ねる「アンケート」を作ろう
– 簡単なアンケートフォームを作りましょう.
❖②「公共財ゲーム」を作ろう
– 簡単なインタラクションのあるゲームを作りましょう.
!45
oTreeで実験を作ろう.
公共財ゲームの構造 !46
100ポイント
100ポイント
公共財の一例:公園を作るためにいくらかを出してください.
公共財:
非競合性:同時に多くの人々によって消費可能,競合の余地が生じない
非排除性:特定の人をその財・サービスの消費から排除できない
100ポイント
100ポイント
公共財ゲームの構造 !47
100ポイント
100ポイント
みんなでプロジェクトを実施するためにお金を出してください.
合計を2倍して,4人で均等に分配します.
100ポイント
100ポイント
公共財ゲームの構造 !48
(100+100+100+100)×2÷4=200ポイントが
全員に戻る
100-100=0ポイント
100-100=0ポイント
100-100=0ポイント
100-100=0ポイント
100ポイント
100ポイント
100ポイント
100ポイント
公共財ゲームの構造 !49
(100+100+100+100)×2÷4=200ポイントが
全員に戻る
200ポイント
200ポイント
200ポイント
200ポイント
0+200=200ポイント
0+200=200ポイント
0+200=200ポイント
0+200=200ポイント
公共財ゲームの構造 !50
100ポイント
100ポイント
みんなでプロジェクトを実施するためにお金を出してください.
合計を2倍して,4人で均等に分配します.
100ポイント
100ポイント
公共財ゲームの構造 !51
(100+100+100+0)×2÷4=150ポイントが
全員に戻る
100-100=0ポイント
100-100=0ポイント 100-100=0ポイント
100ポイント
100ポイント
0ポイント
100ポイント
100ポイント
公共財ゲームの構造 !52
(100+100+100+100)×2÷4=200ポイントが
全員に戻る
150ポイント
150ポイント
150ポイント
150ポイント
0+150=150ポイント 100+150=250ポイント
0+150=150ポイント 0+150=150ポイント
フリーライダー
作ろうとしているプログラムの画面: !53
Page1
Page2
Page3
作ろうとしているプログラム:
❖4人公共財ゲーム
❖初期保有額を100ポイント
❖貢献額の入力にはスライダーを用いる
❖4人の貢献額を合計したものを2倍にする
❖それぞれに貢献額の2倍を人数(4人)で割った額が戻る
!54
①oTreeをインストール&アップデートします:さっきやったからいらない!
❖Powershellかコマンドプロンプト(Win),ターミナル(Mac)
で以下コードを入力します.
❖最初にインストールして,アップデートをしましょう.
❖今回での作業を中心とします.
❖今回は”otreetest”という名前の作業フォルダを作ります.
❖例題となるアプリも入れられるけどまずは入れない→ n
!55
pip install -U otree
cd C:¥Users¥[個人のアカウント]¥Desktop
otree startproject otreetest
②アプリを作りましょう:
❖土台となるアプリを作成します.
– ここに手を加えて実験用アプリを作成します.
❖フォルダを移動した後にこのコードを叩きます.
❖これにより” public_goods_trial”という名前のフォ
ルダができます.
!56
otree startapp public_goods_trial
③models.pyの定義:Constantsを定義する.
❖public_goods_trialフォルダ内のmodels.pyを開く
❖Constantsクラスの中で人数・繰り返し回数・初期保有額・係
数を設定する.
!57
class Constants(BaseConstants):
name_in_url = ‘public_goods_trial'
players_per_group = 4
num_rounds = 1
endowment = c(100)
multiplier = 2
❖num_roundsで繰り返し回数を定義できる.
③models.pyの定義:Playerを定義する.
❖Playerクラスの中で入力する項目を設定する.
!58
class Player(BasePlayer):
contribution = models.CurrencyField(
choices=currency_range(c(0), c(Constants.endowment), c(1)),
label="あなたはいくら貢献しますか?",
widget=widgets.Slider()
)
❖widgets.Sliderを用いることで,スライダー式での入力が可能に
③models.pyの定義:Groupを定義する.
❖Groupクラスの中で計算プロセスを定義する.
– Group内で定義されるfieldは同一グループの全員に影響する.
– 全員の貢献額を合計する
– 人数で割って,1人1人へ戻される金額を計算する.
!59
class Group(BaseGroup):
total_contribution = models.CurrencyField()
individual_share = models.CurrencyField()
def compute(self):
contributions = [p.contribution for p in self.get_players()]
self.total_contribution = sum(contributions)
self.individual_share = self.total_contribution * Constants.multiplier /
Constants.players_per_group
for p in self.get_players():
p.payoff = Constants.endowment - p.contribution + self.individual_share
defは関数を定義する.
ここではcomputeという関数を定義している.
③models.pyの定義:models.pyの全体
from otree.api import (
models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer,
Currency as c, currency_range
)
author = 'あなたの名前を入力してください.'
doc = """
公共財ゲームです.
"""
class Constants(BaseConstants):
name_in_url = 'public_goods_trial'
players_per_group = 3
num_rounds = 1
endowment = c(100)
multiplier = 2
class Subsession(BaseSubsession):
pass
class Group(BaseGroup):
total_contribution = models.CurrencyField()
individual_share = models.CurrencyField()
def compute(self):
contributions = [p.contribution for p in self.get_players()]
self.total_contribution = sum(contributions)
self.individual_share = self.total_contribution * Constants.multiplier / Constants.players_per_group
for p in self.get_players():
p.payoff = Constants.endowment - p.contribution + self.individual_share
class Player(BasePlayer):
contribution = models.CurrencyField(
choices=currency_range(c(0), c(Constants.endowment), c(1)),
label="あなたはいくら貢献しますか?",
widget=widgets.Slider())
!60
ただし,適宜改行を入れてあげると読みやすいです.
④templateの定義:
❖ここでは3つのページを作成します.
– Page1:貢献額を入力するページ
– Page2:全員の入力した貢献額を計算するページ
• 全員が入力するのを待つ必要がある.
– Page3:公共財ゲームの結果を確認するページ
!61
④templateの定義:Page1の作成
{% block title %}
説明&貢献額の決定
{% endblock %}
{% block content %}
<p>
これは{{ Constants.players_per_group }} 人プレイヤーによる公共財ゲームです.<br>
初期保有額は{{ Constants.endowment }}であり,係数は{{ Constants.multiplier }}で
す.<br>
{{ Constants.players_per_group }} 人の貢献額の合計を{{ Constants.multiplier }}
倍したポイントを{{ Constants.players_per_group }}で割ったものが一人ひとりに返されま
す.
</p>
{% formfields %}
{% next_button %}
{% endblock %}
!62
④templateの定義:Page1の作成
{% extends "global/Page.html" %}
{% load otree %}
{% block title %}
説明&貢献額の決定
{% endblock %}
{% block content %}
<p>
これは{{ Constants.players_per_group }} 人プレイヤーによる公共財ゲームです.<br>
初期保有額は{{ Constants.endowment }}であり,係数は{{ Constants.multiplier }}です.<br>
{{ Constants.players_per_group }} 人の貢献額の合計を{{ Constants.multiplier }}倍したポイントを{{
Constants.players_per_group }}で割ったものが一人ひとりに返されます.
</p>
{% formfields %}
{% next_button %}
{% endblock %}
!63
④templateの定義:Page2の作成
❖何もしません!
❖待つページは用意されているので,ここでは設定しま
せん.
– pages.pyで設定・定義します.
!64
④templateの定義:Page3の作成
{% block title %}
結果の確認
{% endblock %}
{% block content %}
<p>
あなたは初期保有額として<strong> {{ Constants.endowment }}</strong>を持っていました.<br>
その中から<strong>{{ player.contribution }}</strong>を貢献しました.<br>
あなたのグループでは全員で<strong>{{ group.total_contribution }}</strong>を貢献していました.<br>
その結果,一人あたりには<strong>{{ group.individual_share }}</strong>が渡されました.<br>
</p>
<p>
<strong>{{ Constants.endowment }}-{{ player.contribution }}+{{ group.individual_share }}
={{ player.payoff }}</strong>
</p>
<p>
したがって,あなたは<strong>{{ player.payoff }}</strong>を受け取りました.
</p>
{% next_button %}
{% endblock %}
!65
④templateの定義:Page3の作成
{% extends "global/Page.html" %}
{% load otree %}
{% block title %}
結果の確認
{% endblock %}
{% block content %}
<p>
あなたは初期保有額として<strong> {{ Constants.endowment }}</strong>を持っていました.<br>
その中から<strong>{{ player.contribution }}</strong>を貢献しました.<br>
あなたのグループでは全員で<strong>{{ group.total_contribution }}</strong>を貢献していました.<br>
その結果,一人あたりには<strong>{{ group.individual_share }}</strong>が渡されました.<br>
</p>
<p>
<strong>{{ Constants.endowment }}-{{ player.contribution }}+{{ group.individual_share }}={{ player.payoff }}</strong>
</p>
<p>
したがって,あなたは<strong>{{ player.payoff }}</strong>を受け取りました.
</p>
{% next_button %}
{% endblock %}
!66
⑤pages.pyの定義:
❖pages.pyでは各ページでの動きを設定します.
– page1を表示する
• 公共財ゲームの説明と貢献額を入力する.
– page2を表示する
• 全員の貢献額が決定するまで待つ
• 全員の貢献額が決定次第,一人ひとりの利益を計算する.
– page3を表示する
• 一人ひとりの利益を表示する.
– Page1の次にPage2を,その次にPage3を表示するように設定する.
❖それでは1つずつ設定していきましょう.
!67
⑤pages.pyの定義:Page1について
❖Page1には貢献額入力の画面を設定します.
!68
class Page1(Page):
form_model = 'player'
form_fields = ['contribution']
⑤pages.pyの定義:Page2について
❖全員のデータが集まってから計算する.
!69
class Page2(WaitPage):
def after_all_players_arrive(self):
self.group.compute()
❖WaitPage:用意されている「全員集合!」のページを表示する
❖def after_all_players_arrive(self):
– 全てのプレイヤーが「全員集合!」のページにたどり着くのを待ってから,それ
以降の関数を実行する.
– 全員の貢献額の合計&一人ひとりの利得を計算する.
⑤pages.pyの定義:Page3について
❖入力する項目が何もない時はPassと入れておく.
!70
class Page3(Page):
Pass
⑤pages.pyの定義:Pageの表示順について
❖pages.pyの下部で表示の順番を指定する.
!71
page_sequence = [
Page1,
Page2,
Page3
]
⑤pages.pyの定義:全部合わせるとこんな感じ !72
from otree.api import Currency as c, currency_range
from ._builtin import Page, WaitPage
from .models import Constants
class Page1(Page):
form_model = 'player'
form_fields = ['contribution']
class Page2(WaitPage):
def after_all_players_arrive(self):
self.group.compute()
class Page3(Page):
pass
page_sequence = [
Page1,
Page2,
Page3
]
⑥settings.pyでsession configの定義: !73
SESSION_CONFIGS=[
{
'name': ‘public_goods_trial’,
'num_demo_participants': 4,
'app_sequence': ['public_goods_trial'],
},
# その他のアプリがあればここへ
]
❖settings.pyを開いたら,”SESSION_CONFIGS”を見つけてください.
❖そして,下記の内容を[]内に書き足してください.
⑦サーバとして起動する:
>otree resetdb
>otree runserver
❖ こちらを打ってから,ブラウザで”http://localhost:8000”にアクセ
スすると作成した調査を実施することができます.
!74
画面の説明①:実験プログラムの起動 !75
画面の説明②:実験プログラムの起動 !76
画面の説明③:結果のダウンロード !77
oTreeで実験を作ろう.
今日のおはなし
❖oTreeとPythonの関係
❖oTreeによる実験プログラムの作成
❖oTreeによる新たな実験の可能性について
❖振り返り
!78
大阪市立大学・多摩大学・明治大学で実験を実施:400名同時アクセスまでは安定稼働!79
ウェブ版では写真を削除します.
今後の展望:
❖実験室実験とクラウドソーシング実験のインタラク
ションにより,より精度の高い実験の展開へ
!80
16台のタブレット
→ポータブル実験室を構築
実験室
実験
クラウド
ソーシング
実験
さらなる可能性を探って:
❖プレミアム商品券に関する調査:いくら分が手に入るのであれば購入するか?
❖Multiple Price List
– 様々な金額のバージョンを作って,順番をランダマイズできる.
!81
Multiple Price List×表示順ランダマイズの結果(未発表):!82
ウェブ版ではデータを削除します.
さらなる可能性を探って:
❖Sliderを使ったタスク
– SVO Slider法による向社会性を判別するタスクも作成可能
!83
さらなる可能性を探って:
❖書き写しタスク
– 文字列を実際に打ち込んで,その正答数に応じて報酬を渡す
!84
さらなる可能性を探って:
❖Crosetto/Filippin (2013)
– Bomb Risk Elicitation Test:直感的にリスク傾向を測る課題
!85
さらなる可能性を探って:
❖クイズ&答え合わせを実施できる
– この正答数に応じてポイント付与も可能?
!86
demoが色々公開されているために,これをカスタマイズ!!87
oTreeのサーバを公開中!http://open.bee-lab.online/
❖囚人のジレンマをはじめ,基本的なゲーム実験を公開
❖oTreeの基本的機能は利用可能
– ぜひ授業や実験などで使ってみてください.
!88
さらなる可能性を探って:
❖Pythonのウェブアプリケーション(django)を使っているの
で,普通のwebで使うような技術を使える.
– Web解析ツール
– 音声を組み込む
– 動画(Youtube)を組み込むetc…
– 可視化(ex.Highchart)
– インタラクティブチュートリアル
• 実験室とは異なり,個別対応ができないためにできる限りケアをするため
の手法として.
❖パネル調査:
– ゲーム実験のパネル調査も安価で実施可能
• パネルからの離脱が多い可能性が懸念材料
!89
今日のおはなし
❖oTreeとは
❖oTreeによる実験
❖oTreeによる新たな実験の可能性について
❖振り返り
!90
振り返り:
❖oTreeを使ってどんな実験をやってみたいか,少しア
イディアを考えてみましょう.
– クラウドソーシング・音声刺激・画像刺激
– WEBページなので様々な分析方法が可能
– 解析ツールを入れたりなんだり...
❖経済ゲーム実験でもいいのですが,「オンラインで広
く実験参加者を集められる」という観点からも考えて
みましょう.
!91
自分のパソコンで作業するには:
❖Python 3のインストール
– https://www.python.org/
– もしくはanacondaでインストールしても良い.
– 3.7シリーズで良いが,場合によっては3.6が良いことも
• 一部のoTree拡張パッケージを入れると,3.7シリーズだと言うことを聞かないこ
とがある.
❖PostgreSQL(必須ではない)
– https://www.postgresql.jp/
– oTreeではSQLiteが用意されているが,データをしっかり扱うためにはその他のSQLを
使うことが推奨されている.
• 上書きのタイミングなどの関係,大規模実験ならばPostgreSQLなどを使うべき.
❖エディタ
– Pycharmがオススメな感じだが,Atomでも十分使いやすい.
– ココらへんはお好きなものを.
!92
実際に実験をするには:
❖サーバ上での設定が必要
❖oTreeの開発者はHerokuを推奨している.
– https://jp.heroku.com/
❖しかし,ゴトウはAWSを利用している.
– https://aws.amazon.com/jp/
❖設定方法はコチラのサイトに.
– https://akrgt.gitbook.io/otree-jp/
– こちらの「番外編」に記述している.
!93
謝辞:
❖オンライン実験環境の開発にあたり,公益財団法人電
気通信普及財団の助成を受けました.
!94

Mais conteúdo relacionado

Mais procurados

強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
Shota Imai
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
Takayuki Shimizukawa
 

Mais procurados (20)

強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical FlowRAFT: Recurrent All-Pairs Field Transforms for Optical Flow
RAFT: Recurrent All-Pairs Field Transforms for Optical Flow
 
[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について[DL輪読会]GQNと関連研究,世界モデルとの関係について
[DL輪読会]GQNと関連研究,世界モデルとの関係について
 
ChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AIChatGPT 人間のフィードバックから強化学習した対話AI
ChatGPT 人間のフィードバックから強化学習した対話AI
 
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
楽しい研究のために今からできること 〜新しく研究を始める皆さんへ〜
 
Prophet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツールProphet入門【Python編】Facebookの時系列予測ツール
Prophet入門【Python編】Facebookの時系列予測ツール
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
研究発表を準備する(2022年版)
研究発表を準備する(2022年版)研究発表を準備する(2022年版)
研究発表を準備する(2022年版)
 
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
 
[DL輪読会]モデルベース強化学習とEnergy Based Model
[DL輪読会]モデルベース強化学習とEnergy Based Model[DL輪読会]モデルベース強化学習とEnergy Based Model
[DL輪読会]モデルベース強化学習とEnergy Based Model
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
[DL Hacks] Objects as Points
[DL Hacks] Objects as Points[DL Hacks] Objects as Points
[DL Hacks] Objects as Points
 
第8回関西CV・PRML勉強会(Meanshift)
第8回関西CV・PRML勉強会(Meanshift)第8回関西CV・PRML勉強会(Meanshift)
第8回関西CV・PRML勉強会(Meanshift)
 
Introduction to Prioritized Experience Replay
Introduction to Prioritized Experience ReplayIntroduction to Prioritized Experience Replay
Introduction to Prioritized Experience Replay
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
 
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそうPython 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
 
「世界モデル」と関連研究について
「世界モデル」と関連研究について「世界モデル」と関連研究について
「世界モデル」と関連研究について
 
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
[DL輪読会]Convolutional Conditional Neural Processesと Neural Processes Familyの紹介
 
機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門機械学習のためのベイズ最適化入門
機械学習のためのベイズ最適化入門
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 

Semelhante a 【更新版】20190628玉川大学脳トレ社会科学oTree演習編

TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
 
How to django at first
How to django at firstHow to django at first
How to django at first
Maito Kuwahara
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
Toru Furukawa
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Kazumi Hirose
 

Semelhante a 【更新版】20190628玉川大学脳トレ社会科学oTree演習編 (20)

Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編Python 機械学習プログラミング データ分析演習編
Python 機械学習プログラミング データ分析演習編
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
パーソナルデータのあり方を変える!オープンソース分散型PDS「Personium」を使ってみよう!
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテストTestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
How to django at first
How to django at firstHow to django at first
How to django at first
 
はじめての人のためのDeep Learning
はじめての人のためのDeep Learningはじめての人のためのDeep Learning
はじめての人のためのDeep Learning
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
 
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
 
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
OpenStack + MidoNet を動かしてみた - 2015/2/16 MidoNetコミュニティ発足会
 
20180605 azure antenna_workshop
20180605 azure antenna_workshop20180605 azure antenna_workshop
20180605 azure antenna_workshop
 
【プログラミング教室】テキスト
【プログラミング教室】テキスト【プログラミング教室】テキスト
【プログラミング教室】テキスト
 
SnapDishの事例
SnapDishの事例SnapDishの事例
SnapDishの事例
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 

【更新版】20190628玉川大学脳トレ社会科学oTree演習編