mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 01:30:22 +00:00
73 lines
1.8 KiB
Plaintext
73 lines
1.8 KiB
Plaintext
/** Replicate Imai, Jain and Ching Econometrica 2009 (incomplete).
|
|
|
|
**/
|
|
#include "IJCEmet2009.h"
|
|
|
|
Kapital::Kapital(L,const N,const entrant,const exit,const KP){
|
|
StateVariable(L,N);
|
|
this.entrant = entrant;
|
|
this.exit = exit;
|
|
this.KP = KP;
|
|
actual = Kbar*vals/(N-1);
|
|
upper = log(actual~.Inf);
|
|
}
|
|
|
|
Kapital::Transit(FeasA) {
|
|
decl ent =CV(entrant), stayout = FeasA[][exit.pos], tprob, sigu = CV(KP[SigU]);
|
|
if (!v && !ent) return { <0>, ones(stayout) };
|
|
tprob = ent ? probn( (upper-CV(KP[Kbe]))/sigu )
|
|
: probn( (upper-(CV(KP[Kb0])+CV(KP[Kb2])*upper[v])) / sigu );
|
|
tprob = tprob[1:] - tprob[:N-1];
|
|
return { vals, tprob.*(1-stayout)+(1.0~zeros(1,N-1)).*stayout };
|
|
}
|
|
|
|
FirmEntry::Run() {
|
|
Initialize();
|
|
GenerateSample();
|
|
BDP->BayesianDP();
|
|
}
|
|
|
|
FirmEntry::Initialize() {
|
|
Rust::Initialize(Reachable,0);
|
|
sige = new StDeviations("sige",<0.3,0.3>,0);
|
|
entrant = new LaggedAction("entrant",d);
|
|
KP = new array[Kparams];
|
|
KP[Kbe] = new Positive("be",0.5);
|
|
KP[Kb0] = new Free("b0",0.0);
|
|
KP[Kb1] = new Determined("b1",0.0);
|
|
KP[Kb2] = new Positive("b2",0.4);
|
|
KP[SigU] = new Positive("sigu",0.4);
|
|
EndogenousStates(K = new Kapital("K",KN,entrant,d,KP),entrant);
|
|
SetDelta(new Probability("delta",0.85));
|
|
kcoef = new Positive("kcoef",0.1);
|
|
ecost = new Negative("ec",-0.4);
|
|
CreateSpaces();
|
|
}
|
|
|
|
FirmEntry::GenerateSample() {
|
|
Volume = LOUD;
|
|
EM = new ValueIteration(0);
|
|
// EM -> Solve(0,0);
|
|
data = new DataSet(0,EM);
|
|
data->Simulate(DataN,DataT,0,FALSE);
|
|
data->Print("firmentry.xls");
|
|
BDP = new ImaiJainChing("FMH",data,EM,ecost,sige,kcoef,KP,delta);
|
|
}
|
|
|
|
/** Capital stock can be positive only for incumbents.
|
|
**/
|
|
FirmEntry::Reachable() { return CV(entrant)*CV(K) ? 0 : new FirmEntry() ; }
|
|
|
|
/** The one period return.
|
|
<DD>
|
|
<pre>U = </pre>
|
|
</DD>
|
|
**/
|
|
FirmEntry::Utility() {
|
|
decl ent = CV(entrant),
|
|
u =
|
|
ent*CV(ecost)+(1-ent)*CV(kcoef)*AV(K)
|
|
| 0.0;
|
|
return u;
|
|
}
|