From a3005c434843e03e59c79e3e61da2325bb3b7686 Mon Sep 17 00:00:00 2001 From: Tim Mensinger Date: Wed, 28 Feb 2024 17:32:16 +0100 Subject: [PATCH] Remove get_models.py module --- src/lcm/get_model.py | 136 ------------------ tests/data/regression_tests/simulation.pkl | Bin 1617 -> 1617 bytes tests/data/regression_tests/solution.pkl | Bin 2725 -> 2725 bytes tests/test_analytical_solution.py | 50 +++++-- tests/test_models/phelps_deaton.py | 10 +- tests/test_process_model.py | 8 +- tests/test_simulate.py | 2 +- ...model.py => test_solution_on_toy_model.py} | 0 8 files changed, 48 insertions(+), 158 deletions(-) delete mode 100644 src/lcm/get_model.py rename tests/{test_analytical_solution_on_toy_model.py => test_solution_on_toy_model.py} (100%) diff --git a/src/lcm/get_model.py b/src/lcm/get_model.py deleted file mode 100644 index 61e932ca..00000000 --- a/src/lcm/get_model.py +++ /dev/null @@ -1,136 +0,0 @@ -"""Get a user model and parameters.""" - -from typing import NamedTuple - -from pybaum import tree_update - -from tests.test_models.phelps_deaton import ( - PHELPS_DEATON, - PHELPS_DEATON_WITH_FILTERS, -) - - -class ModelAndParams(NamedTuple): - """Model and parameters.""" - - model: dict - params: dict - - -def get_model(model: str): - """Get a user model and parameters. - - Args: - model (str): Model name. - - Returns: - NamedTuple: Model and parameters. Has attributes `model` and `params`. - - """ - if model not in MODELS: - raise ValueError(f"Model {model} not found. Choose from {set(MODELS.keys())}.") - return MODELS[model] - - -# ====================================================================================== -# Models -# ====================================================================================== - -# Remove age and wage functions from Phelps-Deaton model, as they are not used in the -# original paper. -PHELPS_DEATON_WITHOUT_AGE = PHELPS_DEATON.copy() -PHELPS_DEATON_WITHOUT_AGE["functions"] = { - name: func - for name, func in PHELPS_DEATON_WITHOUT_AGE["functions"].items() - if name not in ["age", "wage"] -} - - -PHELPS_DEATON_FIVE_PERIODS = { - **PHELPS_DEATON_WITHOUT_AGE, - "choices": { - "retirement": {"options": [0, 1]}, - "consumption": { - "grid_type": "linspace", - "start": 1, - "stop": 400, - "n_points": 500, - }, - }, - "states": { - "wealth": { - "grid_type": "linspace", - "start": 1, - "stop": 400, - "n_points": 100, - }, - }, - "n_periods": 5, -} - - -ISKHAKOV_2017_FIVE_PERIODS = { - **PHELPS_DEATON_WITH_FILTERS, - "choices": { - "retirement": {"options": [0, 1]}, - "consumption": { - "grid_type": "linspace", - "start": 1, - "stop": 400, - "n_points": 500, - }, - }, - "states": { - "wealth": { - "grid_type": "linspace", - "start": 1, - "stop": 400, - "n_points": 100, - }, - "lagged_retirement": {"options": [0, 1]}, - }, - "n_periods": 5, -} - - -ISKHAKOV_2017_THREE_PERIODS = tree_update(ISKHAKOV_2017_FIVE_PERIODS, {"n_periods": 3}) - -# ====================================================================================== -# Models and params -# ====================================================================================== - -MODELS = { - "phelps_deaton_regression_test": ModelAndParams( - model=PHELPS_DEATON_FIVE_PERIODS, - params={ - "beta": 1.0, - "utility": {"disutility_of_work": 1.0}, - "next_wealth": { - "interest_rate": 0.05, - "wage": 1.0, - }, - }, - ), - "iskhakov_2017_five_periods": ModelAndParams( - model=ISKHAKOV_2017_FIVE_PERIODS, - params={ - "beta": 0.98, - "utility": {"disutility_of_work": 1.0}, - "next_wealth": { - "interest_rate": 0.0, - "wage": 20.0, - }, - }, - ), - "iskhakov_2017_low_disutility_of_work": ModelAndParams( - model=ISKHAKOV_2017_THREE_PERIODS, - params={ - "beta": 0.98, - "utility": {"disutility_of_work": 0.1}, - "next_wealth": { - "interest_rate": 0.0, - "wage": 20.0, - }, - }, - ), -} diff --git a/tests/data/regression_tests/simulation.pkl b/tests/data/regression_tests/simulation.pkl index 3abb6e85bffdf27f6c9066800c397cf0f83538f0..d28f5814ef91df0d48d59bca48c87c20c79d6cf5 100644 GIT binary patch delta 271 zcmcb}bCGAliTcgV40Gr1`)SW&Sb4wnzo-L~-|6R5*yS7w^?l~aS}Hj(fWe3VcVG63 zYE|$$ywo^$&^SuO;qk{>In{3x4!P!MzXqLsWbfVFE4@kopM8fI?=ry_76%K@6Z>5E zb2{8D@LBokudu_^Ef4qtr^!0p+kZ}eo4&5Y^2ODqmIf9MFbnLN=CQnOOO}Ev)P^hY ziYjQ=IQ<7M4>IocA58}cZ85o>QPIvga+B8$n?(Enxdu0?%e5R_Z%h7(Tx;b}y;cLrH!(Yn9?oV3I8#nq*j209KemG7CJyb?yKF diff --git a/tests/data/regression_tests/solution.pkl b/tests/data/regression_tests/solution.pkl index d45858ddd7277383d02eabf174440fba25ada4b5..c1889cb64d28d9805109c634b7eaf20f36d6eb4c 100644 GIT binary patch delta 2428 zcmZXWX*|^l7sq8^!oA$Z?k<0KC3zBBhF`ZrWs9O>EG1Nih-$LjLXR5C+9VATN+o*_ zQL@z-Mroo#QnV*`qLPrgFP`Vsb6%a#`Fzjsy!xGUN~k5&^hUAFf1^fDCNHmP+Ac}( z);(yuGF();J^!{QW09P~uLeR2))HM`T?=WDPux`=c}oWunhSe1Vwhs| zpXo?H@Q8_DkN16VUBrU&$%~5e2`v0DMb-(u$3oJbh3=)gZ0zr;i751EV~6bltGz{R zM1H-}IzGzA%pu?WN+y9T6Lvbgd25B{HAuhg6J@ODw8#ArPa z-ZEJQ?TVdti)wkuo3K z3&KteGx?ZFTlJ)EIUi*fj-9JK`1l-IQ@wHzAC1CXr`HL5xamKng*)_y%%=s&s~g_2K~0E1S4MS_422lkXD3^+NQj~7*Un4`@t`oH)nTI$ zZOl+Z$L&IVSmWcy*eAqf_F+L)q7d=9A=w7mLd>2yx68j+i0rev6`{34q)!D5yR{3^ zGu&;e-Ydi~x%zSDs1R#?P0Ac+CWOe%^_Q`hHAUpTs!0*q6b{ZMcgz{47!OLm&(VAD*m}4z$5$UwrK1Cpz53vKRuU|G1GKEpUEWt=0N*{CrA1UjOx)Pj&K_r{LpWOy@>^;7x+%|i^drGD9Q{xkyyM!gS1 zY8hZy1u1UmVZh0CvpC^B1Mk#xBi<@7k;?MZX)tEOV71)iKW&(x`+3p*H!|_B=ca`= zyO?l1Ae(vRFca|(AxnZ!Gx2~Ff3D*y6QA2JOP1YcBK&1^!42^s6ODB-x7M3 zX{5+PBIN{2pvS_}&YrpZW-QEmZzRuw1+slh+j9>V9u)K%`UJ6HO)~qKeUOEMTh6-M ze_y_mSr+J=oyy#+EO3>|L?%sAJ^qQr=DRGEGxqcghgq<_TB#(Gupl4a)F&3q zv*2*jZ23(MHsE*2QfS16^T9Bd$cznj!PbXXE7?eLn%y?Mo{f=;6>|YwrS-*!SDX)K zLnB;+(G<-_&9RrWzb3NrXYa!ot{H4Zq#qpU$YWC^)U*=W>F8@*@*Yj!h1Mpml?rCFcpaUn;H$yDDwiN*=7QBha`Y zaqM0Tkp-n?;{V-}7v1q6WwI9F7)|{GIY}O&2P|TuE-6BTZRXks^(R^S^4R+VuocJRP5lq5FV68g(BtK`U?$ba@*qloQQxoYtmqJdfCiIV8 z&&U>%fJ=L7l_E%ZFgLfHTulg{ zicOPfL6z1XBGJ;u&ehg$7)!N5liibS?WqlB(V5vb`^DM_>{klddP)lLssa*gw6Rt) z8`9IG4d;Q9R;LfzxU7AnV6W5V&g1JqjG&KZ`u^l7d$C=Y~JdQ1B*>x2axCqT-3) z_@g2dDiW0Ioh)prSSOPjW#vwV=kM=4`gc;X&AKAb@MkI}Q-0`COr=6lv~gKZJ{8=b z_fPj$QjtGnuGHL0MV`&Dg-I|b5EmA&FV?l8VO>=HvmOT;zI@w#e}fkduS!F2rUcQTa*^ks8BK$qYIi_D5)CiQ zcWn8VNkj1FM;*S>|01OH6*s+t2D@U#!L*w+9BWv*%&&`v%)8}fHG?$FJaH2mzLgFh zRkPprg@$cmQ%0e3bj&Ya((OT_L+!6f@sC=Dbo3e=`Ky#q$N80wCOTGhm}Vt81c>M` zuBtIU>OzP8*w+(D+obDP-fp*l5FOt|ibr)L>3F)k;bLVR9Wx_xr#Q#y$n>VD#Aegs zyhd`p>Kq*@o6EgAE=%=)YE5mvM#qZz#ou$A>EN%qyJ1Tg9j#%8QKacUI&R6@jKn>o Y`=+1FAFd-~a#s delta 2428 zcmWMoc{mh^1C1OJbD0@)GiH>lt#%!?sd>4hQmiPXYdf4#NXk%AQcEaD2OBC@j^s|r z5w?(DO2`pW7Lo8d;^(jTz3;vE&->$jFO8N)iz*c_ZmlWL{-7b6sF|}IA`FOXqGD2? z2aSse=F+}ec2gps8_sfWia$jGN3C>Hf+V2-DFg(B186gFt zcxxT2j6p+Pp?|b#i_$L z`xMV}VHI7uySa`FVpGxTK?)BMZa-QU_wmr3C-SiQn}^gVcJG-3JP^|AZH+ZmU>*Nm zX24YiidRlQApfI+sh<%IV_#K3vmR=#7AvWuM|M)@?Rr)C3evQ8TdU&W_k7L$?y68X zl(SC0qKZEawr}-JRYm06*(*)us<@k2_{LCKns| z;3S+9#^U#8b$?JOT&i5hvINNRYXP35d#t%lYv9mh^XHTYHTF3_`4!`be8{tHLd zu*Zr-5C^K^FDX9RD^d+5-h=7<6g7ylto-*CsNteE_0i8u&V&O z<4!C)5GX)R-a}o9YXaOl@{ec09RZ}TcobD<3edDNccJ^40Mh|wMoq5-nA%nIEUHrg z$x%5Q_2DIbT>t5!OC1$TDf9$6s?mlpH-&wKZW}G_6{x*L-10#9RovSvEB<`kczH+2k#O zpPA{JlCPJe{hRCMZ4=UP+iy}{S}uz<_pcMv+~u&qy-<6(UmlKicC+7%6;QRtAR;_O z5wX#xgW^mA&U#fQsXZrRjZQve# zN5Q&&`;y0E3ifu~+>_EtK`Gr=*;Y>p%*5B1Y_BT8_?%cc)}aLX#wcB$78Tr}Vb?rg zDrC(=y(rJA$m?32WiLg8Xv$Qt#heD+w_0n@hSL!6;nTgWIx!6v;aNI|W$2*U`v#V7 zrK3pun(wzjI&O!X*nG^R!^>DQf0bw6)mzpXOLQ*5P-!jutA)m__I zsEk_+9f>BwC`H?m5tvmNqhXIIp7{%Q(?*HU{h$%(^^9gf?L+z`e@IAl`tze-e*ZCSy#<3 zZO+c?WGjh>9O%xx^DnC4U|`#pex-H}6dSLL&#ao@Ajr6Pp?f74RL?o)ULhCx5)KqU zLoOa|cj|WfgNuNQq}F~nE_ya^F#P=@7lny!GaD1R@buhyR5q6jEyDcP3op6QsIDq* z{>X*xzY}rw6I}2XW`uX;c*s{cuEJK~!Ts3fjTd!!sQWdg<&7l|;vV&s3#kWq_(a!^ zTlD3jZ>{F-;j27Yf9@OgO5!1d#LK;&$BTjNMsZU8Vz!gwfarEK?fvxmaZwk&aWIlL zCAv1yGCP^gm0$DbVzEU`sqA+_-Q5w}=+25ZgO5?RfqEa(Y2JcK+re70f#5ne| zc3_Ao3qtX!T?s+5h|ua!P8^iQr|7Gx=d4!X$$$5qiZfQ=)3eK$N~GnmZ&Ag*(@72* z37%D6IdT}gd_2URBoCL>y&SHyJd|x0B;_8;qj2XRaR*1`F)^hB+uv3~)H1Ii#)C-&4{<0S}KEO6-52fZ95CsAiV}7TC{zJxf)@ zriGEahqo!>hHq{6^f^Tg9B3;w&sKzo#&pG@9z{?r1V`;j1ZYLC7XBt8;Kdh*Ymy!W z7?!s=y-6T|ZkidLQA5B{`e;D>7y%*1d!D6=SwyU&Zue|6Cc>d_xWV8w5l)_YZke}< z_!99>_0S6+0?JDO+x*zcLv`Yl8|xc7m~qF z5>5^u`nJ<$iN};o@=lUKJ?G<_9!x^y$&;yLQ6yYYmAf~UOoEnW$`Nr{4hbg8oBGTu zNbm@&8;xxuVcILgJiUvAA|Fv==m-fq?Hfb1=Sld*@l@y?c{0A)iB;MeWW=iZ6n$Pr z#zOXUYKL^34H*Nayy`9&GVE*)&CR-#p?Bjz&2Ru2-~TdOpC3ks zOV~!SiCqjCzT^L!d7VTCk$c-jHIuwlnFnD<5gGb~;SF}xOM!ns+}+qrMt{y(;#|j) zFaE1T;vg9Gw^L4mk~YvP%1Nx{2m6(6SE5`G;Qd%93Sx63chb)&>Y$