{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "866ff385-2e86-405f-b74d-0602389f2807", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Main.O" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "module O\n", "\n", "using Distributions\n", "using Random\n", "\n", "struct NormalGamma <: ContinuousUnivariateDistribution\n", " μ\n", " λ\n", " a\n", " b\n", "end\n", "\n", "function Base.rand(rng::AbstractRNG, d::NormalGamma)\n", " (; μ, λ, a, b) = d\n", " rand(rng, Normal(μ, inv(sqrt(λ * rand(Gamma(a, b))))))\n", "end\n", "\n", "end" ] }, { "cell_type": "code", "execution_count": 2, "id": "1cd9bf6e-9089-48c8-9815-49d1f88d4fc8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.713671 seconds (8.77 M allocations: 194.933 MiB, 15.64% gc time, 31.25% compilation time)\n", " 0.401586 seconds (8.00 M allocations: 152.580 MiB, 2.92% gc time)\n", " 0.413190 seconds (8.00 M allocations: 152.580 MiB, 3.15% gc time)\n" ] } ], "source": [ "tmp = Vector{Float64}(undef, 10^6)\n", "@time O.rand!(O.NormalGamma(1, 2, 2.1, 0.5), tmp)\n", "@time O.rand!(O.NormalGamma(1, 2, 2.1, 0.5), tmp)\n", "@time O.rand!(O.NormalGamma(1, 2, 2.1, 0.5), tmp);" ] }, { "cell_type": "code", "execution_count": 3, "id": "41556b14-bd5b-46cd-99b2-2478f77ed40b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MethodInstance for rand(::Random.TaskLocalRNG, ::Main.O.NormalGamma)\n", " from rand(rng::Random.AbstractRNG, d::Main.O.NormalGamma) in Main.O at In[1]:13\n", "Arguments\n", " #self#\u001b[36m::Core.Const(rand)\u001b[39m\n", " rng\u001b[36m::Core.Const(Random.TaskLocalRNG())\u001b[39m\n", " d\u001b[36m::Main.O.NormalGamma\u001b[39m\n", "Locals\n", " b\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", " a\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", " λ\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", " μ\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "Body\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m1 ─\u001b[39m (μ = Base.getproperty(d, :μ))\n", "\u001b[90m│ \u001b[39m (λ = Base.getproperty(d, :λ))\n", "\u001b[90m│ \u001b[39m (a = Base.getproperty(d, :a))\n", "\u001b[90m│ \u001b[39m (b = Base.getproperty(d, :b))\n", "\u001b[90m│ \u001b[39m %5 = μ\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %6 = λ\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %7 = Main.O.Gamma(a, b)\u001b[91m\u001b[1m::Distributions.Gamma\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %8 = Main.O.rand(%7)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %9 = (%6 * %8)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %10 = Main.O.sqrt(%9)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %11 = Main.O.inv(%10)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %12 = Main.O.Normal(%5, %11)\u001b[91m\u001b[1m::Distributions.Normal\u001b[22m\u001b[39m\n", "\u001b[90m│ \u001b[39m %13 = Main.O.rand(rng, %12)\u001b[91m\u001b[1m::Any\u001b[22m\u001b[39m\n", "\u001b[90m└──\u001b[39m return %13\n", "\n" ] } ], "source": [ "@code_warntype rand(O.Random.default_rng(), O.NormalGamma(1, 2, 3, 4))" ] }, { "cell_type": "code", "execution_count": 4, "id": "f993d6ad-60d5-431f-880e-6186b0a44fc3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Main.Q" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "module Q\n", "\n", "using Distributions\n", "using Random\n", "\n", "struct NormalGamma{Tμ, Tλ, Ta, Tb} <: ContinuousUnivariateDistribution\n", " μ::Tμ\n", " λ::Tλ\n", " a::Ta\n", " b::Tb\n", "end\n", "\n", "function Base.rand(rng::AbstractRNG, d::NormalGamma)\n", " (; μ, λ, a, b) = d\n", " rand(rng, Normal(μ, inv(sqrt(λ * rand(Gamma(a, b))))))\n", "end\n", "\n", "end" ] }, { "cell_type": "code", "execution_count": 5, "id": "fce4f1db-6d2d-49c1-8974-121225506e8e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.404534 seconds (8.02 M allocations: 153.928 MiB, 7.86% gc time, 2.03% compilation time)\n", " 0.381746 seconds (8.00 M allocations: 152.580 MiB, 4.92% gc time)\n", " 0.378809 seconds (8.00 M allocations: 152.580 MiB, 3.18% gc time)\n", " 0.074955 seconds (37.05 k allocations: 2.076 MiB, 21.77% compilation time)\n", " 0.059850 seconds\n", " 0.059976 seconds\n", " 0.091595 seconds (128.33 k allocations: 6.742 MiB, 8.84% gc time, 36.64% compilation time)\n", " 0.058394 seconds\n", " 0.057663 seconds\n" ] } ], "source": [ "using Random\n", "using Distributions\n", "using StatsPlots\n", "default(fmt = :png)\n", "\n", "res(xlim, A) = A[first(xlim) .< A .< last(xlim)]\n", "\n", "μ, λ, a, b = 1, 2, 1.5, 4\n", "ng_org = O.NormalGamma(μ, λ, a, b)\n", "ng_rev = Q.NormalGamma(μ, λ, a, b)\n", "normal = Normal(μ, 1/√(λ*a*b))\n", "tdist = μ + TDist(2a)/√(λ*a*b)\n", "\n", "A = Vector{Float64}(undef, 10^6)\n", "B = similar(A)\n", "C = similar(A)\n", "A = @time rand!(ng_org, A)\n", "A = @time rand!(ng_org, A)\n", "A = @time rand!(ng_org, A)\n", "B = @time rand!(ng_rev, B)\n", "B = @time rand!(ng_rev, B)\n", "B = @time rand!(ng_rev, B)\n", "C = @time rand!(tdist, C)\n", "C = @time rand!(tdist, C)\n", "C = @time rand!(tdist, C)\n", ";" ] }, { "cell_type": "code", "execution_count": 6, "id": "7ea7e28e-e388-40fd-a4fb-7f601c1f084b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAGQCAIAAAD9V4nPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd0ATZxsA8OeyICHsICAKskRAwVVEUXBb90Dr3ttq3dbV1tWvauuq1bpw4CrFXUdVrHtViyAqKgooIHsTsnPfHydnZIma5AI8v396d1zunqSGh/e9931egiRJQAghhGorFtMBIIQQQkzCRIgQQqhWw0SIEEKoVsNEiBBCqFbDRIgQQqhWw0SIEEKoVsNEiBBCqFbDRIgQQqhWw0SIEEKoVsNEiBBCqFYzoEQYHR2tVCqZjoIZarWa6RAMkUqlYjoEQ4QfS7nwS1QWSZJYRLMqDCgRduzYsaCggOkomCGRSPBrXFZxcTHTIRgi/FjKUqvVEomE6SgMjlwur7Wti49iQIkQIYQQ0j9MhAghhGo1TIQIIYRqNUyECCGEajVMhAghhGo1TIQIIYRqNUyECCGEajVMhAghhGo1TIQIVStPnrBv3WI6CIRqFEyECFUrBAFsNgBAbi5grTWEtIHDdAAIoSogSfj5Z5g+HTw9VfXqAQCsXQuDBkHz5kxHVpljx4798ccfergRSZJqtZpN/YmASqjVaoIgCIJgOhDt6Nmz5+jRo3VxZUyECFUHBAE+PmBs/O7ITz8xF01VXb9+3cTEpEePHkwHgqq9a9euXbp0CRMhQrXbl1+WPkKS8Ndf0KsXsAz3GYevr++gQYOYjgJVe1Kp9OLFizq6uOF+fxBCb/3+O5w8Wf6PXr4EqVS/0SBU02CLECGDN2ECiMXlHCcImD1b79EgVNNgixAhg8flgoVFhT+9fBmePdNjNAjVNJgIETJs48bBixeVnaBQvDeIBiH0kbBrFCHDtnUr8HiVndC1q75CQahmwhYhQobN2PjDg0Lv3YPoaL1Eg1ANhIkQIQM2fDi8efPh0yQS4HJ1H01tcerUqeDg4EpO+Omnn3744YePvezWrVtnzpxZ6mB0dPTChQvv379PH1m2bFlKSsrHXvxjde7c+dq1a9S2QqHYt2/fqFGjgoODZ8+eHRERQZKkrgMwKNg1ipAB27kT+PwPnxYYqPtQahEvL6+RI0dWckKHDh2USuXHXlYikRQWFpY6GBsbu3bt2suXL9+5c4cqAbNp06Y+ffo4ODh87PU/Sm5urlwup6Lq1q1bfn7+9OnT69atGxcXN3fu3IULFw4dOlSnARgUTIQIGTCBoKpnRkaCmRm4uekymhrixYsXx48fVyqVPXv29PHxAYDU1NSbN2/6+voePny4ZcuWnp6evJLnskVFRaGhoenp6QMHDoyPj2/evHn9+vU5HA6VtFJSUu7evevj43Pw4EFTU9Px48ebm5sDQGJi4tmzZ5OTkx0dHUeMGCEUCiuJp1mzZoWFhcePHx8wYECpHz1+/Pj06dMEQfTt29fDw4O6ckxMjIuLS3h4eFBQEEmStra2T58+vX//focOHbp27Xrjxo2///67cePGQ4YMoS5y9erVmzdvymQyf3//7t27l7rFzz//nJ6e/vDhQyMjI+rI9OnTs7OzAUAikZw9ezYmJsbIyIj+rIqLiw8fPtyzZ889e/aQJDlx4kQTE5Pdu3fn5OQMHTrU3d0dAG7fvs3hcLKysq5du+bn59e/f/8HDx4cP368QYMGo0ePpirh/fvvv5cvXxaLxb6+vgMGDGC2Dhx2jSJkqL755gPjRTWlpoJcrstoaoh///3X399fIpFwOJzOnTufOXMGAJ4/f/71119PnDjRzMyMzWbfv39//fr1AKBSqTp27Hj9+vX69evPnz9/6tSpMTExAHDixInw8HAAiI2N/frrr2fMmCESiW7cuNG7d2/qLgcOHMjJyXF3d793717btm0rbz6y2exly5YtXry41GmXLl1q3749SZIKhSIgIOD69esAEBUVNW3atBkzZlhaWrJYrJCQkODg4Bs3bohEoqFDh86ZM2fr1q329vY//PDD1q1bqets2rTJzMzMwcFhyZIlP/74Y6m7Hz16dPLkyXQWBAAOh2NrawsAMTExERER9erVY7PZX3755Y0bNwAgLy9v6tSpY8aMMTExefjwYc+ePUeNGiUWi4uKigICAoqKigDgyJEjw4cPP3bsmL29/ddffz1z5swVK1bY2tpu2bJl+fLl1F1+++03IyMjJyenjRs3lu0x1jNsESJkqFaurFK/KKVnT12GojVSFfS+8NGdip/seGeO8P2Hp6tWrZozZ87ixYsBQCQSfffddz179gSA/Pz8P//8s06dOgBAJTkAOHv2rFgsPnToEEEQAwcOrEeVO39fUVHRH3/8YW5uPm7cOAsLi6ysLJFItHTpUuqnY8eO/eKLL27fvt2uXbtK4hw0aNC6dev2798/duxY+uCyZctW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" }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xlim = quantile.(Ref(A), (0.001, 0.999))\n", "bin = round(Int, abs(-(xlim...))*50)\n", "stephist(res(xlim, A); norm=true, label=\"original NormalGamma\", bin)\n", "stephist!(res(xlim, B); norm=true, label=\"revised NormalGamma\", bin, ls=:dash)\n", "stephist!(res(xlim, C); norm=true, label=\"μ+TDist(2a)/√(λ*a*b)\", bin, ls=:dashdot)\n", "plot!(normal, xlim...; label=\"normal approx.\", c=:red, ls=:dot)\n", "plot!(; xlim)" ] }, { "cell_type": "code", "execution_count": null, "id": "b948530f-ab0b-44a9-b995-1e7f941cfccd", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.7.2", "language": "julia", "name": "julia-1.7" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.7.2" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }