Karl-Franzens-University Graz
A Comprehensive Introduction to z-Tree
Stefan Palan
stefan.palan@uni-graz.at
http://www.palan.biz/academic
References
Fischbacher, U., z-Tree Tutorial, www.iew.uzh.ch/ztree/
ztree21tutorial.pdf, 3rd of January, 2002. (Tutorial)
Fischbacher, U., z-Tree Zurich Toolbox for Readymade Economic
Experiments - Experimenters Manual, Institute for Empirical
Research in Economics, University of Zurich, Working Paper No. 21,
ISSN 1424-0459, 1999. (Manual)
Fischbacher, U., z-Tree Reference Manual,
http://www.iew.uzh.ch/ztree/ztree21ref.pdf, 6th of January, 2006.
(Reference Manual)
Z-Tree Wiki, https://www.uzh.ch/iew/ztree/ssl-dir/wiki/, 26th of
March, 2012. (Wiki)
Lecture ressources: www.palan.biz/academic - select Downloads
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
2
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Introduction
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
3
Graz, SS 2012
1. Introduction to z-Tree
Structuring a typical session 1/3
1. Subject arrival
Subjects checked on list
Excess subjects are sent home with show-up fee
Other subjects are (randomly) assigned to workstations
2. Instructions on mechanism
Hand out printed instructions, read them out loud
Control questions
3. Training round(s)
4. Bathroom break
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
4
Graz, SS 2012
1. Introduction to z-Tree
Structuring a typical session 2/3
5. Instructions on parameters
Hand out printed instructions, read them out loud
Control questions
6. Run treatment
Repeat 5 & 6 for multiple parameter constellations
7. Questionnaires
Solicit questionnaire responses
Solicit risk-aversion, etc.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
5
Graz, SS 2012
1. Introduction to z-Tree
Structuring a typical session 3/3
8. Payment
Random number generation
As transparent as possible (e.g. real dice)
Random numbers for individual subjects reduce cost variance
but increase required time
Pay subjects individually and anonymously
Have subjects sign receipt
Ask subjects not to talk about experiment with others
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
6
Graz, SS 2012
1. Introduction to z-Tree
General rules
Follow session structure cheat sheet diligently
Contains procedural steps
Contains program settings
Contains required material (dice, cards, etc.)
Note special occurrences in experimenter diary
Backup everything
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
7
Graz, SS 2012
1. Introduction to z-Tree
Characteristics and features
Zurich Toolbox for Readymade Economic Experiments
Simple, flexible programming language for economic
experiments
Client-server architecture
Automatic networking, data collection and payoff
calculation
Crash recovery capability
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
8
Graz, SS 2012
1. Introduction to z-Tree
Network topology
Source: Tutorial, p. 6.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
9
Graz, SS 2012
1. Introduction to z-Tree
Network connections: Critical issues
Setup with file server
Ensure server has read/write access
Ensure client has read access
Put all files into one directory
Clients can be restarted by Run-Restart All Clients
Setup without file server
Ensure server has read/write access
Point client to server IP
Clients can only be restarted manually
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
10
Graz, SS 2012
1. Introduction to z-Tree
Network connections: Critical issues
Server IP (in server.eec)
Command line parameter, e.g.: zleaf /server 10.0.0.1
IP file is in the zleaf.exe-directory
IP file is in the directory c:\expecon\conf
IP equals local machines IP
Client name
Command line parameter, e.g.: zleaf /name pc1
File name.eec in zleaf.exe-directory
Name equals local machines TCP/IP hostname
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
11
Graz, SS 2012
1. Introduction to z-Tree
Other important command line options
zleaf.exe
Language: /language
e.g. /language en, or /language english
Screen resolution: /size
e.g. /size 1024x768
ztree.exe
Change default directories
/xlsdir, /sbjdir, /adrdir, /paydir, /gsfdir, /tempdir, /datadir
(autosaves of .ztt and .ztq), /leafdir (server.eec)
e.g. /adrdir c:\data
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
12
Graz, SS 2012
1. Introduction to z-Tree
Files used by z-Tree
ztree.exe
Server program file
zleaf.exe
Client program file
name.ztt
Treatment code file
name.ztq
Questionnaire code file
name.txt
Parameter input file
@1.ztt, @2.ztt,
@1.ztq, @2.ztq,
Backups of treatments and
questionnaires
@db.txt, @lastclt.txt, @prevdb.txt Temporary files
090330_0804.adr
Subject address file
090330_0804.gsf
Crash recovery file (binary)
090330_0804.pay
Payout information file
090330_0804.sbj
Questionnaire response file
090330_0804.xls
Main data file (~ MS Excel compatible)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
13
Graz, SS 2012
1. Introduction to z-Tree
Example: Public goods experiment*
Groups of n = 4 subjects
Initial endowment of subject i: wi 20
Contribution of subject i: ci 0, wi
1 4
Profit of subject i: i wi ci 1.6 c j
n j 1
New z-Tree treatment:
* Taken from the z-Tree Tutorial, sections 2.2-2.3.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
14
Graz, SS 2012
1. Introduction to z-Tree
Define parameters
Define general parameters in
Background:
Create new program
Select logfile in stage tree
Click Treatment-New Program
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
15
Graz, SS 2012
1. Introduction to z-Tree
The first stage
Add the first stage
Select the Background
Click Treatment-New Stage
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
16
Graz, SS 2012
1. Introduction to z-Tree
Designing the screen 1/2
Add the first box
Select Active Screen in the Contribution Entry stage
Click Treatment-New Box>Standard Box
Click OK
Add an output item
Select the new
Standard Box
Click TreatmentNew Item
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
17
Graz, SS 2012
1. Introduction to z-Tree
Designing the screen 2/2
Add an input item
Select the first item
Click TreatmentNew Item
Add a button
Select the input item
Click TreatmentNew Button
Enter OK as name and click OK
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
18
Graz, SS 2012
1. Introduction to z-Tree
Profit calculation
Add new stage Profit Display
Add profit calculation
Select Profit Display stage
Click Treatment-New Program
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
19
Graz, SS 2012
1. Introduction to z-Tree
Profit display
Add new box to Active screen
of Profit Display stage
Insert display items
Sum of all contributions
Subjects income for the
period
Insert Continue button
Save the treatment (.ztt file)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Order of execution
Own contribution
20
Graz, SS 2012
1. Introduction to z-Tree
Starting multiple z-leafs for testing
Either create shortcuts:
or use the following batch file:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
21
Graz, SS 2012
1. Introduction to z-Tree
Advice for testing 1/2
Switch between leafs using <ALT>-<TAB>
Kill leafs using <ALT>-<F4>
Display connected clients by clicking Run-Clients Table
Pause time using <F12>
Resume time using <Shift>-<F12>
Stop testing by clicking Run-Stop after this period
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
22
Graz, SS 2012
1. Introduction to z-Tree
Advice for testing 2/2
To test at your leisure:
Make periods very short (e.g. 2 sec)
Start program (<F5>)
then immediately pause the time (<F12>)
Test at will
Resume/Pause to move to next period (<Shift>-<F12>)
Click Run-Stop after this period to initiate end of testing
End testing by clicking OK on all waiting screens
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
23
Graz, SS 2012
1. Introduction to z-Tree
Resulting screen output
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
24
Graz, SS 2012
1. Introduction to z-Tree
Resulting data output
Output in YYMMDD_hhmm.xls:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
25
Graz, SS 2012
1. Introduction to z-Tree
Creating new questionnaire
Click File-New Questionnaire
Click QuestionnaireNew Address Form
Questions left empty will
not be asked
May be entirely empty
Address form plus empty
question form suffice to
complete questionnaire
Run questionnaire (may
be empty) at least once
to write payment file
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
26
Graz, SS 2012
1. Introduction to z-Tree
Payment file
Created after treatment and questionnaire have been run
Contains information from address form
Contains information from session table
Subject
1
2
3
4
Experiment
Computer
Interested
Name
Player1
OK
Jane Parker
Player2
OK
Jim Smith
Player3
OK
John Doe
Player4
OK
Bill Farmer
C:\Institut\zTree\120328_1127.pay
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Profit
21.52
15.43
20.00
17.23
74.18
Signature
27
Graz, SS 2012
A Comprehensive Introduction to z-Tree
The Basics of z-Tree
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
28
Graz, SS 2012
2. Basics of z-Tree
Structure of a treatment
Background
Contains general settings
Defines the tables used in the treatment
Defines default Active Screen and Waiting Screen
Contains programs which run at the beginning of a period
Stages
Correspond to the screens displayed to subjects
Contain programs which run at the beginning of a stage
* Adapted from a z-Tree lecture by Maria Bigoni: http://www2.dse.unibo.it/bigoni/courses/ztree/Lecture_notes_handout.pdf, 31.08.2012,
accessed on 19.12.2012.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
29
Graz, SS 2012
2. Basics of z-Tree
Creating a stage
Name is for documentation only; must be unique
Start
Timeout
Active screen/Waitingscreen/Use background/Header
Screen layout
Containers
Boxes
Absolute/relative size/position
Adjustment of the remaining box
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
30
Graz, SS 2012
2. Basics of z-Tree
Items: Text output
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
31
Graz, SS 2012
2. Basics of z-Tree
Items: Variable output
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
32
Graz, SS 2012
2. Basics of z-Tree
Items: Variable input
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
33
Graz, SS 2012
2. Basics of z-Tree
Screen layout
Screen layout can be controlled in box dialog:
See Demo_ScreenLayout.ztt for example layouts
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
34
Graz, SS 2012
2. Basics of z-Tree
Screen layout
1
4
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
35
Graz, SS 2012
Program a treatment which displays (approximately) the
following:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
* Inspired by lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
2. Basics of z-Tree
Exercise Screen layout*
36
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Advanced Item Output
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
37
Graz, SS 2012
3. Advanced item output
Conditional output
Layout:
!text: 2="Less than the third.; 3="The
third.; 4="More than the third.;
Results:
Period 1+2:
Attention:
The first text version that is being
displayed sets the size of the item. If
the variable value (and accordingly
the text) changes, longer text may
not display correctly. Therefore, add
enough blank space after each
option to display even the longest.
Period 3:
Period 4+:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
38
Graz, SS 2012
3. Advanced item output
Inserting variables into text
Layout:
<> !text: 1="This item displays the
content of the variable Period: <Period |
1> and Subject: <Subject | 1>.
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
39
Graz, SS 2012
3. Advanced item output
Formatted text
Layout:
!text: 1="{\rtf \fs22\b\i This item displays
formatted text.}"
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
40
Graz, SS 2012
3. Advanced item output
Variables embedded in colored text
Layout:
<> !text: 1="{\rtf {\colortbl;
\red255\green0\blue0;
\red0\green0\blue255;\red0\green0\blue
0;} \fs24 This is a \cf2 colorfully
formatted \cf3 output box displaying the
variables votes: \cf1 <\votes | 1>\cf3 ;
and NumSubjects: \cf1 <\NumSubjects |
1>\cf3 .}"
Result:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
41
Graz, SS 2012
3. Advanced item output
Conditional formatting
Layout:
<> !text: 1="{\rtf \fs24 <\Period | !text:
1="\i " 2="\b ">Test}"
Result:
Period 1:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Period 2+:
42
Graz, SS 2012
3. Advanced item output
Rich text formatting
Switch
\tab
\par
\line
\bullet
\ql
\qr
\qc
\b
\b0
\i
\i0
\sub
\super
\strike
\ul
\ul0
\cfn
\fsn
Effect
tabulator
new paragraph
new line
thick dot
aligned to left
aligned to right
centered
bold
not bold
italic
not italic
small and inferior numbers (index)
small and superior numbers (exponent)
crossed through
underline
do not underline
Text color. n is the index of the color table which is defined by colortbl. See example.
Font size in units of half a dot. The font size must be explicitly given, otherwise it is larger
(24) than usual in z-Leaf.
Source: Reference manual, p. 56-57.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
43
Graz, SS 2012
3. Advanced item output
Alternative formats
Source: Reference manual, p. 30.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
44
Graz, SS 2012
4 Programming: Basics
General notes on formatting
Theoretically, any RTF code (e.g. saved in Word) should
display correctly
Variable refresh
Put text in layout (as opposed to label) section to
allow variables to refresh
Screen space is reserved for initial value of variables
Change font size generally through z-leaf command line
switch /fontsize
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
45
Graz, SS 2012
3. Advanced item output
Checking entries for correctness
Select a button
Click Treatment-New Checker
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
46
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Programming basics
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
47
Graz, SS 2012
4 Programming: Basics
Examples of simple functions
result = if ( k < 5 | k >= 10, 1, 10);
result = abs ( c + pi() );
result = round ( a, 0.2);
result = roundup ( random() * 5, 1 );
result = exp ( randomgauss() );
result = sqrt (b ^ 2);
result = max ( ln ( x ), log ( y ) );
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
48
Graz, SS 2012
4 Programming: Basics
Variable types
Floating point variables
Standard variable type
Saved in binary format (minimal deviations from
decimal format)
Array variables
Used to save (infrequently) recurring values
Array size must be fixed in background (cannot be
calculated)
array a[3];
array a[1,5,2];
a[2]=10;
String variables
Do not exist
(There is a limited possible workaround)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
49
Graz, SS 2012
4 Programming: Basics
Conditional execution in z-Tree
If-statement for value assignment:
result = if ( k < 5 | k >= 10, 1, 10);
If statement for code execution:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
50
Graz, SS 2012
4 Programming: Basics
Controlling stage flow
Participate variable
Variable in the subjects table
Set to 0 to make a subject skip this stage (must be
done in the stage background)
LeaveStage variable
Variable in the subjects table
Set to 1 to make a subject move immediately to the
waiting screen of the current stage
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
51
Graz, SS 2012
4 Programming: Basics
Defining parameters in the Background
Put general parameters into program in globals table in
Background, e.g.:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
52
Graz, SS 2012
4 Programming: Basics
Defining parameters in the Background
Put general parameters into program in globals table in
Background, e.g.:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
53
Graz, SS 2012
4 Programming: Basics
Defining switches in the Background
Use variables to switch between test modes, and
between different treatments within one .ztt file:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
54
Graz, SS 2012
4 Programming: Basics
Defining switches in the Background
Use variables to switch between test modes, and
between different treatments within one .ztt file:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
55
Graz, SS 2012
4 Programming: Basics
Calculation of payouts: Background
# practice periods
# paying periods
Value in real currency of 1 unit of
the experimental currency (ECU)
Lump sum payment
Periods with profit
Exchange rate
Periods without effect on profit
Value in ECU added to TotalProfit at the beginning of period 1 of
the treatment
Show up fee
Value in real currency added to subject payout at the beginning
of period 1 of the session
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
56
Graz, SS 2012
4 Programming: Basics
Calculation of payouts: Bankruptcy
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
57
Graz, SS 2012
4 Programming: Basics
Calculation of payouts: Profit/TotalProfit
Table: subjects
Profit
Contains profit in a period, needs to be calculated
TotalProfit
Contains total profit up to period t, calculated automatically as the sum
of the variables Profit of periods 1 to (t 1).
Table: session
FinalProfit
MoneyAdded
Subjects profit excluding the show-up fee
Money added to a subject who faced bankruptcy but was allowed to
continue
MoneyToPay
Equals FinalProfit plus ShowUpFee plus MoneyAdded
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
58
Graz, SS 2012
4 Programming: Basics
Calculation of payouts: Good advice
Set exchange rate in Background to 1
Create variables in table globals.
exchangerate: The exchange rate in real CU/ECU
currency: A dummy variable for currency, e.g. 1 for EUR, 2 for USD
Only one place for
changing these
parameters (in the
program in the
globals table)!
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
59
Graz, SS 2012
4 Programming: Basics
Programs, tables and scope operators
Programs run in a
table
Programs can contain
commands running in
different table
Structure here is:
globals
subjects
contracts
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Scope operators:
: one step up
\ all steps up to
globals table
60
Graz, SS 2012
4 Programming: Basics
Table functions
Can be preceded by table name, e.g. subjects.sum()
Examples:
sum ( [condition] , variable );
average ( [condition] , variable );
product ( [condition] , variable );
minimum / median / maximum ( [condition] , variable );
find ( [condition] , variable );
count ( [condition] );
regressionslope ( [condition] , x , y );
stddev ( [condition] , variable );
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
61
Graz, SS 2012
4 Programming: Basics
Programs, tables and scope operators
Programs run for all
records in a table
(unless restricted
by conditions)
Variables in
table globals
Command run in
table subjects
Variable in
table subjects
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
62
Graz, SS 2012
4 Programming: Basics
Programs, tables and scope operators
Example: (Program runs in table A)
Table A
Table B
Table C
x = v + B.sum ( v * :v - C.product ( v - :v - ::v) )
A A
B A
C B A
Function same() as a special case
If variable only defined in one table, scope
operator may be omitted (dangerous!)
Last periods tables: OLDsubjects, etc.
Source of the form of presentation: Esarey, J., zTree Workshop: Fundamentals of zTree, http://userwww.service.emory.edu/~jesarey/
ztree.ppt, 2005, p. 81.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
63
Graz, SS 2012
Source: Reference manual, p. 59.
4 Programming: Basics
The complete scope reference
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
64
Graz, SS 2012
4 Programming: Basics
Loops in z-Tree
Loops through the records of a table:
contracts.do { player = :Subject; }
Loops using while ( ):
while ( i <= 5 ) { i = i + 1; }
Loops using repeat { } while ( ):
repeat { i = i + 1; } while ( i <= 5 );
Loops using iterator( ).do:
iterator( i, 8, 12, 2 ).do { :player = i; }
Loops in time using later ( ) do/repeat { }:
later ( 15 ) do OR repeat { }
While and repeat loops can be left with <CTRL>-<ALT>-<F5>
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
65
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Box types
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
66
Graz, SS 2012
5. Box types
Box types
Container box:
Used to organize other boxes on the screen
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
67
Graz, SS 2012
5. Box types
Box types
Contract list box:
Used to display records from a z-Tree table:
Condition for
displaying box
Makes own
records font
color blue
Condition for
displaying
individual
records
Variables to
sort by
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
68
Graz, SS 2012
5. Box types
Box types
Contract list box:
Code:
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
69
Graz, SS 2012
5. Box types
Box types
Contract list box:
Contracts can be selected
Button in contract list box:
Program is executed for selected contract
Error message if no contract selected
Current subjects contract in subjects table
can be accessed using scope operator, e.g.
Creator = :Subject;
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
70
Graz, SS 2012
5. Box types
Box types
Contract creation box:
Used to create new records in a z-Tree table:
Condition for
displaying box
Table wherein new
records should be
created
Additional settings for
contract creation
Number of contracts
which can be entered
simultaneously
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
71
Graz, SS 2012
5. Box types
Box types
Contract creation box:
Code:
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
72
Graz, SS 2012
5. Box types
Box types
Contract creation box:
Item entry limitations determine what values are
permissible
Program in button
Used to write additional variables
Automatically limits its operation to new record
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
73
Graz, SS 2012
5. Box types
Box types
Grid box:
Used to display records from a z-Tree table:
Condition for
displaying box
Defines size of
the box
Determines
how the
ordering of the
items is
interpreted
Formatting
options
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
74
Graz, SS 2012
5. Box types
Box types
Grid box:
Code:
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Attention:
Drawing a grid box with
many items takes z-Tree
a long time. Whenever
possible, use e.g. a
contract list box instead.
75
Graz, SS 2012
5. Box types
Calculator button box
Calculator buttonbox:
Gives subjects access to the Windows calculator
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
76
Graz, SS 2012
5. Box types
Box types
Chat box:
Used to display/exchange chat messages:
Condition for
displaying box
Variable name
and entry
limitations
Condition for
displaying
individual
records
Output text
format
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
77
Graz, SS 2012
5. Box types
Box types
Chat box:
Code:
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
78
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Programming
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
79
Graz, SS 2012
6.1 Programming: Program execution
Running programs
Program in the background
Runs after the setting of standard variables
Program in a stage
Runs at beginning of stage, before checking Participate
Program in a button
Program in subjects table runs only for the subject
pressing the button
Runs after checkers
Program started by later ( ) do/repeat { } command
(Re-)Runs after pre-specified time
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
80
Graz, SS 2012
6.1 Programming: Program execution
Parameter table
1. Specific parameters
(after programs in the background)
2. Role parameters
3. Period parameters & prompt
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
81
Graz, SS 2012
6.1 Programming: Program execution
Parameter table variable import
Variables can be imported from ASCII file (one-by-one)
Allows parameter customization before session
Tab-separated values
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
82
Graz, SS 2012
6.1 Programming: Program execution
Period structure
1. Setting of standard variables
2. Programs in the Background
3. Specific parameter programs
4. Role parameter programs
5. Period parameter programs
6. Programs at the beginning of a stage
7. Programs in buttons (when clicked)
Delayed sub-programs: later ( ) do/repeat { }
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
83
Graz, SS 2012
6.2 Programming: Advanced programming techniques
Data import and export 1/2
Tables can be imported and exported from/to ASCII file
New (Version 3.3.0) stage tree elements
Table dumper:
Allows exporting
table to ASCII
file
Table loader:
Allows importing
table from ASCII
file (append or
replace)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
84
Graz, SS 2012
6.2 Programming: Advanced programming techniques
Data import and export 2/2
Demo_DataFileRW.ztt
Table dumper:
parameters
parameters
parameters
parameters
Period
1
1
1
x
68
3
94
Table loader (replace):
Replaces table records from
first downwards with data in
ASCII file
Table loader (append):
Adds new table records after last one
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
85
Graz, SS 2012
6.2 Programming: Advanced programming techniques
z-Tree programming with Excel
Use MS Excel to generate repetitive code:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
86
Graz, SS 2012
6.2 Programming: Advanced programming techniques
z-Tree programming with Excel
Complex code generation:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
87
Graz, SS 2012
6.3 Programming: Miscellaneous
Groups
Groups are defined in Specific parameters in Parameter
table
Groups can be modified using variable Group in subjects
table
Automatic group matching:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
88
Graz, SS 2012
6.3 Programming: Miscellaneous
Group matching
Select desired periods in
parameter table:
Choose matching procedure from Treatment menu:
Partner:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Absolute stranger:
89
Graz, SS 2012
6.3 Programming: Miscellaneous
Calculating rank in z-Tree (from the Wiki)
Simple rank calculation (grouping is optional):
rank_low = count (same (Group) & value > :value) + 1;
rank_high = count (same (Group) & value >= :value);
Rank calculation excluding
ties (assuming value is
integer):
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
90
Graz, SS 2012
6.3 Programming: Miscellaneous
Sorting values in z-Tree (from the Wiki)
Assume there are
integers v1 to v5 in the
globals table
Strategy:
Put data into a table
Calculate the rank
Transfer the data
back
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
91
Graz, SS 2012
6.3 Programming: Miscellaneous
Sorting values in z-Tree
Example: Call Auction
Program in globals table aggregates offers in contracts table into
price/volume list - sorted ascending in price - in pricelist table:
if (contracts.count(p>0)>0) {
//Writes minimum and maximum price into variables in the globals table
minprice=contracts.minimum(same(Period),p);
maxprice=contracts.maximum(same(Period),p);
//Sets variable price equal to the lowest price in this period
price=minprice;
//Loops through all prices offered in this period and writes possible purchase and sales volume
//into pricelist table
n=1;
repeat {
//Creates new entry in pricelist table
pricelist.new {
//Entry consists of price, volume that could be sold at this price, volume that could be bought
//at this price, the total possible transaction volume at this price, and a counter variable
p=:price;
sellvol=contracts.sum(same(Period)&p<=:p&q<0,-q);
buyvol=contracts.sum(same(Period)&p>=:p&q>0,q);
vol=min(sellvol,buyvol);
n=:n;}
n=n+1;
//Increments the price to the next offered price or to a price>maxprice if maxprice has been reached
if (price<maxprice) {price=contracts.minimum(same(Period)&p >\price,p);} else {price=maxprice+1;} } while (price<=maxprice);
//Sets price equal to the mean of the prices which produce maximum volume
price=pricelist.average(same(Period)&vol==pricelist.maximum(same(Period),vol),p);}
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
92
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: contracts table*
Flexible number of records
Adding records
Contract creation boxes
Command: contracts.new { x=1; }
Changing records
In contract list boxes and contract grid boxes
Command: contracts.do { x=2; }
Deleting records
Marking a contract as deleted (e.g. status = 3;)
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
93
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: contracts table*
Buttons in contract creation box and contract list box
Can contain checkers (e.g. price * volume < cash)
Operate only on new/selected record
Access to subject who pressed the button using scope
operator
As if in contracts.new/do {}
E.g. set subject using: CreatorOrSelector = :Subject;
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
94
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Goal: Market for buyers and sellers of a uniform good
Every trader can buy and sell
Orders must be fully executed
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
95
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Example record
ID = 1;
price = 23;
volume = 5;
status = 0;
type = 0;
Variable status
0 open offer
1 traded
2 cancelled
3 invalidated
4 expired
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
buyer = 1;
seller = 0;
offertime = 2.381;
statustime = 18.221;
96
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Variable type
1 buy offer
1 sell offer
Open buy offer characterized by:
type == 1 & status == 0
Open sell offer characterized by:
type == -1 & status == 0
Transaction characterized by:
status == 1
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
97
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Example records:
ID
price
volume
status
type
buyer
seller
offertime
statustime
23
-1
5.304
-77777
25
7.221
18.475
30
13
12.100
16.224
15
-1
25.132
33.251
Record 1: Outstanding sales offer from subject 3
Record 2: Subject 1 sold after a buy offer from subject 2
Record 3: Cancelled buy offer from subject 1
Record 4: Invalidated sell offer from subject 5
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
98
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Variable intialization:
Record starting time for later calculation of time elapsed
Set dummy number for variable initialization
Set endowment
Initialize variable for convenient calculation of trade number
Initialize variables
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
99
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order input
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
100
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order input
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
101
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order output
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
102
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order output
//Processes trade
//Updates contract information
seller = :Subject;
status = 1;
statustime = gettime() - \Starttime;
//Updates cash and share holdings
subjects.do {
//Updates seller
if ( Subject == :seller ) {
NumTrades = NumTrades + 1;
Cash = Cash + :price;
Shares = Shares - :volume;
}
//Updates buyer
if ( Subject == :buyer ) {
NumTrades = NumTrades + 1;
Cash = Cash - :price;
Shares = Shares + :volume;
}
}
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
103
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order output
//Invalidates illegal offers
//Loops over all contracts
contracts.do {
//Looks only at outstanding offers
if ( status == 0 ) {
//Only buy offers
if ( type == 1 ) {
//Invalidates buy offers if proposer has insufficient money
if ( price * volume > subjects.find ( Subject == :buyer , Cash ) ) {
status = 3;
statustime = gettime() - \Starttime;
}
}
//Only sell offers
if ( type == -1 ) {
//Invalidates sell offers if proposer has insufficient shares
if ( volume > subjects.find ( Subject == :seller , Shares ) ) {
status = 3;
statustime = gettime() - \Starttime;
}
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
104
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order output
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
//Marks offer as cancelled
status = 2;
statustime = gettime() - \Starttime;
105
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Full execution
Order output
Buy orders
Sell orders
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
106
Graz, SS 2012
11. Exercises
Joint exercise: Limiting order legality
Write down the condition for a checker which ensures
that the price of a new buy (sell) offer is lower (higher)
than the lowest existing sell (highest buy) offer price.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
107
Graz, SS 2012
11. Exercises
Joint exercise: Limiting order legality*
Write down the code for a bid-ask improvement rule
(i.e. a new bid must be higher than the current highest
bid price and a new ask price must be lower than the
current lowest ask price.)
* Inspired by lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
108
Graz, SS 2012
11. Exercises
Exercise Market with partial order execution
Write down how you would structure the tables and
variables of a market to fulfill the following criteria:
Subjects can offer to buy and sell multiple units of a
uniform good, entering a price and volume
Partial execution is possible
Only one Buy (Sell) button (with transaction warning)
No information is lost:
Who made the first offer, who accepted
Time where the offer and acceptance were made
Initial volume, how much was exchanged per transaction
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
109
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Partial execution
Variables (partial execution possible)
Table offers
ID
execution (0,volume)
price
offerer
volume
offertime
type (-1,1)
Statustime
status (0,1,2,3,4)
Table transactions
offerID (ID)
acceptanceID (ID)
accepterID
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
volume
time
(price)
110
Graz, SS 2012
6.3 Programming: Miscellaneous
Markets and auctions: Partial execution
Create record in table offers for every order
Upon new order entry, check transactability
Create new record in table transactions for every
transaction induced by new order
Variable offerID in transactions contains ID of first
order
Variable acceptanceID in transactions contains ID of
order which led to transaction with previously submitted
order offerID
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
111
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Questionnaires
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
112
Graz, SS 2012
7. Questionnaires
Questionnaires: Overview
Run after 1 treatment (sets number of subjects)
Adress form needed to write payment file (delete
components by deleting caption in adress form)
Question forms used for:
Solicitation of feedback
Display of results
Questionnaire may be empty
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
113
Graz, SS 2012
7. Questionnaires
Questionnaires: Overview
Rules set the regions where
labels and questions are
positioned
Maximum one button per
question form
Last question form may not contain a button
* Adapted from a z-Tree lecture by Maria Bigoni: http://www2.dse.unibo.it/bigoni/courses/ztree/Lecture_notes_handout.pdf, 31.08.2012,
accessed on 19.12.2012.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
114
Graz, SS 2012
7. Questionnaires
Questionnaires: Using the session table
Conditioning on variables in session table (Participate)
Run treatment writing variables into session table
(FinalProfit, MoneyAdded, ShowUpFee, MoneyToPay and
MoneyEarned are always available)
Access variables in session table in question form
definition in questionnaire
Use Participate variable to control which subjects see
which parts of the questionnaire
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
115
Graz, SS 2012
7. Questionnaires
Questionnaires: Using the session table
Example: Use a variable x from the subjects table.
In the treatment create a program in the session table:
x = : x;
In the questionnaire, use a text like:
<> Displays x: < x | 1 >
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
116
Graz, SS 2012
7. Questionnaires
Questionnaires
Automatic checking of control questions
Use normal treatment (i.e. not a questionnaire)
Use buttons with checkers
Only possible for numerical entries
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
117
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Helpful Advice
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
118
Graz, SS 2012
8. Helpful advice
Helpful advice
Program all treatments in one treatment file
Use speaking variable names
Define all variables in the Background
Prepare session structure help sheet (script):
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
119
Graz, SS 2012
8. Helpful advice
Commenting
Comment your code extensively:
Single-line commenting:
// until the end of the line
Inline commenting:
x /* comment */ =5;
Multi-line
commenting:
/* multi
line
comment */
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
120
Graz, SS 2012
8. Helpful advice
Helpful advice
Test extensively
Attempt analysis based on data generated by test run
Keep a documentation of tables and variables:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
121
Graz, SS 2012
8. Helpful advice
Helpful advice*
Implementing observer or experimenter subject (e.g. for
dice-throw)
Variable that is 1 for observer and 0 for others
Create specific observer stage displaying relevant
variables or permitting input of a variable
Use Participate to exclude observer from normal
stages and exclude subjects from observer stage
Use checkers to let experimenter allow subjects to
continue step-by-step in training phase
* Source: z-Tree manual.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
122
Graz, SS 2012
8. Helpful advice
Helpful advice: Tables
Use instead of arrays for better output format
Use table loader to quickly import new parameters
Use to transfer data between treatments (instead of
OLDsubjects, etc.)
Use table functions to quickly calculate summary
information
Table lifetime
Period (contracts, globals, subjects, )
Treatment (summary, )
Session (session, )
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
123
Graz, SS 2012
8. Helpful advice
Helpful advice
Search and replace using export function
Use File-Export-Treatment to export code to a .txt-file.
Use search/replace in Notepad/Word
Re-import treatment file into z-Tree
Calculate exact time using gettime ()
gettime() returns time since computer was started
Set variable equal to gettime() at beginning of period
Calculate difference between time of interest and time
calculated at the beginning
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
124
Graz, SS 2012
8. Helpful advice
Timelog
Create timelog table:
Allows custom logging of
important events
Record starting time and create first record:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
125
Graz, SS 2012
8. Helpful advice
Timelog
Create entries for all events of interest:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
126
Graz, SS 2012
8. Helpful advice
Timelog
Create entries for all events of interest:
Period
ID
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Time
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Subject
0
0.328
0.421
0.546
3.916
6.755
7.457
7.987
13.588
16.505
16.833
22.714
25.257
25.881
31.746
31.762
34.133
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
Event
0
0
0
0
1
1
1
1
1
2
2
2
3
3
3
0
0
1
2
4
6
7
8
7
9
18
7
9
18
7
9
18
19
20
127
Graz, SS 2012
8. Helpful advice
Notes on data processing
Main data is saved in YYMMDD_hhmm.xls
Reformatting possibilities:
Manually
Using z-Trees Tools - Separate tables command
(see following slides)
Using my Excel macro (see following slides)
Using Kan Takeuchis Stata import procedure
Using Oliver Kirchkamps R import procedure
(all included in the resource pack at www.palan.biz/academic select Downloads)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
128
Graz, SS 2012
8. Helpful advice
Notes on data processing
Z-Trees Tools - Separate tables command
Select .xls-file to process
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
129
Graz, SS 2012
in advice
Part III Advanced8.Topics
Helpful
z-Tree
Notes on data processing
Using my Excel macro
Start macro
Answer dialog questions
Output:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
130
Graz, SS 2012
8. Helpful advice
Topics in data processing
Opening .xls output file in German Excel creates problems
with data interpretation (decimals interpreted as dates)
Time data
Recorded for all button clicks (if stage has a timeout)
Times are recorded as time remaining in period:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
131
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Troubleshooting
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
132
Graz, SS 2012
9. Troubleshooting
Helpful advice from the manual
Change timeout during the experiment:
Use a variable to set the timeout for a stage
Modify the variable in the period parameters in the
parameter table (for periods yet to be played)
Stop after this period option
Use both in testing and, if necessary, in an
experiment
Period runs its course, but treatment then stops
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
133
Graz, SS 2012
9. Troubleshooting
Debugging*
Errors when closing a program
Read the error message
z-Tree usually puts the cursor into the line causing the
error
Use comments to locate the error
Errors while the program is running
Test different combinations of parameters
Consult the tables to check intermediate results
Do so within z-Tree (stop the clock)
Use the .xls output file
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
134
Graz, SS 2012
9. Troubleshooting
Crash handling
Client Crash
If the PC is still working, simply restart the z-leaf
(<Alt>-<F4> to shut it down)
The z-leaf will then replay the treatment up to the
present situation
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
135
Graz, SS 2012
9. Troubleshooting
Crash handling
Client Crash
If the PC is not working, start
a new PC
Start z-leaf on new PC
Open clients table on z-tree
Disconnected client appears
in parentheses
Move new client over field of
old client
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
136
Graz, SS 2012
9. Troubleshooting
Crash handling
Server Crash
Restart z-Tree
Open the clients table
Restart all clients with menu
command Restart all Clients
If some clients do not
reconnect, manually restart
their z-leafs
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
137
Graz, SS 2012
9. Troubleshooting
Crash handling
Server Crash
If no client connects, you can:
Restart the clients manually
Wait (up to 4 minutes) and restart the clients later
Start z-Tree on another computer
Shut down and restart the server PC
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
138
Graz, SS 2012
9. Troubleshooting
Crash handling
Server Crash
Use Run/Restore Client Order to sort the clients into the
same order as before the crash
Restore all tables with Run/Reload database (tables are
stored after each period)
Check the summary or subjects table to see how many
periods have been played (n)
Open the treatment that ran before the crash (e.g.
@1.ztt)
Set the number of practice periods to n
Restart treatment
Run/Start
treatment
(<F5>)Erlangen-Nrnberg.
* Adapted fromwith
lecture slides
by Verena Utikal,
Friedrich-Alexander-University
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
139
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Graphics Teaser
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
140
Graz, SS 2012
Part III Advanced Topics in z-Tree
Graphics teaser 1/3
z-Tree offers graphics capabilities since version 3.0
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
141
Graz, SS 2012
Part III Advanced Topics in z-Tree
Graphics teaser 2/3
Selection of plot items:
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
142
Graz, SS 2012
Part III Advanced Topics in z-Tree
Graphics teaser 3/3
Demo treatments demonstrate graphics capabilities:
colortriangle.ztt
movepointdemo.ztt
selectlinkdemo.ztt
z-draw.ztt
animatetreedemo.ztt
More information on graphics in z-Tree:
z-Tree lecture by Maria Bigoni:
http://www2.dse.unibo.it/bigoni/courses/ztree/Lecture_notes_handout.pdf
z-Tree Wiki:
https://www.uzh.ch/iew/ztree/ssl-dir/wiki/
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
143
Graz, SS 2012
A Comprehensive Introduction to z-Tree
Exercises
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
144
Graz, SS 2012
11. Exercises
Exercise A simple guessing game*
Program the following treatment:
The computer draws a random integer between 1
and 10 (y)
Each subject enters an integer between 1 and 10 (x)
If x equals y, the subject receives 100 ECU
Display the outcome of the treatment
Hints:
y=roundup(random()*10,1));
Profit=if(x==y,100,0);
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
145
Graz, SS 2012
11. Exercises
Exercise Ultimatum Game 1/2
Program the following treatment:
2 subjects, 1 period
Subject A receives 10 euros and decides how much
to transfer to subject B
Subject B can either accept or reject the offer
If B accepts, A gets what he kept and B gets what
he was given
If B rejects, both players receive 0
Display the outcome of the treatment
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
146
Graz, SS 2012
11. Exercises
Exercise Ultimatum Game 2/2
Subject A
Structure
Subject B
Program start
Proposer decision stage
Responder decision stage
Profit display stage
Hint: Participate = 1 - Proposer;
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
147
Graz, SS 2012
11. Exercises
Exercise Trust Game
Program the following treatment:
2 subjects, 1 period
Subject A receives 10 euros and decides how much to
transfer to subject B
The amount transferred is multiplied by 3 when it arrives
in subject Bs account
Subject B decides how much to transfer back to subject
A
The amount transferred is multiplied by 3 when it arrives
in subject As account
Display the outcome of the treatment
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
148
Graz, SS 2012
11. Exercises
Exercise Keynes beauty contest 1/2
Program the following treatment:
9 subjects participate in an experiment with 3
periods
Subjects are randomly matched and rematched into
groups of 3 (absolute stranger matching)
Each subject enters an integer x between 0 and 100
The subject whose x is closest to 0.5 times the
group average of x receives 100 ECU
Display the outcome of the treatment
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
149
Graz, SS 2012
11. Exercises
Exercise Keynes beauty contest 2/2
Hints:
distance=abs(x-0.5*subjects.average(same(Group),x));
Winner=if(distance==subjects.minimum(same(Group), /*
*/ distance),1,0);
Extra tasks:
In case there would be more than one winner, make
sure that one of them is randomly chosen to receive
the 100 ECU
Implement an experimenter subject which sees the
entries made by the other subjects (contract list)
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
150
Graz, SS 2012
11. Exercises
Exercise Dutch auction 1/2*
Program the following treatment:
There are 15 subjects, in 3 groups of 5 subjects
Each subject is endowed with 100 ECU
Each subject can buy a maximum of 1 unit of a good
The good has different values for different subjects
A subjects valuation is randomly determined between
10 and 90
Each subject is informed only of their own valuation
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
151
Graz, SS 2012
11. Exercises
Exercise Dutch auction 2/2*
The computer conducts a Dutch auction for 3 units of the
good in each group
The computer starts the auction at a price of 100 and
counts down to 0, reducing the price by 1 every 3 seconds
If a subject buys the good for the current price, the auction
for the next good starts, until all goods are sold
At the end, subjects see their profit, which is:
If they bought a good: The difference between their
private valuation of the good and their purchase price
If they bought no good: Zero
Subjects may not buy at a price higher than their valuation
* Adapted from lecture slides by Verena Utikal, Friedrich-Alexander-University Erlangen-Nrnberg.
A Comprehensive Introduction to z-Tree
Stefan Palan, Karl-Franzens-University Graz
152
Graz, SS 2012
Karl-Franzens-University Graz
A Comprehensive Introduction to z-Tree
Stefan Palan
stefan.palan@uni-graz.at
http://www.palan.biz/academic