Commit ae4bee8
Mahler-Yum example: split the PRNG key once; drop an unsupported causal claim
Round-3 Pro audit findings, both verified at source.
F2. `create_inputs` drew `type_indices` from `key` and then split that same
already-consumed key for the health, adjustment-cost and productivity-shock
draws. JAX's contract is split-before-consume, and its own key-reuse checker
rejects this exact pattern: the type draw and the other three are not guaranteed
independent. The root key is now split once into four children, each consumed
exactly once. No bias was measured at this calibration (a million-draw
correlation test found none), but independence is what the initial distribution
assumes, so it should hold by construction rather than by luck.
This changes every initial draw, so `tests/test_mahler_yum_2024.py`'s expected
labor-supply distribution and mean-wealth profile at seed=32/n=10000 are now
stale and need regenerating on a GPU. Not done here.
F5. The module docstring claimed the Fortran's old-habit continuation was a
shortcut FORCED by the continuous effort search landing off the habit grid, since
the code could not interpolate along that axis. That is refuted by the authors'
own simulator: `mod_simul.f90` carries `effhabit` as `real(8)`, sets the next
habit to the continuous golden-section effort (line 634), and calls
`bilini(agrid, fgrid, ...)` at the continuous incoming habit throughout. The
two-dimensional interpolation the solver would have needed already existed a few
files away. The mechanism (the effort objective interpolates over assets only)
stands; the motive does not follow from the source and is no longer asserted.
Also softened the numerical-scope note: the moments' numerical derivative not
converging is a property of this implementation, but the measurements do not
isolate WHICH numerical choice causes it. The grid is a consistent explanation,
not an identified one.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PVSLmeMo6iWUTcNER7bvM61 parent fe483fd commit ae4bee8
1 file changed
Lines changed: 29 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
22 | 32 | | |
23 | 33 | | |
24 | 34 | | |
| |||
44 | 54 | | |
45 | 55 | | |
46 | 56 | | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
51 | 63 | | |
52 | 64 | | |
53 | 65 | | |
| |||
933 | 945 | | |
934 | 946 | | |
935 | 947 | | |
936 | | - | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
937 | 957 | | |
938 | 958 | | |
939 | | - | |
| 959 | + | |
940 | 960 | | |
941 | 961 | | |
942 | 962 | | |
943 | 963 | | |
944 | 964 | | |
945 | 965 | | |
946 | | - | |
947 | | - | |
| 966 | + | |
948 | 967 | | |
949 | 968 | | |
950 | 969 | | |
| |||
978 | 997 | | |
979 | 998 | | |
980 | 999 | | |
981 | | - | |
| 1000 | + | |
982 | 1001 | | |
983 | 1002 | | |
984 | 1003 | | |
985 | 1004 | | |
986 | 1005 | | |
987 | 1006 | | |
988 | 1007 | | |
989 | | - | |
| 1008 | + | |
990 | 1009 | | |
991 | 1010 | | |
992 | 1011 | | |
| |||
0 commit comments