Comparison of Liam2 and Genesis Dynamic

advertisement
Model
Development Unit
MDU
Comparison of LIAM2 and
Genesis Model Generators
Howard Redway
Model Development Unit
UK Department for Work and Pensions
Howard.Redway@dwp.gsi.gov.uk
IMA Conference
May 18 2012
Model
Development Unit
MDU
Presentation Overview
Background:
Why Were Genesis and LIAM2 Developed
How Are They Used
Overview of the Structure of Genesis and LIAM2
Main Differences in Functionality
Structure of a Genesis Model
Structure of a LIAM2 Model
Simple Example of Genesis and LIAM2 Code
More Complex Example of Genesis and LIAM2 Code
Conclusions
Questions Further Information
Model
Development Unit
MDU
Why Genesis was Developed
and How is it Used (1)
Originally Developed for Pensim2 (replacing for Pensim)
•
To model State and Private Pensions policies
•
Desktop tool
•
Parameter driven by users
•
Maintainable within DWP (Not black box like Pensim)
•
Based on DWP standard language – SAS
Model
Development Unit
MDU
Why Genesis was Developed
and How is it Used (1)
Originally Developed for Pensim2 (replacing for Pensim)
•
To model State and Private Pensions policies
•
Desktop tool
•
Parameter driven by users
•
Maintainable within DWP (not black box like Pensim)
•
Based on DWP standard language – SAS
Realised it could generate a wide class of models
•
Became Genesis separate from Pensim2
•
5 other Genesis models in addition to Pensim2
•
Genesis is owned and maintained by DWP
Model
Development Unit
MDU
Why Genesis was Developed
and How is it Used (2)
Pensim2:
•
First release 2004
•
Used by the Pensions Commission
•
Private and State Pension Policy Development
•
Forecasting
•
Up to 20 users at any one time
•
High turnover of users and developers
•
About 6 released a year (2 major)
Model
Development Unit
MDU
Why LIAM2 Developed and How is it Used
LIAM2 was developed:
•
For the development and management of large dynamic
microsimulation models by teams of researchers
•
To be flexible so that modellers can update the models fast to
changes in the circumstances
•
To separate the computer programming from the model
development
•
Microsimulation teams no longer have to reinvent the wheel
•
Different teams can cooperate more easily
Model
Development Unit
MDU
Why LIAM2 Developed and How is it Used
LIAM2 was developed:
•
For the development and management of large dynamic
microsimulation models by teams of researchers
•
To be flexible so that modellers can update the models fast to
changes in the circumstances
•
To separate the computer programming from the model
development
•
Microsimulation teams no longer have to reinvent the wheel
•
Different teams can cooperate more easily
•
As an open source tool running on a standard PC
Model
Development Unit
MDU
Why LIAM2 Developed and How is it Used
LIAM2 was developed:
•
For the development and management of large dynamic
microsimulation models by teams of researchers
•
To be flexible so that modellers can update the models fast to
changes in the circumstances
•
To separate the computer programming from the model
development
•
Microsimulation teams no longer have to reinvent the wheel
•
Different teams can cooperate more easily
•
As an open source tool running on a standard PC
Several models produced or under development
Model
Development Unit
MDU
Why LIAM2 Developed and How is it Used
LIAM2 was developed:
•
For the development and management of large dynamic
microsimulation models by teams of researchers
•
To be flexible so that modellers can update the models fast to
changes in the circumstances
•
To separate the computer programming from the model
development
•
Microsimulation teams no longer have to reinvent the wheel
•
Different teams can cooperate more easily
•
As an open source tool running on a standard PC
Several models produced or under development
LIAM2 is being developed at the Federal Planning Bureau (Belgium), with funding and testing by
CEPS/INSTEAD (Luxembourg) and IGSS (Luxembourg), and EU funding
Model
Development Unit
MDU
Structure of a Model: LIAM2 (1)
LIAM2 is:
•
An interpreter/compiler
•
Written in Python
(model developer and users do not need to know this)
•
The model is specified in text as a LIAM2 program
•
In YAML-markup language (independent of Python)
•
Most LIAM2 statements are interpreted and executed
(some are compiled)
Model
Development Unit
MDU
Structure of a Model: LIAM2 (2)
LIAM2
Model
Development Unit
MDU
Structure of a Model: LIAM2 (2)
Model Specification
(YAML format)
LIAM2
Model
Development Unit
MDU
Structure of a Model: LIAM2 (2)
Model Specification
(YAML format)
Alignment
Matrices
LIAM2
Model
Development Unit
MDU
Structure of a Model: LIAM2 (2)
Model Specification
(YAML format)
Alignment
Matrices
Base Data
LIAM2
Model
Development Unit
MDU
Structure of a Model: LIAM2 (2)
Model Specification
(YAML format)
Alignment
Matrices
Base Data
LIAM2
Output
Model
Development Unit
MDU
Log and PC Output
Structure of a Model: Genesis (1)
Genesis is:
•
A code generator
•
Written in SAS
•
Model specified as parameters in Excel sheets
•
Writes and then runs a SAS program
Model
Development Unit
MDU
Structure of a Model: Genesis (1)
Genesis Model Engine
Model
Development Unit
MDU
Structure of a Model: Genesis (1)
Parameters
Excel Spreadsheets
Genesis Model Engine
Model
Development Unit
MDU
Structure of a Model: Genesis (1)
Parameters
Static Code
Excel Spreadsheets
Developers Own SAS
Genesis Model Engine
Model
Development Unit
MDU
Structure of a Model: Genesis (1)
Parameters
Static Code
Excel Spreadsheets
Developers Own SAS
Genesis Model Engine
SAS Program
Model
Development Unit
MDU
Structure of a Model: Genesis (1)
Parameters
Static Code
Excel Spreadsheets
Developers Own SAS
Genesis Model Engine
SAS Program
Model
Development Unit
MDU
Base Data
Structure of a Model: Genesis (1)
Parameters
Static Code
Excel Spreadsheets
Developers Own SAS
Genesis Model Engine
Base Data
SAS Program
Output
Model
Development Unit
MDU
Log
Structure of a Model: Genesis (1)
Tools
Parameters
Static Code
Developers Own SAS
Excel Spreadsheets
Genesis Model Engine
Base Data
SAS Program
Tools
Model
Development Unit
MDU
Output
Log
Tools
Main Differences in Functionality (1)
Genesis has:
•
Static Code: Provides the flexibility to code in SAS processes that
are not supported by the specific Genesis functionality
•
Missing values: SAS missing value indicator enable missing values
to be trapped (LIAM2 uses -1 and FALSE for Integer and Boolean
missing values).
•
Date processing
•
Unordered Polychotomous Regressions
Model
Development Unit
MDU
Main Differences in Functionality (1)
Genesis has:
•
Static Code: Provides the flexibility to code in SAS processes that
are not supported by the specific Genesis functionality
•
Missing values: SAS missing value indicator enable missing values
to be trapped (LIAM2 uses -1 and FALSE for Integer and Boolean
missing values).
•
Date processing
•
Unordered Polychotomous Regressions
•
Ordered Polychotomous Regressions
•
Probit Regression (specific functionality)
Model
Development Unit
MDU
Main Differences in Functionality (2)
LIAM2 has:
•
Interactive Console and Breakpoints: Powerful debugging tool
(inspection of variables and step through procedures)
•
Temporary Variables: Not saved automatically and may be local to
a procedure
Model
Development Unit
MDU
Main Differences in Functionality (2)
LIAM2 has:
•
Interactive Console and Breakpoints: Powerful debugging tool
(inspection of variables and step through procedures)
•
Temporary Variables: Not saved automatically and may be local to
a procedure
•
Macros (more general than Genesis Selection Criteria)
•
One2Many links and link functions
•
Forced outcomes with alignment (take/leave)
•
Partnership matching
•
Cloning: create a new record copying selected variables
•
Output functions (can be switched off)
Model
Development Unit
MDU
Example 1: Simple LIAM2 Choice Process
How would you assign level of education in LIAM2 for persons aged 25
and over?
Assuming the variables Age and EducationLevel had be defined
Specify the following as a process for the entity person.
Model
Development Unit
MDU
Example 1: Simple LIAM2 Choice Process
How would you assign level of education in LIAM2 for persons aged 25
and over?
Assuming the variables Age and EducationLevel had be defined
Specify the following as a process for the entity person.
EducationLevel: if(
(Age>25) and (EducationLevel != -1) ,
choice([2,3,4], [0.25, 0.39, 0.36]) ,
EducationLevel )
Model
Development Unit
MDU
Example 1: Simple LIAM2 Choice Process
How would you assign level of education in LIAM2 for persons aged 25
and over?
Assuming the variables Age and EducationLevel had be defined
Specify the following as a process for the entity person.
EducationLevel: if(
(Age>25) and (EducationLevel != -1) ,
choice([2,3,4], [0.25, 0.39, 0.36]) ,
EducationLevel )
The within the simulation block of the program:
person: [EducationLevel]
Model
Development Unit
MDU
Example 1: Simple Genesis DPM Action
SelectionCriteriaRule Sheet
SelectionCriteria
Condition1
Condition2
Over25_Education_Not_Assigned
pa_Age>25
MISSING(pa_EducationLevel)
Model
Development Unit
MDU
Example 1: Simple Genesis DPM Action
SelectionCriteriaRule Sheet
SelectionCriteria
Condition1
Condition2
Over25_Education_Not_Assigned
pa_Age>25
MISSING(pa_EducationLevel)
DPM_Assign_Education Sheet
Table Name
pa
Selection Criteria
Data Item
EducationLevel
Outcome
2002
2003
2004
2005
2
0.25
0.25
0.25
0.25
3
0.39
0.39
0.39
0.39
4
Model
Development Unit
MDU
Example 1: Simple Genesis DPM Action
SelectionCriteriaRule Sheet
SelectionCriteria
Condition1
Condition2
Over25_Education_Not_Assigned
pa_Age>25
MISSING(pa_EducationLevel)
DPM_Assign_Education Sheet
Table Name
pa
Data Item
EducationLevel
Selection Criteria
Outcome
2002
2003
2004
2005
2
0.25
0.25
0.25
0.25
3
0.39
0.39
0.39
0.39
4
ActionRule Sheet
Actions
Name
DPM_Assign_Education
Model
Development Unit
MDU
Selection Criteria
Tablename
Variable
Over25_Education_Not_Assigned
pa
EducationLevel
Example 2: More Complex Genesis DPM Action
DPM_Assign_Education Sheet
Table Name
pa
Data Item
EducationLevel
Outcome
2002
2003
2004
2005
Man_UK_Born
2
0.25
0.24
0.23
0.23
Man_UK_Born
3
0.39
0.39
0.38
0.37
Man_UK_Born
4
Man_NonUK_Born
2
0.25
0.25
0.25
0.25
Man_NonUK_Born
3
0.39
0.39
0.39
0.39
Man_NonUK_Born
4
Woman_UK_Born
2
0.23
0.23
0.23
0.23
Woman_UK_Born
3
0.23
0.23
0.23
0.23
Woman_UK_Born
4
Woman_NonUK_Born
2
0.23
0.23
0.23
0.23
Woman_NonUK_Born
3
0.23
0.23
0.23
0.23
Woman_NonUK_Born
4
Selection Criteria
Model
Development Unit
MDU
Example 2: More Complex LIAM2 Choice Process
EducationLevel: if(
(age>25) and (EducationLevel != -1) and (Man_UK_Born) ,
if((period=2002),
choice([2,3,4], [0.25,0.39,0.36]) ,
if((period=2003),
choice([2,3,4], [0.24,0.39,0.37]) ,
if((period=2004),
choice([2,3,4], [0.23,0.38,0.39]) ,
if((period=2005),
choice([2,3,4], [0.23,0.37,0.4]) ,
EducationLevel
)))),
Model
Development Unit
MDU
Example 2: More Complex LIAM2 Choice Process
EducationLevel: if(
(age>25) and (EducationLevel != -1) and (Man_UK_Born) ,
if((period=2002),
choice([2,3,4], [0.25,0.39,0.36]) ,
f((period=2003),
choice([2,3,4], [0.24,0.39,0.37]) ,
if((period=2004),
choice([2,3,4], [0.23,0.38,0.39]) ,
if((period=2005),
choice([2,3,4], [0.23,0.37,0.4]) ,
EducationLevel
)))),
if( (age>25) and (EducationLevel != -1) and (Man_NonUK_Born)
etc
)
Model
Development Unit
MDU
Conclusions (1)
LIAM2 and Genesis are both able to generate discrete dynamic
microsimulation models containing similar processes (demographic,
labour market, pension processes)
Genesis requires SAS (currently version 9.1)
Genesis is owned and maintained by DWP
LIAM2 is Open Source
Model
Development Unit
MDU
Conclusions (1)
LIAM2 and Genesis are both able to generate discrete dynamic
microsimulation models containing similar processes (demographic,
labour market, pension processes)
Genesis requires SAS (currently version 9.1)
Genesis is owned and maintained by DWP
LIAM2 is Open Source
There are a few major differences in functionality
Genesis has Static Code
LIAM2 has Interactive Console and Temporary variables
Model
Development Unit
MDU
Conclusions (1)
LIAM2 and Genesis are both able to generate discrete dynamic
microsimulation models containing similar processes (demographic,
labour market, pension processes)
Genesis requires SAS (currently version 9.1)
Genesis is owned and maintained by DWP
LIAM2 is Open Source
There are a few major differences in functionality
Genesis has Static Code
LIAM2 has Interactive Console and Temporary variables
Many other differences in functionality
Model
Development Unit
MDU
Conclusions (1)
LIAM2 and Genesis are both able to generate discrete dynamic
microsimulation models containing similar processes (demographic,
labour market, pension processes)
Genesis requires SAS (currently version 9.1)
Genesis is owned and maintained by DWP
LIAM2 is Open Source
There are a few major differences in functionality
Genesis has Static Code
LIAM2 has Interactive Console and Temporary variables
Many other differences in functionality
Different approach to how a model is specified
Model
Development Unit
MDU
Conclusions (2)
The slow running of Genesis is a concern
Currently looking for ways to speed this up
LIAM2 appears to be significantly faster
No direct comparison available yet
Model
Development Unit
MDU
Conclusions (2)
The slow running of Genesis is a concern
Currently looking for ways to speed this up
LIAM2 appears to be significantly faster
No direct comparison available yet
If both Genesis and LIAM2 are capable of generating a specific model
with acceptable runtimes then
the most appropriate interface for the intended users
is likely to be a significant factor
Model
Development Unit
MDU
Questions Further Information
Questions?
Genesis Information:
Howard.Redway@dwp.gsi.gov.uk
Or any member of the Model Development Unit
Two presentations in the next session
LIAM2 information:
http://liam2.plan.be/
Model
Development Unit
MDU
Download