Exploring evolutionary models with Lsd

1 / 31

Exploring evolutionary models with Lsd - PowerPoint PPT Presentation

Exploring evolutionary models with Lsd. PhD Eurolab on Simulation of Economic Evolution (SIME) University of Strasbourg, April 2004 Revised: 8 April 2004 Esben Sloth Andersen DRUID and IKE, Aalborg University, Denmark. KISS and TAMAS: Conflicting principles?. KISS = Keep It Simple, Stupid!

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Exploring evolutionary models with Lsd

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Exploring evolutionary models with Lsd

PhD Eurolab on Simulation of Economic Evolution (SIME)

University of Strasbourg, April 2004

Revised: 8 April 2004

Esben Sloth Andersen

DRUID and IKE, Aalborg University, Denmark

KISS and TAMAS: Conflicting principles?
• KISS = Keep It Simple, Stupid!
• A slogan from the US army during World War II
• Generally acknowledged by scientific modellers
• TAMAS = Take A Model, Add Something!
• Variant for Lsd modellers: TAMAM = Take A Model, Add Marco!
• Principle for cumulative modelling
• KISS = TAMAS?
• Not when the initial model is complex and ill structured!
• In this case we need a new principle!
• TAMAKISS = Take A Model And Keep It Simpler, Stupid!
TAMAKISS with a Nelson-Winter model

Capital accumulation

Numi

Technical change

fi

Short-run process

• Reuse our model of replicator dynamics!
• Replicator equation
• N[t]=N[t-1](1+a(f-af)/af);
EQUATION("Num")

/* Replicator dynamics:N[t]=N[t-1](1+a(f-af)/af) */

v[0]=VL("Num",1);

v[1]=V("a");

v[2]=V("f");

v[3]=V("af");

v[4]=v[0]*(1+v[1]*(v[2]-v[3])/v[3]);

RESULT(v[4])

EQUATION("af")

/* Average fitness */

v[0]=0; v[1]=0;

CYCLE(cur, "Species")

{v[0]+=VLS(cur,"Num",1);

v[1]+=VLS(cur,"Num",1)*VS(cur,"f");}

RESULT(v[1]/v[0])

//EQUATION("f")

/* Unchanged fitness of Species. This version was replaced by the next equation */

//RESULT( VL("f",1) )

EQUATION("f")

/* Fitness of Species changed through random walk */

RESULT( VL("f",1)+UNIFORM(-.2,.2) )

Lsd code for replicator dynamics
Start by copying the model
• Find your original modelin Browse Model window
• Edit/Copy
• Edit/Paste
• Write RepDyn2004 inmodel name
• Write rd2004 in dir name
• OK
• Write a description
• Save description
• Goto model equations
Introducing a control variable for change of fitnesses
• Case 1: Fixed fitnesses (productivities)
• f[t] = f[t-1];
• Case 2: Random walk of fitnesses
• f[t] = f[t-1] + UNIFORM(-.2,.2);
• Allowing for both cases
• if RandWalk==0 then f[t] = f[t-1];
• if RandWalk==1 then f[t] = f[t-1] + UNIFORM(-.2,.2);
Specifying the regimes
• RandWalk – Change of fitnesses?

0: no change 1: random walk 2: define your own regime

• Fissions – Change in number of firms?

0: no change 1: fission of large species

2: define your own change rule

