Model solution
Contents
Model solution#
In this exercise, we will go through the model solution.
Warning
Remember that dhr.func
is the sintax that calls the file with the functions see before.
Packages#
import numpy as np
import dhr_functions as dhr
from scipy.stats import norm
Parameters#
Define parameters of the model. The parameters are:
Group we are simulating
Discount factor
Total days in the month
Value for utility of leisure
Non pecuniary cost of working
group = "treatment"
beta = 0.03
Tm = 30
mu = 4
P = 3
Creating matrices#
First we will create the matrices that we will fill using the model solution. We will store the following:
Probability of working
Probability of leisure
Expected value of working
Expected value of leisure
ϵ Threshold
Value function
# Probability matrix
probs_w = np.empty((Tm,Tm))
probs_w[:] = np.nan
probs_l = np.empty((Tm,Tm))
probs_l[:] = np.nan
# Threshold matrix
eps_t = np.empty((Tm,Tm))
eps_t[:] = np.nan
# Expected values matrix for work
eve_w = np.empty((Tm,Tm))
eve_w[:] = np.nan
# Expected values matrix for leisure
eve_l = np.empty((Tm,Tm))
eve_l[:] = np.nan
# Value function matrix
vf = np.empty((Tm,Tm))
vf[:] = np.nan
Model solution loop#
The model solution is solved backward and follows these steps:
Solve for the threshold that makes the value function for leisure bigger.
Use the result from 1 to obtain the probability of leisure and work.
Calculate the truncated distribution value for leisure
Calculate the EV (expected values in the period ahead)
Repeat until the end of the loop
This gives the value of having an specific level of education in the last period
for t in range(Tm,-1,-1):
print()
for d in range(0,Tm):
if d >= t:
pass
else:
if t == 30:
eps_t[t-1,d] = beta*(dhr.income_g(t, d+1)- dhr.income_g(t, d))- (mu-P)
else:
eps_t[t-1,d] = vf[t,d+1] - vf[t,d] - (mu-P)
probs_l[t-1,d] = 1 - norm.cdf(eps_t[t-1,d])
probs_w[t-1,d] = 1 - probs_l[t-1,d]
if t == 30:
eve_l[t-1,d] = 0 + dhr.exp_epsilon(eps_thres = eps_t[t-1,d])
eve_w[t-1,d] = 0
else:
eve_l[t-1,d] = vf[t,d] + dhr.exp_epsilon(eps_thres = eps_t[t-1,d])
eve_w[t-1,d] = vf[t,d+1]
vf[t-1,d] = probs_l[t-1,d]*(dhr.VF(1, t, d, eve_l = eve_l[t-1,d])) + \
probs_w[t-1,d]*(dhr.VF(0, t, d+1, eve_w = eve_w[t-1,d]))
Let’s see the value function matrix
print(vf)
[[50.93618802 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[49.24231215 50.7366338 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[47.55504031 49.03975976 50.53842516 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[45.88492987 47.34447042 48.8408411 50.34053375 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[44.25647039 45.65344784 47.14362665 48.64278463 50.14271603 nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[42.71475105 43.97370229 45.44742013 46.94511925 48.44492953 49.94491499
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[41.30913338 42.32241379 43.7539467 45.24768455 46.74716116 48.24712039
49.74711755 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[40.04658066 40.73550499 42.06779028 43.55088322 45.04944339 46.54932944
48.04932133 49.54932084 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[38.88264083 39.26519925 40.40062109 41.85581258 43.35186637 44.85154884
46.35152576 47.85152433 49.35152427 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[37.76761609 37.94273316 38.77912592 40.16542745 41.65467951 43.15379756
44.65373208 46.15372792 47.65372771 49.15372771 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[36.67263343 36.74237612 37.25063593 38.48746035 39.95856927 41.45612898
42.95594389 44.45593179 45.95593117 47.45593115 48.95593115 nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[35.58516308 35.61084394 35.86245392 36.84074537 38.26540814 39.75869285
41.25817154 42.75813653 44.25813466 45.75813459 47.25813459 48.75813459
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[34.50040067 34.5094579 34.61462655 35.26378993 36.58020474 38.0619069
39.5604448 41.06034382 42.56033825 44.06033804 45.56033803 47.06033803
48.56033803 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[33.4165936 33.41968487 33.45918145 33.8094634 34.91573095 36.36692805
37.86284881 39.36255873 40.86254215 42.36254149 43.86254148 45.36254148
46.86254148 48.36254148 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[32.33311684 32.33413267 32.34808168 32.50376585 33.30091689 34.67691526
36.16562579 37.66479616 39.164747 40.66474496 42.16474492 43.66474492
45.16474492 46.66474492 48.16474492 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[31.24975114 31.25006762 31.25477526 31.31493296 31.78538521 33.00022148
34.46946032 35.96710001 37.46695479 38.9669485 40.46694836 41.96694836
43.46694836 44.96694836 46.46694836 47.96694836 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[30.16642122 30.16651234 30.1680221 30.18934074 30.41432922 31.35725756
32.77626627 34.26959875 35.76917164 37.26915226 38.7691518 40.2691518
41.7691518 43.2691518 44.7691518 46.2691518 47.7691518 nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[29.08310204 29.08312537 29.0835759 29.09066443 29.18106399 29.78923079
31.09127757 32.57266626 34.07141623 35.57135672 37.07135525 38.57135525
40.07135525 41.57135525 43.07135525 44.57135525 46.07135525 47.57135525
nan nan nan nan nan nan
nan nan nan nan nan nan]
[27.99978578 27.99979076 27.99991133 28.00210803 28.03434073 28.35006678
29.42808327 30.87738126 32.37374565 33.87356345 35.37355869 36.87355869
38.37355869 39.87355869 41.37355869 42.87355869 44.37355869 45.87355869
47.37355869 nan nan nan nan nan
nan nan nan nan nan nan]
[26.91647019 26.91647098 26.91649818 26.91711358 26.92761181 27.06101323
27.81774172 29.18680867 30.67633331 32.17577758 33.67576213 35.17576213
36.67576213 38.17576213 39.67576213 41.17576213 42.67576213 44.17576213
45.67576213 47.17576213 nan nan nan nan
nan nan nan nan nan nan]
[25.83315471 25.83315478 25.83315939 25.83330636 25.83639854 25.88439349
26.31287481 27.50937012 28.97970301 30.47801564 31.97796557 33.47796557
34.97796557 36.47796557 37.97796557 39.47796557 40.97796557 42.47796557
43.97796557 45.47796557 46.97796557 nan nan nan
nan nan nan nan nan nan]
[24.74983924 24.74983924 24.74983968 24.7498664 24.75065056 24.76580651
24.95811824 25.86639263 27.28542182 28.78033126 30.28016902 31.78016902
33.28016902 34.78016902 36.28016902 37.78016902 39.28016902 40.78016902
42.28016902 43.78016902 45.28016902 46.78016902 nan nan
nan nan nan nan nan nan]
[23.66652376 23.66652376 23.66652376 23.66652655 23.66668018 23.67079516
23.74070066 24.30212049 25.59808722 27.08289814 28.58237246 30.08237246
31.58237246 33.08237246 34.58237246 36.08237246 37.58237246 39.08237246
40.58237246 42.08237246 43.58237246 45.08237246 46.58237246 nan
nan nan nan nan nan nan]
[22.58320829 22.58320829 22.58320829 22.58320829 22.58322588 22.58410033
22.60506295 22.87453728 23.93056705 25.38627805 26.8845759 28.3845759
29.8845759 31.3845759 32.8845759 34.3845759 35.8845759 37.3845759
38.8845759 40.3845759 41.8845759 43.3845759 44.8845759 46.3845759
nan nan nan nan nan nan]
[21.49989282 21.49989282 21.49989282 21.49989282 21.49989282 21.50000366
21.50490913 21.60340081 22.31478686 23.69227889 25.18677934 26.68677934
28.18677934 29.68677934 31.18677934 32.68677934 34.18677934 35.68677934
37.18677934 38.68677934 40.18677934 41.68677934 43.18677934 44.68677934
46.18677934 nan nan nan nan nan]
[20.41657735 20.41657735 20.41657735 20.41657735 20.41657735 20.41657735
20.41727559 20.44394505 20.80962699 22.00662916 23.48898279 24.98898279
26.48898279 27.98898279 29.48898279 30.98898279 32.48898279 33.98898279
35.48898279 36.98898279 38.48898279 39.98898279 41.48898279 42.98898279
44.48898279 45.98898279 nan nan nan nan]
[19.33326188 19.33326188 19.33326188 19.33326188 19.33326188 19.33326188
19.33326188 19.33764816 19.46880845 20.34661132 21.79118623 23.29118623
24.79118623 26.29118623 27.79118623 29.29118623 30.79118623 32.29118623
33.79118623 35.29118623 36.79118623 38.29118623 39.79118623 41.29118623
42.79118623 44.29118623 45.79118623 nan nan nan]
[18.24994641 18.24994641 18.24994641 18.24994641 18.24994641 18.24994641
18.24994641 18.24994641 18.27702866 18.75730653 20.09338967 21.59338967
23.09338967 24.59338967 26.09338967 27.59338967 29.09338967 30.59338967
32.09338967 33.59338967 35.09338967 36.59338967 38.09338967 39.59338967
41.09338967 42.59338967 44.09338967 45.59338967 nan nan]
[17.16663094 17.16663094 17.16663094 17.16663094 17.16663094 17.16663094
17.16663094 17.16663094 17.16663094 17.31878286 18.39559311 19.89559311
21.39559311 22.89559311 24.39559311 25.89559311 27.39559311 28.89559311
30.39559311 31.89559311 33.39559311 34.89559311 36.39559311 37.89559311
39.39559311 40.89559311 42.39559311 43.89559311 45.39559311 nan]
[16.08331547 16.08331547 16.08331547 16.08331547 16.08331547 16.08331547
16.08331547 16.08331547 16.08331547 16.08331547 16.69779656 18.19779656
19.69779656 21.19779656 22.69779656 24.19779656 25.69779656 27.19779656
28.69779656 30.19779656 31.69779656 33.19779656 34.69779656 36.19779656
37.69779656 39.19779656 40.69779656 42.19779656 43.69779656 45.19779656]]
Now, I will run the above loop using the model solution function, which will create the same matrices
probs_w, probs_l, eps_t, eve_w, eve_l, vf = dhr.model_solution()
print(vf)
[[50.93618802 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[49.24231215 50.7366338 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[47.55504031 49.03975976 50.53842516 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[45.88492987 47.34447042 48.8408411 50.34053375 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[44.25647039 45.65344784 47.14362665 48.64278463 50.14271603 nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[42.71475105 43.97370229 45.44742013 46.94511925 48.44492953 49.94491499
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[41.30913338 42.32241379 43.7539467 45.24768455 46.74716116 48.24712039
49.74711755 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[40.04658066 40.73550499 42.06779028 43.55088322 45.04944339 46.54932944
48.04932133 49.54932084 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[38.88264083 39.26519925 40.40062109 41.85581258 43.35186637 44.85154884
46.35152576 47.85152433 49.35152427 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[37.76761609 37.94273316 38.77912592 40.16542745 41.65467951 43.15379756
44.65373208 46.15372792 47.65372771 49.15372771 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[36.67263343 36.74237612 37.25063593 38.48746035 39.95856927 41.45612898
42.95594389 44.45593179 45.95593117 47.45593115 48.95593115 nan
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[35.58516308 35.61084394 35.86245392 36.84074537 38.26540814 39.75869285
41.25817154 42.75813653 44.25813466 45.75813459 47.25813459 48.75813459
nan nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[34.50040067 34.5094579 34.61462655 35.26378993 36.58020474 38.0619069
39.5604448 41.06034382 42.56033825 44.06033804 45.56033803 47.06033803
48.56033803 nan nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[33.4165936 33.41968487 33.45918145 33.8094634 34.91573095 36.36692805
37.86284881 39.36255873 40.86254215 42.36254149 43.86254148 45.36254148
46.86254148 48.36254148 nan nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[32.33311684 32.33413267 32.34808168 32.50376585 33.30091689 34.67691526
36.16562579 37.66479616 39.164747 40.66474496 42.16474492 43.66474492
45.16474492 46.66474492 48.16474492 nan nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[31.24975114 31.25006762 31.25477526 31.31493296 31.78538521 33.00022148
34.46946032 35.96710001 37.46695479 38.9669485 40.46694836 41.96694836
43.46694836 44.96694836 46.46694836 47.96694836 nan nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[30.16642122 30.16651234 30.1680221 30.18934074 30.41432922 31.35725756
32.77626627 34.26959875 35.76917164 37.26915226 38.7691518 40.2691518
41.7691518 43.2691518 44.7691518 46.2691518 47.7691518 nan
nan nan nan nan nan nan
nan nan nan nan nan nan]
[29.08310204 29.08312537 29.0835759 29.09066443 29.18106399 29.78923079
31.09127757 32.57266626 34.07141623 35.57135672 37.07135525 38.57135525
40.07135525 41.57135525 43.07135525 44.57135525 46.07135525 47.57135525
nan nan nan nan nan nan
nan nan nan nan nan nan]
[27.99978578 27.99979076 27.99991133 28.00210803 28.03434073 28.35006678
29.42808327 30.87738126 32.37374565 33.87356345 35.37355869 36.87355869
38.37355869 39.87355869 41.37355869 42.87355869 44.37355869 45.87355869
47.37355869 nan nan nan nan nan
nan nan nan nan nan nan]
[26.91647019 26.91647098 26.91649818 26.91711358 26.92761181 27.06101323
27.81774172 29.18680867 30.67633331 32.17577758 33.67576213 35.17576213
36.67576213 38.17576213 39.67576213 41.17576213 42.67576213 44.17576213
45.67576213 47.17576213 nan nan nan nan
nan nan nan nan nan nan]
[25.83315471 25.83315478 25.83315939 25.83330636 25.83639854 25.88439349
26.31287481 27.50937012 28.97970301 30.47801564 31.97796557 33.47796557
34.97796557 36.47796557 37.97796557 39.47796557 40.97796557 42.47796557
43.97796557 45.47796557 46.97796557 nan nan nan
nan nan nan nan nan nan]
[24.74983924 24.74983924 24.74983968 24.7498664 24.75065056 24.76580651
24.95811824 25.86639263 27.28542182 28.78033126 30.28016902 31.78016902
33.28016902 34.78016902 36.28016902 37.78016902 39.28016902 40.78016902
42.28016902 43.78016902 45.28016902 46.78016902 nan nan
nan nan nan nan nan nan]
[23.66652376 23.66652376 23.66652376 23.66652655 23.66668018 23.67079516
23.74070066 24.30212049 25.59808722 27.08289814 28.58237246 30.08237246
31.58237246 33.08237246 34.58237246 36.08237246 37.58237246 39.08237246
40.58237246 42.08237246 43.58237246 45.08237246 46.58237246 nan
nan nan nan nan nan nan]
[22.58320829 22.58320829 22.58320829 22.58320829 22.58322588 22.58410033
22.60506295 22.87453728 23.93056705 25.38627805 26.8845759 28.3845759
29.8845759 31.3845759 32.8845759 34.3845759 35.8845759 37.3845759
38.8845759 40.3845759 41.8845759 43.3845759 44.8845759 46.3845759
nan nan nan nan nan nan]
[21.49989282 21.49989282 21.49989282 21.49989282 21.49989282 21.50000366
21.50490913 21.60340081 22.31478686 23.69227889 25.18677934 26.68677934
28.18677934 29.68677934 31.18677934 32.68677934 34.18677934 35.68677934
37.18677934 38.68677934 40.18677934 41.68677934 43.18677934 44.68677934
46.18677934 nan nan nan nan nan]
[20.41657735 20.41657735 20.41657735 20.41657735 20.41657735 20.41657735
20.41727559 20.44394505 20.80962699 22.00662916 23.48898279 24.98898279
26.48898279 27.98898279 29.48898279 30.98898279 32.48898279 33.98898279
35.48898279 36.98898279 38.48898279 39.98898279 41.48898279 42.98898279
44.48898279 45.98898279 nan nan nan nan]
[19.33326188 19.33326188 19.33326188 19.33326188 19.33326188 19.33326188
19.33326188 19.33764816 19.46880845 20.34661132 21.79118623 23.29118623
24.79118623 26.29118623 27.79118623 29.29118623 30.79118623 32.29118623
33.79118623 35.29118623 36.79118623 38.29118623 39.79118623 41.29118623
42.79118623 44.29118623 45.79118623 nan nan nan]
[18.24994641 18.24994641 18.24994641 18.24994641 18.24994641 18.24994641
18.24994641 18.24994641 18.27702866 18.75730653 20.09338967 21.59338967
23.09338967 24.59338967 26.09338967 27.59338967 29.09338967 30.59338967
32.09338967 33.59338967 35.09338967 36.59338967 38.09338967 39.59338967
41.09338967 42.59338967 44.09338967 45.59338967 nan nan]
[17.16663094 17.16663094 17.16663094 17.16663094 17.16663094 17.16663094
17.16663094 17.16663094 17.16663094 17.31878286 18.39559311 19.89559311
21.39559311 22.89559311 24.39559311 25.89559311 27.39559311 28.89559311
30.39559311 31.89559311 33.39559311 34.89559311 36.39559311 37.89559311
39.39559311 40.89559311 42.39559311 43.89559311 45.39559311 nan]
[16.08331547 16.08331547 16.08331547 16.08331547 16.08331547 16.08331547
16.08331547 16.08331547 16.08331547 16.08331547 16.69779656 18.19779656
19.69779656 21.19779656 22.69779656 24.19779656 25.69779656 27.19779656
28.69779656 30.19779656 31.69779656 33.19779656 34.69779656 36.19779656
37.69779656 39.19779656 40.69779656 42.19779656 43.69779656 45.19779656]]