{ "cells": [ { "cell_type": "code", "execution_count": 8, "id": "ef8b80db-5ac5-45e5-b1e9-492323f694b2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Julia Version 1.6.1\n", "Commit 6aaedecc44 (2021-04-23 05:59 UTC)\n", "Platform Info:\n", " OS: Windows (x86_64-w64-mingw32)\n", " CPU: Intel(R) Core(TM) i7-10750H CPU @ 2.60GHz\n", " WORD_SIZE: 64\n", " LIBM: libopenlibm\n", " LLVM: libLLVM-11.0.1 (ORCJIT, skylake)\n", "Environment:\n", " JULIA_DEPOT_PATH = D:\\.julia\n", " JULIA_NUM_THREADS = 12\n", " JULIA_PYTHONCALL_EXE = D:\\.julia\\conda\\3\\python.exe\n" ] } ], "source": [ "versioninfo()" ] }, { "cell_type": "code", "execution_count": 1, "id": "fec0834a-e713-45f2-b1c0-5f6076b3b989", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Distributions, StatsPlots\n", "\n", "function aic(model, Y)\n", " mle = fit_mle(model, Y)\n", " -2loglikelihood(mle, Y) + 2length(params(mle))\n", "end\n", "\n", "function simulate_model_selections(models, truedist, samplesize; niters = 10^4)\n", " selectedmodel = Vector{Int}(undef, niters)\n", " Threads.@threads for i in 1:niters\n", " Y = rand(truedist, samplesize)\n", " selectedmodel[i] = argmin(aic.(models, Ref(Y)))\n", " end\n", " nselected = zeros(Int, 3)\n", " for i in 1:niters\n", " nselected[selectedmodel[i]] += 1\n", " end\n", " [model => nselected[i]/niters for (i, model) in enumerate(models)]\n", "end\n", "\n", "models = (Gamma, Weibull, LogNormal)\n", "\n", "a, b = 0, 40\n", "plot(Gamma(5, 2), a, b; label=\"Gamma(5, 2)\")\n", "plot!(Weibull(2.4, 11.3), a, b; label=\"Weibull(2.4, 11.3)\", ls=:dash)\n", "plot!(LogNormal(2.2, 0.47), a, b; label=\"LogNormal(2.2, 0.47)\", ls=:dashdot)" ] }, { "cell_type": "code", "execution_count": 2, "id": "117a78fb-1321-4000-a283-69c991639f84", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Pair{UnionAll, Float64}}:\n", " Gamma => 0.6619\n", " Weibull => 0.1478\n", " LogNormal => 0.1903" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate_model_selections(models, Gamma(5, 2), 100; niters = 10^4)" ] }, { "cell_type": "code", "execution_count": 3, "id": "998d8466-e797-4930-9e9d-80230def50a7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Pair{UnionAll, Float64}}:\n", " Gamma => 0.1399\n", " Weibull => 0.8586\n", " LogNormal => 0.0015" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate_model_selections(models, Weibull(2.4, 11.3), 100; niters = 10^4)" ] }, { "cell_type": "code", "execution_count": 4, "id": "a8bcfedc-b3a1-4155-81df-17875fc027fa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3-element Vector{Pair{UnionAll, Float64}}:\n", " Gamma => 0.1847\n", " Weibull => 0.0028\n", " LogNormal => 0.8125" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate_model_selections(models, LogNormal(2.2, 0.47), 100; niters = 10^4)" ] }, { "cell_type": "code", "execution_count": null, "id": "e0df5c38-2a47-4b1a-a50b-78d3cf9c0f3b", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.6.1", "language": "julia", "name": "julia-1.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.6.1" } }, "nbformat": 4, "nbformat_minor": 5 }