Rewrite equation for fitness (f)
• EQUATION("f")
• /*
• Calculation of fitness
• If RandWalk = 0, then fixed fitnesses
• If RandWalk = 1, then random walk of fitnesses
• */
• v[0]=V("RandWalk");
• if (v[0]==0) v[1]=VL("f",1);
• if (v[0]==1) v[1]=VL("f",1)+UNIFORM(-.2,.2);
• RESULT(v[1])
• Goto Population and add parameter RandWalk
• Initialise RandWalk to 0
• Goto Species, Initial values, Set all to 10 incr. by -.5
• Run the model, then reload the config
• Set RandWalk = 1 and rerun model. Then kill it!
• Size of total population
• TotNum = Sum(Num)
• Population shares of species
• s = Num/TotNum
• Inverse Herfindahl index
• Standard concentration indicator in industrial economics
• InvHerf = 1/Sum(s^2)
• Between 1 and the number of species
Implement simple statistics
• EQUATION("TotNum")
• /* Total number of members of the population */
• v[0]=0;
• CYCLE(cur, "Species")
• {v[0]+=VLS(cur,"Num",1);}
• RESULT(v[0])
• EQUATION("s")
• /* Population share */
• v[0]=V("Num");
• v[1]=V("TotNum");
• RESULT(v[0]/v[1])
Change model structure
• Add TotNum to Population (with save)
• Add s with time lag = 1 to species (with save)
• Initialise s for all species to 0.1
• Reset RandWalk = 0
• Run the model and check that it works correctly!
• Check what happens to s when RandWalk = 1
• EQUATION("InvHerf")
• /* Inverse Herfindahl index = 1/SUM(s^2) */
• v[0]=0;
• CYCLE(cur,"Species")
• {
• v[1]=VS(cur,"s");
• v[0]=v[0]+v[1]*v[1];
• }
• RESULT(1/v[0])
• … Change model structure and check concentration
• dynamics. Then kill the model
The logic of fissions of species
• Large species encounter varied pressures
• They tend to split into different species
• Large firms have conflicts and split
• I model fissions as a fixed propensity to split
• If population share is above 25%
• Then the species will on average split once every 40 periods
• Modelled as a Poisson process
• Result of fission: Concentration is kept lower
Introduce fissions of species
• EQUATION("Fission")
• /* Fissions of species take on average place once every 40 periods
• if its population share is larger than 25%. */
• V("Repro"); // Ensure that reproduction coefficient is calculated
• v[0] = V("s");
• v[1] = V("Num");
• v[2] = V("Fissions");
• v[3] = RND-0.5;
• if (v[0]>0.25 && v[2]==1 && poisson(0.05*v[3])>0)
• {cur=p->up;
• WRITELS(cur,"Num",0.4*v[1],t);
• WRITELS(cur,"s",0.4*v[0],t);
• WRITELS(p,"Num",0.6*v[1],t);
• WRITELS(p,"s",0.6*v[0],t);}
• RESULT(v[2])
Change the model structure and check
• Add parameter Fissions to Population
• Initialise Fission = 0 and RandWalk = 0
• Add variable Fission to Species
• Run the model and check that nothing has changed
• Change Fission = 1, and study the results
• Why is there no fissions at the end of the simulation?
• Change Fission = 1 and RandWalk = 1
• Study the results? What happens?
• Kill the model before proceeding
Defining and calculating statistics
• Population information for two points of time
• Initial population share of each species
• Reproduction coefficient of each species
• “Fitness” of each species and its change
• Simple statistics
• Meanreproduction coefficient
• Changein mean fitness
• Variance of fitnesses
• Covariance of reproduction coefficients and fitnesses
• Regression of reproduction coefficients on fitnesses
Price’s partitioning of evolutionary change
• Total evolutionary change  Selection effect + Innovation effect
The meaning of Price’s equation
• The innovation effect is the creative part
• It takes place within the units, e.g. the firms
• It may be due to innovation, imitation, learning, …
• It may also be due to intra-firm selection, e.g. of plants
• The selection effect means that some entities are promoted while other entities shrink
• It represents Schumpeter’s “creative destruction”
• Firms may try to avoid selection by imitation and learning
• The selection pressure sets the agenda for firms
• The Price equation ignoresecological effects
• Thus it is a form of short-term evolutionary analysis
• But short-term evolution is the starting point!
Price’s statistics – reproduction coefficients
• EQUATION("Repro")
• /* Repro = Num[t]/Num[t-1]The reproduction coefficient of the species */
• RESULT(V("Num")/VL("Num",1))
• EQUATION("ReproMean")
• /* Weighted mean of the species' reproduction coefficients */
• v[0]=0;
• CYCLE(cur,"Species")
• {v[1] = VLS(cur,"s",1);
• v[2] = VS(cur,"Repro");
• v[0] = v[0]+v[1]*v[2];}
• RESULT(v[0])
Price’s statistics – selection as covariance
• EQUATION("Covar")
• /* Cov(Repro,A) = SUM[ s[t-1]*(Repro[t-1]-ReproMean[t-1])*(f[t-1]-af[t-1])) ]Covariance between species' reproduction coefficients and fitnesses */
• v[0]=0;
• v[3] = V("ReproMean");
• v[5] = V("af");
• CYCLE(cur, "Species")
• {v[1] = VLS(cur,"s",1);
• v[2] = VS(cur,"Repro");
• v[4] = VLS(cur,"f",1);
• v[0] = v[0] + v[1]*(v[2]-v[3])*(v[4]-v[5]);}
• RESULT(v[0])
Price’s statistics – the innovation effect
• EQUATION("InnoEffect")
• /* E(s[t]*(f[t]-f[t-1])) / ReproMean
• The innovation effect as defined by George Price's equation. */
• v[0]=0;
• v[10] = V("ReproMean");
• CYCLE(cur, "Species")
• {
• v[1] = VS(cur,"s");
• v[2] = VS(cur,"f");
• v[3] = VLS(cur,"f",1);
• v[0] = v[0] + v[1]*(v[2]-v[3]);
• }
• RESULT(v[0]/v[10])