#| Mean inference in Racket.Gamble From the SPPL model poisson_mean_inference.pynb Here is the PDF of Y = 0..20 (exact probabilities) from the SPPL model: (0, 0.19572329209779615), (1, 0.24541518485806976), (2, 0.15633363576277434), (3, 0.07275764007128807), (4, 0.03749784880330323), (5, 0.03225414602603766), (6, 0.036272539178041456), (7, 0.03919655164760693), (8, 0.03782130413444809), (9, 0.032547494609049904), (10, 0.025221805385485633), (11, 0.017769927037907036), (12, 0.011477227802063514), (13, 0.006844292955361095), (14, 0.00379364785941744), (15, 0.0019704640279916506), (16, 0.000975431521715664), (17, 0.0004844975064651556), (18, 0.0002799391781190319), (19, 0.00023526933546341676) (20, 0.0002864142016352986) This Gamble model var : x ... mean: -0.00208193575164102 var : y 1: 0.23691000000037568 0: 0.1846200000003234 2: 0.17141000000031018 3: 0.10304000000021132 4: 0.06221000000011403 5: 0.04217000000008008 6: 0.03086000000006079 7: 0.024370000000047545 8: 0.019680000000037973 9: 0.015660000000029768 10: 0.012490000000023841 11: 0.011170000000021376 12: 0.009340000000017959 13: 0.008230000000015886 14: 0.007190000000013889 15: 0.00586000000001129 16: 0.005490000000010567 17: 0.004600000000008828 18: 0.004230000000008105 19: 0.0038300000000073267 20: 0.0031000000000059318 21: 0.0027800000000053203 22: 0.002660000000005091 23: 0.0022400000000042885 24: 0.0021400000000040974 25: 0.0018800000000036004 26: 0.001850000000003543 27: 0.00166000000000318 28: 0.0014600000000027978 29: 0.0011300000000021672 30: 0.001110000000002129 31: 0.0009800000000018806 32: 0.0009400000000018038 33: 0.0008300000000015924 35: 0.0008200000000015732 39: 0.0007700000000014771 34: 0.0007500000000014386 36: 0.000720000000001381 37: 0.0007100000000013618 40: 0.0005700000000010927 38: 0.0005200000000009967 44: 0.00045000000000086236 41: 0.00043000000000082404 45: 0.00040000000000076655 46: 0.0003400000000006516 42: 0.0003300000000006324 43: 0.0003300000000006324 50: 0.0003000000000005749 48: 0.0002600000000004983 47: 0.0002500000000004791 49: 0.0002500000000004791 52: 0.0002500000000004791 54: 0.00024000000000045992 53: 0.00020000000000038328 56: 0.00020000000000038328 51: 0.0001700000000003258 65: 0.0001400000000002683 55: 0.00012000000000022996 58: 0.00012000000000022996 59: 0.00012000000000022996 63: 0.00010000000000019164 72: 0.00010000000000019164 60: 9.000000000017248e-5 61: 9.000000000017248e-5 62: 9.000000000017248e-5 57: 8.000000000015331e-5 66: 8.000000000015331e-5 67: 8.000000000015331e-5 64: 7.000000000013415e-5 73: 7.000000000013415e-5 78: 7.000000000013415e-5 69: 6.000000000011498e-5 70: 6.000000000011498e-5 90: 6.000000000011498e-5 71: 5.000000000009582e-5 74: 5.000000000009582e-5 79: 5.000000000009582e-5 80: 5.000000000009582e-5 82: 5.000000000009582e-5 88: 5.000000000009582e-5 75: 4.0000000000076656e-5 77: 4.0000000000076656e-5 81: 4.0000000000076656e-5 85: 4.0000000000076656e-5 87: 4.0000000000076656e-5 102: 4.0000000000076656e-5 68: 3.0000000000057494e-5 76: 3.0000000000057494e-5 89: 3.0000000000057494e-5 91: 3.0000000000057494e-5 93: 3.0000000000057494e-5 103: 3.0000000000057494e-5 84: 2.0000000000038328e-5 86: 2.0000000000038328e-5 95: 2.0000000000038328e-5 96: 2.0000000000038328e-5 98: 2.0000000000038328e-5 100: 2.0000000000038328e-5 107: 2.0000000000038328e-5 136: 1.0000000000019164e-5 94: 1.0000000000019164e-5 97: 1.0000000000019164e-5 99: 1.0000000000019164e-5 101: 1.0000000000019164e-5 106: 1.0000000000019164e-5 108: 1.0000000000019164e-5 109: 1.0000000000019164e-5 110: 1.0000000000019164e-5 111: 1.0000000000019164e-5 114: 1.0000000000019164e-5 116: 1.0000000000019164e-5 118: 1.0000000000019164e-5 122: 1.0000000000019164e-5 123: 1.0000000000019164e-5 124: 1.0000000000019164e-5 mean: 4.170010000007912 This is a port of my WebPPL model mean_inference.wppl which in turn is a port of the SPPL model poisson_mean_inference.pynb This program was created by Hakan Kjellerstrand, hakank@gmail.com See also my Racket page: http://www.hakank.org/racket/ |# #lang gamble ; (require gamble/viz) (require racket) (require "gamble_utils.rkt") ; (require "gamble_distributions.rkt") (define (model) (; enumerate ; rejection-sampler importance-sampler ; mh-sampler ; x is truncated ;; (define x (normal 0 1)) ;; (observe/fail (>= x -4)) ;; (observe/fail (<= x 4)) ; neater (define x (sample (clip-distx (normal-dist 0 1) -4 4 ))) (define y (poisson (+ 1 (* 2 (abs (expt x 3)))))) (list x y ) ) ) (show-marginals (model) (list "x" "y" ) #:num-samples 100000 ; #:truncate-output 5 ; #:skip-marginals? #t ; #:show-stats? #t ; #:credible-interval 0.84 ; #:show-histogram? #t ; #:show-percentiles? #t )