Skip to content

Instantly share code, notes, and snippets.

@yiyuezhuo
Created February 14, 2020 04:33
Show Gist options
  • Save yiyuezhuo/0d192605d0cd37b5a9d9a7b3aee117bf to your computer and use it in GitHub Desktop.
Save yiyuezhuo/0d192605d0cd37b5a9d9a7b3aee117bf to your computer and use it in GitHub Desktop.
Some Julia Optim.jl MLE example
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Normal MLE"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"using Optim\n",
"using Statistics\n",
"using Distributions\n",
"using Plots\n",
"using LinearAlgebra"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data = randn(100) .* 0.5 .+ 1. ;"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: success\n",
"\n",
" * Candidate solution\n",
" Minimizer: [9.33e-01, 5.05e-01]\n",
" Minimum: 7.366251e+01\n",
"\n",
" * Found with\n",
" Algorithm: Fminbox with L-BFGS\n",
" Initial Point: [0.00e+00, 1.00e+00]\n",
"\n",
" * Convergence measures\n",
" |x - x'| = 5.43e-10 ≰ 0.0e+00\n",
" |x - x'|/|x'| = 5.12e-10 ≰ 0.0e+00\n",
" |f(x) - f(x')| = 2.84e-14 ≰ 0.0e+00\n",
" |f(x) - f(x')|/|f(x')| = 3.86e-16 ≰ 0.0e+00\n",
" |g(x)| = 2.10e-10 ≤ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 2 (vs limit Inf)\n",
" Iterations: 4\n",
" f(x) calls: 196\n",
" ∇f(x) calls: 196\n"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood = (μ, σ) -> logpdf.( Normal(μ, σ), data ) |> sum\n",
"f = (p) -> -likelihood(p[1], p[2])\n",
"res = optimize(f, [-Inf, 1e-6], [Inf, Inf], [0.0, 1.0], Fminbox(LBFGS()), autodiff = :forward)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9328596990037146"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean(data)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.5079926618388317"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"std(data)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"2-element Array{Float64,1}:\n",
" 0.9328596990037143\n",
" 0.5054463166722577"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Optim.minimizer(res)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MvNormal MLE using over-parameterization"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×100 Array{Float64,2}:\n",
" 0.624657 0.951313 1.04176 1.47361 … 2.76285 -0.320447 0.216333\n",
" 1.03725 1.16691 2.42946 0.387327 2.03342 0.470565 0.794415"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = rand(MvNormal([1.; 1.], [1. 0.5; 0.5 1.]), 100)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#7 (generic function with 1 method)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood = (μ, Σ) -> begin\n",
" dist = MvNormal(μ, Σ)\n",
" sum([logpdf(dist, data[:, i]) for i in 1:size(data, 2)])\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#11 (generic function with 1 method)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = (p) -> begin\n",
" μ = p[1:2]\n",
" f = reshape(p[3:6], 2, 2)\n",
" Σ = f' * f\n",
" -likelihood(μ, Σ)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: failure (objective increased between iterations) (line search failed)\n",
"\n",
" * Candidate solution\n",
" Minimizer: [9.42e-01, 8.06e-01, 8.68e-01, ...]\n",
" Minimum: 2.486111e+02\n",
"\n",
" * Found with\n",
" Algorithm: L-BFGS\n",
" Initial Point: [0.00e+00, 0.00e+00, 1.00e+00, ...]\n",
"\n",
" * Convergence measures\n",
" |x - x'| = 2.51e-09 ≰ 0.0e+00\n",
" |x - x'|/|x'| = 2.67e-09 ≰ 0.0e+00\n",
" |f(x) - f(x')| = 1.42e-13 ≰ 0.0e+00\n",
" |f(x) - f(x')|/|f(x')| = 5.72e-16 ≰ 0.0e+00\n",
" |g(x)| = 1.19e-08 ≰ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 0 (vs limit Inf)\n",
" Iterations: 14\n",
" f(x) calls: 47\n",
" ∇f(x) calls: 47\n"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x0 = [0., 0., 1., 0., 0., 1.]\n",
"res = optimize(f, x0, LBFGS(), autodiff=:forward)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×2 Array{Float64,2}:\n",
" 0.798341 0.39631 \n",
" 0.39631 0.816564"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_hat = Optim.minimizer(res)[1:2]\n",
"f = reshape(Optim.minimizer(res)[3:6], 2, 2)\n",
"Σ_hat = f' * f"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2-element Array{Float64,1}:\n",
" 0.9416516365632621\n",
" 0.8059733390223162"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_hat"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×1 Array{Float64,2}:\n",
" 0.9416516369020049\n",
" 0.8059733394231644"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean(data, dims=2)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"2×2 Array{Float64,2}:\n",
" 0.806405 0.400313\n",
" 0.400313 0.824812"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cov(data, dims=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MvNormal MLE using Cholesky parameterization"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"using Distributions.PDMats"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#13 (generic function with 1 method)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = (p) -> begin\n",
" μ = p[1:2]\n",
" Σ = PDMat(Cholesky([p[3] p[4]; 0 p[5]], 'U', 0))\n",
" dist = MvNormal(μ, Σ)\n",
" -sum([logpdf(dist, data[:, i]) for i in 1:size(data, 2)])\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: success\n",
"\n",
" * Candidate solution\n",
" Minimizer: [9.42e-01, 8.06e-01, 8.93e-01, ...]\n",
" Minimum: 2.486111e+02\n",
"\n",
" * Found with\n",
" Algorithm: Fminbox with L-BFGS\n",
" Initial Point: [0.00e+00, 0.00e+00, 1.00e+00, ...]\n",
"\n",
" * Convergence measures\n",
" |x - x'| = 1.11e-09 ≰ 0.0e+00\n",
" |x - x'|/|x'| = 6.26e-10 ≰ 0.0e+00\n",
" |f(x) - f(x')| = 5.68e-14 ≰ 0.0e+00\n",
" |f(x) - f(x')|/|f(x')| = 2.29e-16 ≰ 0.0e+00\n",
" |g(x)| = 3.69e-09 ≤ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 1 (vs limit Inf)\n",
" Iterations: 4\n",
" f(x) calls: 318\n",
" ∇f(x) calls: 318\n"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x0 = [0., 0., 1., 0., 1.]\n",
"lower = [-Inf, -Inf, 0, -Inf, 0]\n",
"upper = [Inf, Inf, Inf, Inf, Inf]\n",
"res = optimize(f, lower, upper, x0, Fminbox(LBFGS()), autodiff=:forward)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"PDMat{Float64,Array{Float64,2}}(2, [0.7983405442326638 0.39630991515272923; 0.39630991515272923 0.8165635604687043], Cholesky{Float64,Array{Float64,2}}([0.8934990454570524 0.4435482244415879; 0.0 0.7872918982584661], 'U', 0))"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p_fit = Optim.minimizer(res)\n",
"μ_fit = p_fit[1:2]\n",
"Σ_fit = PDMat(Cholesky([p_fit[3] p_fit[4]; 0 p_fit[5]], 'U', 0))"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2-element Array{Float64,1}:\n",
" 0.9416516369020044\n",
" 0.8059733394231686"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_fit"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×2 Array{Float64,2}:\n",
" 0.798341 0.39631 \n",
" 0.39631 0.816564"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Σ_fit.mat"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Mixture model MLE"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"num_arr = [50, 30, 20]\n",
"mu_arr = [-1, 0, 1]\n",
"sigma_arr = [0.2, 0.3, 0.4]\n",
"\n",
"data = zeros(sum(num_arr))\n",
"idx = 1\n",
"for (num, mu, sigma) in zip(num_arr, mu_arr, sigma_arr)\n",
" for i in 1:num\n",
" data[idx] = randn()*sigma+mu\n",
" idx += 1\n",
" end\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"theme(:dark)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip0400\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0400)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0401\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0400)\" d=\"\n",
"M140.517 1487.47 L2352.76 1487.47 L2352.76 47.2441 L140.517 47.2441 Z\n",
" \" fill=\"#30343b\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0402\">\n",
" <rect x=\"140\" y=\"47\" width=\"2213\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 323.722,1487.47 323.722,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 631.36,1487.47 631.36,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 938.998,1487.47 938.998,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1246.64,1487.47 1246.64,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1554.27,1487.47 1554.27,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1861.91,1487.47 1861.91,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2169.55,1487.47 2169.55,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,1089.16 2352.76,1089.16 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,731.604 2352.76,731.604 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 140.517,374.049 2352.76,374.049 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1487.47 140.517,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 323.722,1487.47 323.722,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 631.36,1487.47 631.36,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 938.998,1487.47 938.998,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1246.64,1487.47 1246.64,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1554.27,1487.47 1554.27,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1861.91,1487.47 1861.91,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2169.55,1487.47 2169.55,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1446.71 167.064,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,1089.16 167.064,1089.16 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,731.604 167.064,731.604 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 140.517,374.049 167.064,374.049 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 323.722, 1541.47)\" x=\"323.722\" y=\"1541.47\">-1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 631.36, 1541.47)\" x=\"631.36\" y=\"1541.47\">-1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 938.998, 1541.47)\" x=\"938.998\" y=\"1541.47\">-0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1246.64, 1541.47)\" x=\"1246.64\" y=\"1541.47\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1554.27, 1541.47)\" x=\"1554.27\" y=\"1541.47\">0.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1861.91, 1541.47)\" x=\"1861.91\" y=\"1541.47\">1.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2169.55, 1541.47)\" x=\"2169.55\" y=\"1541.47\">1.5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1464.21)\" x=\"116.517\" y=\"1464.21\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 1106.66)\" x=\"116.517\" y=\"1106.66\">5</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 749.104)\" x=\"116.517\" y=\"749.104\">10</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 116.517, 391.549)\" x=\"116.517\" y=\"391.549\">15</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M262.194 1375.2 L262.194 1446.71 L385.249 1446.71 L385.249 1375.2 L262.194 1375.2 L262.194 1375.2 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 262.194,1375.2 262.194,1446.71 385.249,1446.71 385.249,1375.2 262.194,1375.2 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M385.249 946.137 L385.249 1446.71 L508.305 1446.71 L508.305 946.137 L385.249 946.137 L385.249 946.137 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 385.249,946.137 385.249,1446.71 508.305,1446.71 508.305,946.137 385.249,946.137 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M508.305 517.071 L508.305 1446.71 L631.36 1446.71 L631.36 517.071 L508.305 517.071 L508.305 517.071 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 508.305,517.071 508.305,1446.71 631.36,1446.71 631.36,517.071 508.305,517.071 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M631.36 88.0053 L631.36 1446.71 L754.415 1446.71 L754.415 88.0053 L631.36 88.0053 L631.36 88.0053 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 631.36,88.0053 631.36,1446.71 754.415,1446.71 754.415,88.0053 631.36,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M754.415 803.115 L754.415 1446.71 L877.47 1446.71 L877.47 803.115 L754.415 803.115 L754.415 803.115 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 754.415,803.115 754.415,1446.71 877.47,1446.71 877.47,803.115 754.415,803.115 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M877.47 1232.18 L877.47 1446.71 L1000.53 1446.71 L1000.53 1232.18 L877.47 1232.18 L877.47 1232.18 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 877.47,1232.18 877.47,1446.71 1000.53,1446.71 1000.53,1232.18 877.47,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1000.53 1089.16 L1000.53 1446.71 L1123.58 1446.71 L1123.58 1089.16 L1000.53 1089.16 L1000.53 1089.16 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1000.53,1089.16 1000.53,1446.71 1123.58,1446.71 1123.58,1089.16 1000.53,1089.16 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1123.58 1017.65 L1123.58 1446.71 L1246.64 1446.71 L1246.64 1017.65 L1123.58 1017.65 L1123.58 1017.65 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1123.58,1017.65 1123.58,1446.71 1246.64,1446.71 1246.64,1017.65 1123.58,1017.65 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1246.64 660.093 L1246.64 1446.71 L1369.69 1446.71 L1369.69 660.093 L1246.64 660.093 L1246.64 660.093 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1246.64,660.093 1246.64,1446.71 1369.69,1446.71 1369.69,660.093 1246.64,660.093 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1369.69 1232.18 L1369.69 1446.71 L1492.75 1446.71 L1492.75 1232.18 L1369.69 1232.18 L1369.69 1232.18 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1369.69,1232.18 1369.69,1446.71 1492.75,1446.71 1492.75,1232.18 1369.69,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1492.75 1089.16 L1492.75 1446.71 L1615.8 1446.71 L1615.8 1089.16 L1492.75 1089.16 L1492.75 1089.16 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1492.75,1089.16 1492.75,1446.71 1615.8,1446.71 1615.8,1089.16 1492.75,1089.16 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1615.8 1160.67 L1615.8 1446.71 L1738.86 1446.71 L1738.86 1160.67 L1615.8 1160.67 L1615.8 1160.67 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1615.8,1160.67 1615.8,1446.71 1738.86,1446.71 1738.86,1160.67 1615.8,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1738.86 1232.18 L1738.86 1446.71 L1861.91 1446.71 L1861.91 1232.18 L1738.86 1232.18 L1738.86 1232.18 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1738.86,1232.18 1738.86,1446.71 1861.91,1446.71 1861.91,1232.18 1738.86,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1861.91 1160.67 L1861.91 1446.71 L1984.97 1446.71 L1984.97 1160.67 L1861.91 1160.67 L1861.91 1160.67 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1861.91,1160.67 1861.91,1446.71 1984.97,1446.71 1984.97,1160.67 1861.91,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M1984.97 1160.67 L1984.97 1446.71 L2108.02 1446.71 L2108.02 1160.67 L1984.97 1160.67 L1984.97 1160.67 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1984.97,1160.67 1984.97,1446.71 2108.02,1446.71 2108.02,1160.67 1984.97,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0402)\" d=\"\n",
"M2108.02 1232.18 L2108.02 1446.71 L2231.08 1446.71 L2231.08 1232.18 L2108.02 1232.18 L2108.02 1232.18 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0402)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2108.02,1232.18 2108.02,1446.71 2231.08,1446.71 2231.08,1232.18 2108.02,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0400)\" d=\"\n",
"M1989.93 251.724 L2280.76 251.724 L2280.76 130.764 L1989.93 130.764 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#ffffff; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1989.93,251.724 2280.76,251.724 2280.76,130.764 1989.93,130.764 1989.93,251.724 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0400)\" d=\"\n",
"M2013.93 215.436 L2157.93 215.436 L2157.93 167.052 L2013.93 167.052 L2013.93 215.436 Z\n",
" \" fill=\"#fe4365\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0400)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2013.93,215.436 2157.93,215.436 2157.93,167.052 2013.93,167.052 2013.93,215.436 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0400)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2181.93, 208.744)\" x=\"2181.93\" y=\"208.744\">y1</text>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"histogram(data, bins=20)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align}\n",
"P_\\theta(X) = \\int_Z P_\\theta(X,Z) = \\int_Z P_\\theta(X|Z)P(Z) \n",
"\\end{align}\n",
"$$\n",
"\n",
"$$\n",
"P(X|Z)P(Z)=P(X_1,\\dots,X_N|Z_1,\\dots,Z_N)P(Z_1,\\dots,Z_N)=(\\prod P(X_i|Z_i)) (\\prod P(Z_i))\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align}\n",
"P(X) = \\int_Z \\prod_i P(X_i|Z_i)P(Z_i) \n",
"&= \\sum_{Z_1} \\dots \\sum_{Z_N} \\prod_i^N P(X_i|Z_i)P(Z_i) \\\\\n",
"&= \\sum_{Z_1} \\dots \\sum_{Z_{N-1}} \\prod_i^{N-1} P(X_i|Z_i)P(Z_i) \\\\\n",
"&= (\\sum_{Z_N} P(X_N|Z_N)P(Z_N)) \\sum_{Z_1} \\dots \\sum_{Z_{N-1}} \\prod_i^{N-1} P(X_i|Z_i)P(Z_i) \\\\\n",
"&= \\dots \\\\\n",
"&= \\prod_{i} \\sum_{Z_i} P(X_i|Z_i)P(Z_i)\n",
"\\end{align}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
"\\begin{align}\n",
"\\log P(X) &= \\log \\prod_i \\sum_{Z_i} P(X_i|Z_i)P(Z_i) \\\\\n",
"&= \\sum_i \\log \\sum_{Z_i} \\exp \\log (P(X_i|Z_i)P(Z_i)) \\\\\n",
"&= \\sum_i \\mathrm{logsumexp}_{Z_i} \\log(P(X_i|Z_i)P(Z_i))\n",
"\\end{align}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"using StatsFuns"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.4076059644443806"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"logsumexp([1 2 3])"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.40760596444438"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[1 2 3] .|> exp |> sum |> log"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.40760596444438"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"log(sum(exp.([1 2 3])))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#17 (generic function with 1 method)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood = (μ_arr, σ_arr) -> begin\n",
" dist_arr = [Normal(μ, σ) for (μ, σ) in zip(μ_arr, σ_arr)]\n",
" num_classes = length(dist_arr)\n",
" log_prior = log(1. / num_classes)\n",
" lp = 0\n",
" for d in data\n",
" lp += logsumexp([logpdf(dist, d) + log_prior for dist in dist_arr])\n",
" end\n",
" lp\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-207.59091458221434"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood([1, 1, 1], [1, 1, 1])"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-140.63496716867343"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood([-1, 0, 1], [1, 1, 1])"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-103.40893932627914"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood(mu_arr, sigma_arr)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#23 (generic function with 1 method)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"encode = (p) -> (p[1:3], p[4:6])"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#25 (generic function with 1 method)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = (p) -> begin\n",
" μ_arr, σ_arr = encode(p)\n",
" -likelihood(μ_arr, σ_arr)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: success\n",
"\n",
" * Candidate solution\n",
" Minimizer: [-3.70e-01, -1.01e+00, 7.02e-01, ...]\n",
" Minimum: 1.004915e+02\n",
"\n",
" * Found with\n",
" Algorithm: Fminbox with L-BFGS\n",
" Initial Point: [1.14e-01, -3.57e-01, 7.81e-01, ...]\n",
"\n",
" * Convergence measures\n",
" |x - x'| = 8.30e-10 ≰ 0.0e+00\n",
" |x - x'|/|x'| = 5.57e-10 ≰ 0.0e+00\n",
" |f(x) - f(x')| = 4.26e-14 ≰ 0.0e+00\n",
" |f(x) - f(x')|/|f(x')| = 4.24e-16 ≰ 0.0e+00\n",
" |g(x)| = 6.52e-09 ≤ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 1 (vs limit Inf)\n",
" Iterations: 4\n",
" f(x) calls: 344\n",
" ∇f(x) calls: 344\n"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lower = [-Inf, -Inf, -Inf, 0, 0, 0]\n",
"upper = [Inf, Inf, Inf, Inf, Inf, Inf]\n",
"x0 = [randn(3); ones(3)]\n",
"res = optimize(f, lower, upper, x0, autodiff=:forward)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6-element Array{Float64,1}:\n",
" -0.37044298988147994\n",
" -1.01267871166701 \n",
" 0.7019056655903312 \n",
" 0.5083640800869492 \n",
" 0.18825829381585862\n",
" 0.5156193681707262 "
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Optim.minimizer(res)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([-0.37044298988147994, -1.01267871166701, 0.7019056655903312], [0.5083640800869492, 0.18825829381585862, 0.5156193681707262])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_arr_fit, σ_arr_fit = encode(Optim.minimizer(res))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-3.0:0.06060606060606061:3.0"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = range(-3, 3, length=100)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Array{Float64,1},1}:\n",
" [3.8472993133532097e-22, 7.6078125022908e-21, 1.372408845984938e-19, 2.258536424078426e-18, 3.390709409718904e-17, 4.643804481873946e-16, 5.801992505420009e-15, 6.613026802451713e-14, 6.876117424567452e-13, 6.522381065864739e-12 … 3.2706106311613235e-65, 1.665413479987071e-67, 7.736333609161463e-70, 3.2784471370139403e-72, 1.2674214813178594e-74, 4.469859005606432e-77, 1.4380913270912092e-79, 4.220840998109037e-82, 1.130137796458194e-84, 2.7604741810798818e-87]\n",
" [2.56486620890214e-22, 1.894807335009776e-21, 1.3438193856020688e-20, 9.149392306566254e-20, 5.980246707952049e-19, 3.752506515078028e-18, 2.260472939812651e-17, 1.3072320081271332e-16, 7.257407967851866e-16, 3.867995003613286e-15 … 3.867995003613286e-15, 7.257407967851866e-16, 1.3072320081271332e-16, 2.260472939812651e-17, 3.752506515078028e-18, 5.980246707952049e-19, 9.149392306566254e-20, 1.3438193856020688e-20, 1.894807335009776e-21, 2.56486620890214e-22] \n",
" [1.9236496566766049e-22, 8.652924351444221e-22, 3.8039062511454e-21, 1.634280781993768e-20, 6.86204422992469e-20, 2.815855229739687e-19, 1.129268212039237e-18, 4.426024914453011e-18, 1.695354704859488e-17, 6.346543600414966e-17 … 0.0013411631096047344, 0.0007642155636951401, 0.0004255789391686351, 0.00023161908830753624, 0.000123196547883328, 6.404020298784535e-5, 3.25339527571786e-5, 1.6152915981621987e-5, 7.83781497728003e-6, 3.716798786835744e-6] "
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_arr = [pdf.(Normal(μ,σ), x) for (μ, σ) in zip(mu_arr, sigma_arr)]"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1-element Array{Array{Float64,1},1}:\n",
" [2.778605059643985e-22, 3.4559707574816664e-21, 5.149432823521996e-20, 7.887910516546753e-19, 1.1524579736761165e-17, 1.5613818007514888e-16, 1.9419088343433915e-15, 2.2088472416748095e-14, 2.2945147893352633e-13, 2.1754375087681186e-12 … 0.00044705436986953415, 0.0002547385212319553, 0.0001418596463895886, 7.720636276918628e-5, 4.106551596111058e-5, 2.1346734329281984e-5, 1.0844650919059565e-5, 5.384305327207333e-6, 2.612604992426677e-6, 1.238932928945248e-6]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"true_pdf = sum(pdf_arr, dims=1) ./ 3"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1-element Array{Array{Float64,1},1}:\n",
" [4.052291244805683e-7, 7.454676378589778e-7, 1.3520242306357958e-6, 2.417506901642637e-6, 4.261657817475742e-6, 7.406569170993491e-6, 1.2690633604763932e-5, 2.1437657135663452e-5, 3.5702549198067325e-5, 5.862044982039496e-5 … 0.0007990979070055408, 0.0005322056004138422, 0.00034959103514147627, 0.00022648643261263652, 0.0001447187786272269, 9.120280075658358e-5, 5.668809912152609e-5, 3.475168960847889e-5, 2.101165071373719e-5, 1.2529812347666799e-5]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pdf_arr_fit = [pdf.(Normal(μ,σ), x) for (μ, σ) in zip(μ_arr_fit, σ_arr_fit)]\n",
"true_pdf_fit = sum(pdf_arr_fit, dims=1) ./ 3"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"using KernelDensity"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"UnivariateKDE{StepRangeLen{Float64,Base.TwicePrecision{Float64},Base.TwicePrecision{Float64}}}(-2.5878209898955893:0.002601480157877084:2.737408893278802, [2.322758670636471e-5, 2.362077681969388e-5, 2.4043713184207505e-5, 2.4496864632295168e-5, 2.4980729018020398e-5, 2.5495833607697138e-5, 2.6042735488895907e-5, 2.662202199815722e-5, 2.723431116710695e-5, 2.788025218711243e-5 … 2.0848643890587076e-5, 2.096401617730087e-5, 2.110596934651321e-5, 2.1274699601883315e-5, 2.147042923128853e-5, 2.169340682347913e-5, 2.194390750120609e-5, 2.222223317165789e-5, 2.2528712793300903e-5, 2.286370266073659e-5])"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kde_data = kde(data)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip0800\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0800)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0801\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip0800)\" d=\"\n",
"M153.898 1487.47 L2352.76 1487.47 L2352.76 47.2441 L153.898 47.2441 Z\n",
" \" fill=\"#30343b\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip0802\">\n",
" <rect x=\"153\" y=\"47\" width=\"2200\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 561.862,1487.47 561.862,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 907.595,1487.47 907.595,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1253.33,1487.47 1253.33,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1599.06,1487.47 1599.06,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1944.79,1487.47 1944.79,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1446.71 2352.76,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,1160.67 2352.76,1160.67 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,874.626 2352.76,874.626 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,588.582 2352.76,588.582 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 153.898,302.538 2352.76,302.538 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1487.47 153.898,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1487.47 216.13,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 561.862,1487.47 561.862,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 907.595,1487.47 907.595,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1253.33,1487.47 1253.33,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1599.06,1487.47 1599.06,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1944.79,1487.47 1944.79,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2290.52,1487.47 2290.52,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1446.71 180.284,1446.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,1160.67 180.284,1160.67 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,874.626 180.284,874.626 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,588.582 180.284,588.582 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 153.898,302.538 180.284,302.538 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 216.13, 1541.47)\" x=\"216.13\" y=\"1541.47\">-3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 561.862, 1541.47)\" x=\"561.862\" y=\"1541.47\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 907.595, 1541.47)\" x=\"907.595\" y=\"1541.47\">-1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1253.33, 1541.47)\" x=\"1253.33\" y=\"1541.47\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1599.06, 1541.47)\" x=\"1599.06\" y=\"1541.47\">1</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1944.79, 1541.47)\" x=\"1944.79\" y=\"1541.47\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2290.52, 1541.47)\" x=\"2290.52\" y=\"1541.47\">3</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1464.21)\" x=\"129.898\" y=\"1464.21\">0.0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 1178.17)\" x=\"129.898\" y=\"1178.17\">0.2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 892.126)\" x=\"129.898\" y=\"892.126\">0.4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 606.082)\" x=\"129.898\" y=\"606.082\">0.6</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 129.898, 320.038)\" x=\"129.898\" y=\"320.038\">0.8</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#fe4365; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1446.71 237.083,1446.71 258.037,1446.71 278.99,1446.71 299.944,1446.71 320.897,1446.71 341.851,1446.71 362.804,1446.71 383.758,1446.71 404.711,1446.71 \n",
" 425.665,1446.71 446.618,1446.71 467.572,1446.71 488.525,1446.71 509.478,1446.71 530.432,1446.71 551.385,1446.71 572.339,1446.71 593.292,1446.68 614.246,1446.6 \n",
" 635.199,1446.31 656.153,1445.43 677.106,1443.04 698.06,1437.07 719.013,1423.64 739.967,1396.36 760.92,1346.45 781.874,1264.59 802.827,1144.9 823.781,990.43 \n",
" 844.734,817.37 865.688,654.716 886.641,537.205 907.595,493.303 928.548,533.718 949.502,646.611 970.455,802.246 991.408,964.377 1012.36,1102.23 1033.32,1197.66 \n",
" 1054.27,1245.74 1075.22,1250.86 1096.18,1221.83 1117.13,1168.28 1138.08,1099.23 1159.04,1023.04 1179.99,947.736 1200.94,880.993 1221.9,829.626 1242.85,798.723 \n",
" 1263.8,790.791 1284.76,805.257 1305.71,838.527 1326.66,884.625 1347.62,936.28 1368.57,986.182 1389.52,1028.14 1410.48,1057.89 1431.43,1073.5 1452.38,1075.26 \n",
" 1473.34,1065.34 1494.29,1047.19 1515.25,1024.87 1536.2,1002.52 1557.15,983.887 1578.11,971.952 1599.06,968.784 1620.01,975.436 1640.97,991.984 1661.92,1017.63 \n",
" 1682.87,1050.89 1703.83,1089.8 1724.78,1132.16 1745.73,1175.77 1766.69,1218.63 1787.64,1259.06 1808.59,1295.83 1829.55,1328.15 1850.5,1355.66 1871.45,1378.38 \n",
" 1892.41,1396.59 1913.36,1410.78 1934.31,1421.54 1955.27,1429.48 1976.22,1435.18 1997.18,1439.17 2018.13,1441.89 2039.08,1443.7 2060.04,1444.88 2080.99,1445.62 \n",
" 2101.94,1446.07 2122.9,1446.35 2143.85,1446.51 2164.8,1446.6 2185.76,1446.65 2206.71,1446.68 2227.66,1446.7 2248.62,1446.71 2269.57,1446.71 2290.52,1446.71 \n",
" \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M700.155 1375.2 L700.155 1446.71 L769.302 1446.71 L769.302 1375.2 L700.155 1375.2 L700.155 1375.2 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 700.155,1375.2 700.155,1446.71 769.302,1446.71 769.302,1375.2 700.155,1375.2 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M769.302 946.137 L769.302 1446.71 L838.448 1446.71 L838.448 946.137 L769.302 946.137 L769.302 946.137 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 769.302,946.137 769.302,1446.71 838.448,1446.71 838.448,946.137 769.302,946.137 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M838.448 517.071 L838.448 1446.71 L907.595 1446.71 L907.595 517.071 L838.448 517.071 L838.448 517.071 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 838.448,517.071 838.448,1446.71 907.595,1446.71 907.595,517.071 838.448,517.071 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M907.595 88.0053 L907.595 1446.71 L976.741 1446.71 L976.741 88.0053 L907.595 88.0053 L907.595 88.0053 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 907.595,88.0053 907.595,1446.71 976.741,1446.71 976.741,88.0053 907.595,88.0053 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M976.741 803.115 L976.741 1446.71 L1045.89 1446.71 L1045.89 803.115 L976.741 803.115 L976.741 803.115 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 976.741,803.115 976.741,1446.71 1045.89,1446.71 1045.89,803.115 976.741,803.115 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1045.89 1232.18 L1045.89 1446.71 L1115.03 1446.71 L1115.03 1232.18 L1045.89 1232.18 L1045.89 1232.18 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1045.89,1232.18 1045.89,1446.71 1115.03,1446.71 1115.03,1232.18 1045.89,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1115.03 1089.16 L1115.03 1446.71 L1184.18 1446.71 L1184.18 1089.16 L1115.03 1089.16 L1115.03 1089.16 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1115.03,1089.16 1115.03,1446.71 1184.18,1446.71 1184.18,1089.16 1115.03,1089.16 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1184.18 1017.65 L1184.18 1446.71 L1253.33 1446.71 L1253.33 1017.65 L1184.18 1017.65 L1184.18 1017.65 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1184.18,1017.65 1184.18,1446.71 1253.33,1446.71 1253.33,1017.65 1184.18,1017.65 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1253.33 660.093 L1253.33 1446.71 L1322.47 1446.71 L1322.47 660.093 L1253.33 660.093 L1253.33 660.093 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1253.33,660.093 1253.33,1446.71 1322.47,1446.71 1322.47,660.093 1253.33,660.093 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1322.47 1232.18 L1322.47 1446.71 L1391.62 1446.71 L1391.62 1232.18 L1322.47 1232.18 L1322.47 1232.18 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1322.47,1232.18 1322.47,1446.71 1391.62,1446.71 1391.62,1232.18 1322.47,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1391.62 1089.16 L1391.62 1446.71 L1460.77 1446.71 L1460.77 1089.16 L1391.62 1089.16 L1391.62 1089.16 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1391.62,1089.16 1391.62,1446.71 1460.77,1446.71 1460.77,1089.16 1391.62,1089.16 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1460.77 1160.67 L1460.77 1446.71 L1529.91 1446.71 L1529.91 1160.67 L1460.77 1160.67 L1460.77 1160.67 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1460.77,1160.67 1460.77,1446.71 1529.91,1446.71 1529.91,1160.67 1460.77,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1529.91 1232.18 L1529.91 1446.71 L1599.06 1446.71 L1599.06 1232.18 L1529.91 1232.18 L1529.91 1232.18 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1529.91,1232.18 1529.91,1446.71 1599.06,1446.71 1599.06,1232.18 1529.91,1232.18 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1599.06 1160.67 L1599.06 1446.71 L1668.21 1446.71 L1668.21 1160.67 L1599.06 1160.67 L1599.06 1160.67 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1599.06,1160.67 1599.06,1446.71 1668.21,1446.71 1668.21,1160.67 1599.06,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1668.21 1160.67 L1668.21 1446.71 L1737.35 1446.71 L1737.35 1160.67 L1668.21 1160.67 L1668.21 1160.67 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1668.21,1160.67 1668.21,1446.71 1737.35,1446.71 1737.35,1160.67 1668.21,1160.67 \n",
" \"/>\n",
"<path clip-path=\"url(#clip0802)\" d=\"\n",
"M1737.35 1232.18 L1737.35 1446.71 L1806.5 1446.71 L1806.5 1232.18 L1737.35 1232.18 L1737.35 1232.18 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:0.2; fill:none\" points=\"\n",
" 1737.35,1232.18 1737.35,1446.71 1806.5,1446.71 1806.5,1232.18 1737.35,1232.18 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#3f9778; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1446.71 237.083,1446.71 258.037,1446.71 278.99,1446.71 299.944,1446.71 320.897,1446.7 341.851,1446.7 362.804,1446.68 383.758,1446.66 404.711,1446.63 \n",
" 425.665,1446.58 446.618,1446.5 467.572,1446.37 488.525,1446.18 509.478,1445.91 530.432,1445.49 551.385,1444.9 572.339,1444.06 593.292,1442.87 614.246,1441.2 \n",
" 635.199,1438.83 656.153,1435.34 677.106,1429.79 698.06,1420.16 719.013,1402.39 739.967,1369.32 760.92,1310.39 781.874,1213.37 802.827,1069.44 823.781,880.709 \n",
" 844.734,666.798 865.688,464.693 886.641,318.724 907.595,263.366 928.548,307.839 949.502,431.915 970.455,595.623 991.408,756.668 1012.36,885.423 1033.32,970.701 \n",
" 1054.27,1016.41 1075.22,1033.94 1096.18,1035.38 1117.13,1029.88 1138.08,1022.93 1159.04,1017.19 1179.99,1013.53 1200.94,1011.94 1221.9,1011.97 1242.85,1013.04 \n",
" 1263.8,1014.58 1284.76,1016.08 1305.71,1017.2 1326.66,1017.76 1347.62,1017.8 1368.57,1017.52 1389.52,1017.31 1410.48,1017.68 1431.43,1019.23 1452.38,1022.54 \n",
" 1473.34,1028.18 1494.29,1036.6 1515.25,1048.09 1536.2,1062.8 1557.15,1080.66 1578.11,1101.44 1599.06,1124.74 1620.01,1150.01 1640.97,1176.65 1661.92,1203.98 \n",
" 1682.87,1231.34 1703.83,1258.1 1724.78,1283.71 1745.73,1307.72 1766.69,1329.77 1787.64,1349.65 1808.59,1367.24 1829.55,1382.52 1850.5,1395.57 1871.45,1406.52 \n",
" 1892.41,1415.56 1913.36,1422.9 1934.31,1428.75 1955.27,1433.36 1976.22,1436.91 1997.18,1439.62 2018.13,1441.65 2039.08,1443.15 2060.04,1444.24 2080.99,1445.02 \n",
" 2101.94,1445.57 2122.9,1445.95 2143.85,1446.21 2164.8,1446.39 2185.76,1446.51 2206.71,1446.58 2227.66,1446.63 2248.62,1446.66 2269.57,1446.68 2290.52,1446.7 \n",
" \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0802)\" style=\"stroke:#005d7f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 216.13,1446.71 237.083,1446.71 258.037,1446.71 278.99,1446.71 299.944,1446.71 320.897,1446.71 341.851,1446.71 362.804,1446.68 383.758,1446.65 404.711,1446.57 \n",
" 425.665,1446.41 446.618,1446.1 467.572,1445.52 488.525,1444.48 509.478,1442.65 530.432,1439.61 551.385,1434.74 572.339,1427.2 593.292,1416.01 614.246,1399.97 \n",
" 635.199,1377.85 656.153,1348.42 677.106,1310.66 698.06,1263.9 719.013,1208.07 739.967,1143.78 760.92,1072.49 781.874,996.552 802.827,919.128 823.781,844.041 \n",
" 844.734,775.489 865.688,717.648 886.641,674.213 907.595,647.924 928.548,640.167 949.502,650.722 970.455,677.72 991.408,717.847 1012.36,766.747 1033.32,819.583 \n",
" 1054.27,871.623 1075.22,918.786 1096.18,958.039 1117.13,987.623 1138.08,1007.1 1159.04,1017.21 1179.99,1019.7 1200.94,1016.93 1221.9,1011.55 1242.85,1006.17 \n",
" 1263.8,1002.98 1284.76,1003.53 1305.71,1008.62 1326.66,1018.23 1347.62,1031.69 1368.57,1047.87 1389.52,1065.44 1410.48,1083.08 1431.43,1099.72 1452.38,1114.58 \n",
" 1473.34,1127.27 1494.29,1137.71 1515.25,1146.1 1536.2,1152.85 1557.15,1158.53 1578.11,1163.79 1599.06,1169.37 1620.01,1175.97 1640.97,1184.3 1661.92,1194.92 \n",
" 1682.87,1208.2 1703.83,1224.27 1724.78,1242.98 1745.73,1263.88 1766.69,1286.28 1787.64,1309.31 1808.59,1332.05 1829.55,1353.61 1850.5,1373.25 1871.45,1390.45 \n",
" 1892.41,1404.94 1913.36,1416.67 1934.31,1425.8 1955.27,1432.64 1976.22,1437.56 1997.18,1440.96 2018.13,1443.23 2039.08,1444.68 2060.04,1445.56 2080.99,1446.09 \n",
" 2101.94,1446.39 2122.9,1446.55 2143.85,1446.63 2164.8,1446.67 2185.76,1446.68 2206.71,1446.71 2227.66,1446.71 2248.62,1446.71 2269.57,1446.71 2290.52,1446.71 \n",
" \n",
" \"/>\n",
"<path clip-path=\"url(#clip0800)\" d=\"\n",
"M1941.79 433.164 L2280.76 433.164 L2280.76 130.764 L1941.79 130.764 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#ffffff; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1941.79,433.164 2280.76,433.164 2280.76,130.764 1941.79,130.764 1941.79,433.164 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#fe4365; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1965.79,191.244 2109.79,191.244 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2133.79, 208.744)\" x=\"2133.79\" y=\"208.744\">true</text>\n",
"</g>\n",
"<path clip-path=\"url(#clip0800)\" d=\"\n",
"M1965.79 275.916 L2109.79 275.916 L2109.79 227.532 L1965.79 227.532 L1965.79 275.916 Z\n",
" \" fill=\"#eca25c\" fill-rule=\"evenodd\" fill-opacity=\"0.2\"/>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1965.79,275.916 2109.79,275.916 2109.79,227.532 1965.79,227.532 1965.79,275.916 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2133.79, 269.224)\" x=\"2133.79\" y=\"269.224\">hist</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#3f9778; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1965.79,312.204 2109.79,312.204 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2133.79, 329.704)\" x=\"2133.79\" y=\"329.704\">MLE</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip0800)\" style=\"stroke:#005d7f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1965.79,372.684 2109.79,372.684 \n",
" \"/>\n",
"<g clip-path=\"url(#clip0800)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2133.79, 390.184)\" x=\"2133.79\" y=\"390.184\">KDE</text>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot()\n",
"plot!(x, true_pdf, label=\"true\")\n",
"histogram!(data, bins=20, alpha=0.2, normalize=true, label=\"hist\")\n",
"plot!(x, true_pdf_fit, label=\"MLE\")\n",
"plot!(x, pdf(kde_data, x), label=\"KDE\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Mixture multiple dimension model MLE"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Int64,1}:\n",
" 50\n",
" 30\n",
" 20"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_arr = [[2.; 2], [-2; -2], [2; -2]]\n",
"Σ_arr = [[1. 0.5; 0.5 1.], [1. 0; 0 1], [1 -0.5; -0.5 1]]\n",
"num_arr = [50, 30, 20]"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2×100 Array{Float64,2}:\n",
" 2.15057 2.64107 2.26895 3.74687 … 0.5344 2.18645 1.53061\n",
" 1.132 0.956469 2.0206 2.56987 -1.40667 -2.18465 -1.174 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mat_arr = Matrix[]\n",
"for (μ, Σ, num) in zip(μ_arr, Σ_arr, num_arr)\n",
" #println(μ, Σ, num)\n",
" mat = rand(MvNormal(μ, Σ), num) # 2 x num\n",
" push!(mat_arr, mat)\n",
"end\n",
"data = hcat(mat_arr...)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip1200\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1200)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1201\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1200)\" d=\"\n",
"M141.865 1487.47 L2352.76 1487.47 L2352.76 47.2441 L141.865 47.2441 Z\n",
" \" fill=\"#30343b\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1202\">\n",
" <rect x=\"141\" y=\"47\" width=\"2212\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 646.245,1487.47 646.245,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1177.15,1487.47 1177.15,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1708.05,1487.47 1708.05,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 2238.96,1487.47 2238.96,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,1482.44 2352.76,1482.44 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,1152.73 2352.76,1152.73 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,823.021 2352.76,823.021 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,493.31 2352.76,493.31 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1202)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,163.599 2352.76,163.599 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1487.47 2352.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1487.47 141.865,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 646.245,1487.47 646.245,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1177.15,1487.47 1177.15,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1708.05,1487.47 1708.05,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2238.96,1487.47 2238.96,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1482.44 168.395,1482.44 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1152.73 168.395,1152.73 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,823.021 168.395,823.021 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,493.31 168.395,493.31 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,163.599 168.395,163.599 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 646.245, 1541.47)\" x=\"646.245\" y=\"1541.47\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1177.15, 1541.47)\" x=\"1177.15\" y=\"1541.47\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1708.05, 1541.47)\" x=\"1708.05\" y=\"1541.47\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2238.96, 1541.47)\" x=\"2238.96\" y=\"1541.47\">4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 1499.94)\" x=\"117.865\" y=\"1499.94\">-4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 1170.23)\" x=\"117.865\" y=\"1170.23\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 840.521)\" x=\"117.865\" y=\"840.521\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 510.81)\" x=\"117.865\" y=\"510.81\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 181.099)\" x=\"117.865\" y=\"181.099\">4</text>\n",
"</g>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1748.02\" cy=\"636.405\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1748.02\" cy=\"636.405\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1878.23\" cy=\"665.342\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1878.23\" cy=\"665.342\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1779.45\" cy=\"489.914\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1779.45\" cy=\"489.914\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2171.76\" cy=\"399.364\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2171.76\" cy=\"399.364\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1415.03\" cy=\"525.751\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1415.03\" cy=\"525.751\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1531.65\" cy=\"364.396\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1531.65\" cy=\"364.396\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1773.77\" cy=\"422.593\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1773.77\" cy=\"422.593\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2026.53\" cy=\"141.287\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2026.53\" cy=\"141.287\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2290.18\" cy=\"88.0053\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2290.18\" cy=\"88.0053\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1747.69\" cy=\"477.245\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1747.69\" cy=\"477.245\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1038.68\" cy=\"565.103\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1038.68\" cy=\"565.103\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1694.77\" cy=\"689.214\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1694.77\" cy=\"689.214\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1708.64\" cy=\"439.716\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1708.64\" cy=\"439.716\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1686.05\" cy=\"599.039\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1686.05\" cy=\"599.039\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1945.81\" cy=\"358.665\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1945.81\" cy=\"358.665\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1201.09\" cy=\"635.199\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1201.09\" cy=\"635.199\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1419.4\" cy=\"612.635\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1419.4\" cy=\"612.635\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1919.81\" cy=\"346.837\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1919.81\" cy=\"346.837\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1812.24\" cy=\"310.312\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1812.24\" cy=\"310.312\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1830.34\" cy=\"451.244\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1830.34\" cy=\"451.244\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2028.12\" cy=\"411.037\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2028.12\" cy=\"411.037\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1713.91\" cy=\"559.171\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1713.91\" cy=\"559.171\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1540.39\" cy=\"735.084\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1540.39\" cy=\"735.084\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1580.52\" cy=\"539.232\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1580.52\" cy=\"539.232\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1135.7\" cy=\"448.909\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1135.7\" cy=\"448.909\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2032.5\" cy=\"507.626\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2032.5\" cy=\"507.626\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1835.03\" cy=\"478.045\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1835.03\" cy=\"478.045\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1804.95\" cy=\"395.024\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1804.95\" cy=\"395.024\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1491.18\" cy=\"810.076\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1491.18\" cy=\"810.076\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1950.9\" cy=\"413.906\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1950.9\" cy=\"413.906\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1729.86\" cy=\"448.152\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1729.86\" cy=\"448.152\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1440.17\" cy=\"632.497\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1440.17\" cy=\"632.497\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2145.47\" cy=\"98.8216\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2145.47\" cy=\"98.8216\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1761.94\" cy=\"484.609\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1761.94\" cy=\"484.609\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1801.64\" cy=\"559.263\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1801.64\" cy=\"559.263\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1998.15\" cy=\"427.101\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1998.15\" cy=\"427.101\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1718.72\" cy=\"546.066\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1718.72\" cy=\"546.066\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1927.16\" cy=\"395.05\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1927.16\" cy=\"395.05\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1596.12\" cy=\"377.854\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1596.12\" cy=\"377.854\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1819.91\" cy=\"774.312\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1819.91\" cy=\"774.312\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1738.61\" cy=\"737.739\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1738.61\" cy=\"737.739\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1470.02\" cy=\"549.497\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1470.02\" cy=\"549.497\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1613.61\" cy=\"472.891\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1613.61\" cy=\"472.891\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1373.85\" cy=\"541.568\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1373.85\" cy=\"541.568\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1305.1\" cy=\"585.49\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1305.1\" cy=\"585.49\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1742.14\" cy=\"212.326\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1742.14\" cy=\"212.326\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2225.43\" cy=\"458.719\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2225.43\" cy=\"458.719\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1498.68\" cy=\"313.313\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1498.68\" cy=\"313.313\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1913.57\" cy=\"652.967\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1913.57\" cy=\"652.967\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1601.81\" cy=\"351.198\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1601.81\" cy=\"351.198\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"631.021\" cy=\"1414.79\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"631.021\" cy=\"1414.79\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"752.153\" cy=\"1264.88\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"752.153\" cy=\"1264.88\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"375.201\" cy=\"1112.99\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"375.201\" cy=\"1112.99\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"467.199\" cy=\"930.934\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"467.199\" cy=\"930.934\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"286.681\" cy=\"1162.67\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"286.681\" cy=\"1162.67\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"374.451\" cy=\"982.626\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"374.451\" cy=\"982.626\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"673.866\" cy=\"892.236\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"673.866\" cy=\"892.236\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1013.27\" cy=\"1284.27\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1013.27\" cy=\"1284.27\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"646.808\" cy=\"1071.83\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"646.808\" cy=\"1071.83\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"890.289\" cy=\"1198.2\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"890.289\" cy=\"1198.2\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"637.817\" cy=\"1348.59\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"637.817\" cy=\"1348.59\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"847.864\" cy=\"991.128\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"847.864\" cy=\"991.128\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"699.717\" cy=\"1008.66\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"699.717\" cy=\"1008.66\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"204.437\" cy=\"1013.72\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"204.437\" cy=\"1013.72\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"664.083\" cy=\"1064.07\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"664.083\" cy=\"1064.07\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"898.971\" cy=\"1272.17\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"898.971\" cy=\"1272.17\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"544.856\" cy=\"1156.37\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"544.856\" cy=\"1156.37\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"796.507\" cy=\"1157.52\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"796.507\" cy=\"1157.52\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"856.995\" cy=\"1211.51\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"856.995\" cy=\"1211.51\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"386.74\" cy=\"1137.49\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"386.74\" cy=\"1137.49\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"997.686\" cy=\"1209.39\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"997.686\" cy=\"1209.39\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1333.72\" cy=\"1140.14\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1333.72\" cy=\"1140.14\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"554.223\" cy=\"1128.93\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"554.223\" cy=\"1128.93\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"250.372\" cy=\"890.975\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"250.372\" cy=\"890.975\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"691.029\" cy=\"1232.82\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"691.029\" cy=\"1232.82\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1097.01\" cy=\"892.988\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1097.01\" cy=\"892.988\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"966.682\" cy=\"1134.87\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"966.682\" cy=\"1134.87\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"460.33\" cy=\"1007.47\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"460.33\" cy=\"1007.47\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"272.391\" cy=\"1225.76\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"272.391\" cy=\"1225.76\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"793.799\" cy=\"1192.41\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"793.799\" cy=\"1192.41\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1901.92\" cy=\"1334.92\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1901.92\" cy=\"1334.92\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1891.52\" cy=\"1242.87\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1891.52\" cy=\"1242.87\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1836.15\" cy=\"1185.16\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1836.15\" cy=\"1185.16\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1690.96\" cy=\"1446.71\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1690.96\" cy=\"1446.71\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1644.05\" cy=\"1113.42\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1644.05\" cy=\"1113.42\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1800.94\" cy=\"1254.79\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1800.94\" cy=\"1254.79\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1903.17\" cy=\"1119.12\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1903.17\" cy=\"1119.12\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1620.31\" cy=\"1222.36\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1620.31\" cy=\"1222.36\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1775.64\" cy=\"1300.29\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1775.64\" cy=\"1300.29\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1978.03\" cy=\"1090.8\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1978.03\" cy=\"1090.8\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2028.09\" cy=\"1333.53\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2028.09\" cy=\"1333.53\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2176.57\" cy=\"1133.89\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2176.57\" cy=\"1133.89\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1252.37\" cy=\"770.904\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1252.37\" cy=\"770.904\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1513.43\" cy=\"1115.04\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1513.43\" cy=\"1115.04\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1586.14\" cy=\"1403.38\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1586.14\" cy=\"1403.38\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1846.59\" cy=\"1283.04\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1846.59\" cy=\"1283.04\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1790.43\" cy=\"1141.7\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1790.43\" cy=\"1141.7\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1319.01\" cy=\"1054.92\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1319.01\" cy=\"1054.92\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1757.55\" cy=\"1183.17\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1757.55\" cy=\"1183.17\" r=\"14\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"1583.45\" cy=\"1016.56\" r=\"18\"/>\n",
"<circle clip-path=\"url(#clip1202)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"1583.45\" cy=\"1016.56\" r=\"14\"/>\n",
"<path clip-path=\"url(#clip1200)\" d=\"\n",
"M1989.93 251.724 L2280.76 251.724 L2280.76 130.764 L1989.93 130.764 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip1200)\" style=\"stroke:#ffffff; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1989.93,251.724 2280.76,251.724 2280.76,130.764 1989.93,130.764 1989.93,251.724 \n",
" \"/>\n",
"<circle clip-path=\"url(#clip1200)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:1\" cx=\"2097.93\" cy=\"191.244\" r=\"25\"/>\n",
"<circle clip-path=\"url(#clip1200)\" style=\"fill:#fe4365; stroke:none; fill-opacity:1\" cx=\"2097.93\" cy=\"191.244\" r=\"21\"/>\n",
"<g clip-path=\"url(#clip1200)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2181.93, 208.744)\" x=\"2181.93\" y=\"208.744\">y1</text>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"scatter(data[1,:], data[2,:])"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#31 (generic function with 1 method)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"likelihood = (μ_arr, σ_arr) -> begin\n",
" dist_arr = [MvNormal(μ, σ) for (μ, σ) in zip(μ_arr, σ_arr)]\n",
" num_classes = length(dist_arr)\n",
" num_samples = size(data, 2)\n",
" log_prior = log(1. / num_classes)\n",
" lp = 0\n",
" for d in 1:num_samples\n",
" lp += logsumexp([logpdf(dist, data[:,d]) + log_prior for dist in dist_arr])\n",
" end\n",
" lp\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#37 (generic function with 1 method)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"encode = (p) -> begin\n",
" μ_arr = Vector[]\n",
" Σ_arr = Matrix[]\n",
" for i in 1:3\n",
" push!(μ_arr, p[(2*i-1):(2*i)])\n",
" f = reshape(p[6+4*(i-1)+1:6+4*i], 2, 2)\n",
" push!(Σ_arr, f' * f)\n",
" end\n",
" μ_arr, Σ_arr\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"#39 (generic function with 1 method)"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f = (p) -> begin\n",
" μ_arr, Σ_arr = encode(p)\n",
" -likelihood(μ_arr, Σ_arr)\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"18-element Array{Float64,1}:\n",
" 0.3319091667148046\n",
" -1.6433095219624725\n",
" -0.7458544889135744\n",
" -0.7459243343257457\n",
" -0.6550476182144508\n",
" 1.8289442798916673\n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 \n",
" 1.0 \n",
" 0.0 \n",
" 0.0 \n",
" 1.0 "
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x0 = [randn(6); [1;0;0;1.]; [1;0;0;1.]; [1;0;0;1.]]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"615.345389425848"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f(x0)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: failure (objective increased between iterations) (line search failed)\n",
"\n",
" * Candidate solution\n",
" Minimizer: [-4.16e-01, -2.01e+00, 2.01e+00, ...]\n",
" Minimum: 3.975467e+02\n",
"\n",
" * Found with\n",
" Algorithm: L-BFGS\n",
" Initial Point: [3.32e-01, -1.64e+00, -7.46e-01, ...]\n",
"\n",
" * Convergence measures\n",
" |x - x'| = 9.89e-08 ≰ 0.0e+00\n",
" |x - x'|/|x'| = 4.01e-08 ≰ 0.0e+00\n",
" |f(x) - f(x')| = 1.71e-13 ≰ 0.0e+00\n",
" |f(x) - f(x')|/|f(x')| = 4.29e-16 ≰ 0.0e+00\n",
" |g(x)| = 4.52e-06 ≰ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 1 (vs limit Inf)\n",
" Iterations: 272\n",
" f(x) calls: 886\n",
" ∇f(x) calls: 886\n"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res = optimize(f, x0, LBFGS(), autodiff=:forward)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: failure (reached maximum number of iterations) (line search failed)\n",
"\n",
" * Candidate solution\n",
" Minimizer: [1.28e+00, -2.18e+00, -2.20e+00, ...]\n",
" Minimum: 3.737273e+02\n",
"\n",
" * Found with\n",
" Algorithm: Nelder-Mead\n",
" Initial Point: [3.32e-01, -1.64e+00, -7.46e-01, ...]\n",
"\n",
" * Convergence measures\n",
" √(Σ(yᵢ-ȳ)²)/n ≰ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 1 (vs limit Inf)\n",
" Iterations: 1000\n",
" f(x) calls: 1332\n"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res = optimize(f, x0, )"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" * Status: success\n",
"\n",
" * Candidate solution\n",
" Minimizer: [2.15e+00, -2.32e+00, -2.05e+00, ...]\n",
" Minimum: 3.649739e+02\n",
"\n",
" * Found with\n",
" Algorithm: Nelder-Mead\n",
" Initial Point: [3.32e-01, -1.64e+00, -7.46e-01, ...]\n",
"\n",
" * Convergence measures\n",
" √(Σ(yᵢ-ȳ)²)/n ≤ 1.0e-08\n",
"\n",
" * Work counters\n",
" Seconds run: 2 (vs limit Inf)\n",
" Iterations: 3613\n",
" f(x) calls: 4821\n"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res = optimize(f, x0, iterations=10000)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{MvNormal{Float64,PDMat{Float64,Array{Float64,2}},Array{Float64,1}},1}:\n",
" FullNormal(\n",
"dim: 2\n",
"μ: [2.151822356603406, -2.315319978017564]\n",
"Σ: [0.6501771077022512 -0.12898110129028423; -0.12898110129028423 0.4968955916966953]\n",
")\n",
" \n",
" FullNormal(\n",
"dim: 2\n",
"μ: [-2.0476516492012187, -1.8681425532978642]\n",
"Σ: [0.8100083035203361 -0.2611628201941864; -0.2611628201941864 0.6368959491108641]\n",
")\n",
"\n",
" FullNormal(\n",
"dim: 2\n",
"μ: [1.9836294394227587, 1.9896007284861126]\n",
"Σ: [1.1255851119177147 0.5623401883267891; 0.5623401883267891 1.042561808182948]\n",
")\n",
" "
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"μ_arr_fit, Σ_arr_fit = encode(Optim.minimizer(res))\n",
"dist_arr_fit = [MvNormal(μ, Σ) for (μ, Σ) in zip(μ_arr_fit, Σ_arr_fit)]"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n",
"<defs>\n",
" <clipPath id=\"clip1600\">\n",
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1600)\" d=\"\n",
"M0 1600 L2400 1600 L2400 0 L0 0 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1601\">\n",
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<path clip-path=\"url(#clip1600)\" d=\"\n",
"M141.865 1487.47 L2112.76 1487.47 L2112.76 47.2441 L141.865 47.2441 Z\n",
" \" fill=\"#30343b\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1602\">\n",
" <rect x=\"141\" y=\"47\" width=\"1972\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 383.578,1487.47 383.578,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 755.444,1487.47 755.444,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1127.31,1487.47 1127.31,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1499.18,1487.47 1499.18,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 1871.04,1487.47 1871.04,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,1310.84 2112.76,1310.84 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,1039.1 2112.76,1039.1 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,767.359 2112.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,495.618 2112.76,495.618 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#adb2b7; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
" 141.865,223.876 2112.76,223.876 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1487.47 2112.76,1487.47 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1487.47 141.865,47.2441 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 383.578,1487.47 383.578,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 755.444,1487.47 755.444,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1127.31,1487.47 1127.31,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1499.18,1487.47 1499.18,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1871.04,1487.47 1871.04,1470.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1310.84 165.515,1310.84 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,1039.1 165.515,1039.1 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,767.359 165.515,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,495.618 165.515,495.618 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#adb2b7; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 141.865,223.876 165.515,223.876 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 383.578, 1541.47)\" x=\"383.578\" y=\"1541.47\">-4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 755.444, 1541.47)\" x=\"755.444\" y=\"1541.47\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1127.31, 1541.47)\" x=\"1127.31\" y=\"1541.47\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1499.18, 1541.47)\" x=\"1499.18\" y=\"1541.47\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1871.04, 1541.47)\" x=\"1871.04\" y=\"1541.47\">4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 1328.34)\" x=\"117.865\" y=\"1328.34\">-4</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 1056.6)\" x=\"117.865\" y=\"1056.6\">-2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 784.859)\" x=\"117.865\" y=\"784.859\">0</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 513.118)\" x=\"117.865\" y=\"513.118\">2</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 117.865, 241.376)\" x=\"117.865\" y=\"241.376\">4</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#300000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 554.486,1174.39 550.921,1172.23 535.705,1162.99 528.845,1158.5 516.924,1150.52 508.784,1144.78 498.143,1136.91 490.456,1131.05 479.361,1121.98 473.72,1117.33 \n",
" 460.58,1105.42 458.552,1103.61 444.431,1089.88 441.799,1087.01 431.364,1076.16 423.018,1065.92 419.963,1062.43 409.335,1048.71 404.237,1040.82 400.039,1034.98 \n",
" 391.666,1021.26 385.456,1008.49 384.92,1007.54 378.446,993.811 373.511,980.086 369.907,966.362 367.512,952.638 366.675,943.283 366.192,938.913 366.141,925.189 \n",
" 366.675,920.189 367.477,911.465 370.187,897.74 374.654,884.016 381.301,870.292 385.456,863.829 390.053,856.568 401.574,842.843 404.237,840.221 416.304,829.119 \n",
" 423.018,823.968 435.701,815.395 441.799,811.719 460.58,802.246 461.932,801.67 479.361,794.452 498.143,788.607 500.768,787.946 516.924,783.668 535.705,779.979 \n",
" 554.486,777.389 573.267,775.706 592.048,774.793 610.829,774.555 629.61,774.935 648.392,775.904 667.173,777.461 685.954,779.634 704.735,782.477 723.516,786.078 \n",
" 731.683,787.946 742.297,789.978 761.078,794.237 779.859,799.422 787.027,801.67 798.641,804.842 817.422,810.813 829.813,815.395 836.203,817.517 854.984,824.496 \n",
" 865.825,829.119 873.765,832.261 892.546,840.672 897.017,842.843 911.327,849.504 924.628,856.568 930.108,859.42 948.849,870.292 948.89,870.316 967.671,881.734 \n",
" 971.161,884.016 986.452,894.333 991.281,897.74 1005.23,908.097 1009.71,911.465 1024.01,922.978 1026.83,925.189 1042.8,938.824 1042.91,938.913 1059.11,952.638 \n",
" 1061.58,954.998 1075.33,966.362 1080.36,971.146 1092.38,980.086 1099.14,986.009 1113.04,993.811 1117.92,997.146 1136.7,1000.14 1148.5,993.811 1155.48,990.115 \n",
" 1164.16,980.086 1174.26,969.854 1176.73,966.362 1188.11,952.638 1193.04,947.46 1200.25,938.913 1211.83,927.334 1213.93,925.189 1229.01,911.465 1230.61,910.076 \n",
" 1246.25,897.74 1249.39,895.303 1266.71,884.016 1268.17,883 1286.95,872.358 1291.83,870.292 1305.73,863.284 1324.51,857.132 1326.92,856.568 1343.29,851.343 \n",
" 1362.07,848 1380.86,846.352 1399.64,845.821 1418.42,846.104 1437.2,847.047 1455.98,848.582 1474.76,850.701 1493.54,853.441 1510.63,856.568 1512.32,856.789 \n",
" 1531.1,859.793 1549.89,863.508 1568.67,868.099 1576.33,870.292 1587.45,872.87 1606.23,878.077 1623.55,884.016 1625.01,884.446 1643.79,890.633 1661.08,897.74 \n",
" 1662.57,898.294 1681.35,905.995 1692.59,911.465 1700.13,914.946 1718.92,925.015 1719.22,925.189 1737.7,935.605 1742.98,938.913 1756.48,947.584 1763.79,952.638 \n",
" 1775.26,961.046 1782.22,966.362 1794.04,976.285 1798.53,980.086 1812.78,993.811 1812.82,993.86 1826.18,1007.54 1831.6,1014.27 1837.64,1021.26 1847.49,1034.98 \n",
" 1850.38,1039.84 1856.33,1048.71 1863.67,1062.43 1869.16,1076 1869.24,1076.16 1874.47,1089.88 1878.08,1103.61 1880.27,1117.33 1881.13,1131.05 1880.64,1144.78 \n",
" 1878.72,1158.5 1875.17,1172.23 1869.67,1185.95 1869.16,1186.92 1863.09,1199.68 1853.94,1213.4 1850.38,1217.71 1842.68,1227.12 1831.6,1237.78 1828.27,1240.85 \n",
" 1812.82,1252.85 1810.36,1254.57 1794.04,1264.89 1787.71,1268.3 1775.26,1274.71 1757.53,1282.02 1756.48,1282.46 1737.7,1289.33 1718.92,1294.48 1713.16,1295.75 \n",
" 1700.13,1298.95 1681.35,1302.46 1662.57,1304.96 1643.79,1306.6 1625.01,1307.52 1606.23,1307.79 1587.45,1307.46 1568.67,1306.52 1549.89,1304.95 1531.1,1302.72 \n",
" 1512.32,1299.71 1493.54,1295.8 1493.32,1295.75 1474.76,1292.03 1455.98,1287.29 1439.21,1282.02 1437.2,1281.48 1418.42,1275.74 1399.64,1268.5 1399.15,1268.3 \n",
" 1380.86,1261.36 1366.09,1254.57 1362.07,1252.83 1343.29,1243.82 1337.67,1240.85 1324.51,1234.02 1312.49,1227.12 1305.73,1223.19 1289.91,1213.4 1286.95,1211.48 \n",
" 1269.1,1199.68 1268.17,1199.01 1249.43,1185.95 1249.39,1185.92 1230.61,1172.5 1230.15,1172.23 1211.83,1159.33 1210.23,1158.5 1193.04,1147.7 1184.56,1144.78 \n",
" 1174.26,1140.31 1155.48,1142.19 1152.13,1144.78 1136.7,1156.3 1134.98,1158.5 1122.55,1172.23 1117.92,1176.67 1109.82,1185.95 1099.14,1196.04 1095.46,1199.68 \n",
" 1080.36,1212.13 1078.75,1213.4 1061.58,1225.14 1058.29,1227.12 1042.8,1235.68 1031.41,1240.85 1024.01,1244.09 1005.23,1250.88 991.975,1254.57 986.452,1256.17 \n",
" 967.671,1260.55 948.89,1263.71 930.108,1265.86 911.327,1267.18 892.546,1267.77 873.765,1267.71 854.984,1267.05 836.203,1265.79 817.422,1263.93 798.641,1261.42 \n",
" 779.859,1258.17 763.226,1254.57 761.078,1254.19 742.297,1250.24 723.516,1245.4 708.787,1240.85 704.735,1239.76 685.954,1234.09 667.18,1227.12 667.173,1227.12 \n",
" 648.392,1220.38 632.301,1213.4 629.61,1212.33 610.829,1204.12 601.898,1199.68 592.048,1195.02 575.191,1185.95 573.267,1184.95 554.486,1174.39 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#480000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 593.352,1158.5 610.829,1168.05 619.443,1172.23 629.61,1177.29 648.392,1185.46 649.627,1185.95 667.173,1193.37 685.081,1199.68 685.954,1200.01 704.735,1206.54 \n",
" 723.516,1211.9 729.595,1213.4 742.297,1216.93 761.078,1221.25 779.859,1224.71 796.597,1227.12 798.641,1227.47 817.422,1229.89 836.203,1231.49 854.984,1232.31 \n",
" 873.765,1232.32 892.546,1231.47 911.327,1229.66 927.685,1227.12 930.108,1226.77 948.89,1223 967.671,1217.72 979.445,1213.4 986.452,1210.73 1005.23,1201.7 \n",
" 1008.79,1199.68 1024.01,1189.84 1029.24,1185.95 1042.8,1173.69 1044.3,1172.23 1055.91,1158.5 1061.58,1149.32 1064.47,1144.78 1070.97,1131.05 1075.16,1117.33 \n",
" 1077.38,1103.61 1077.86,1089.88 1076.69,1076.16 1073.86,1062.43 1069.22,1048.71 1062.53,1034.98 1061.58,1033.44 1055.24,1021.26 1046.04,1007.54 1042.8,1003.48 \n",
" 1035.93,993.811 1024.01,980.133 1023.98,980.086 1011.64,966.362 1005.23,960.212 997.635,952.638 986.452,942.777 982.109,938.913 967.671,927.266 965.05,925.189 \n",
" 948.89,913.291 946.299,911.465 930.108,900.6 925.546,897.74 911.327,889.05 902.294,884.016 892.546,878.592 875.789,870.292 873.765,869.267 854.984,860.424 \n",
" 845.583,856.568 836.203,852.508 817.422,845.389 809.76,842.843 798.641,838.821 779.859,832.984 765.012,829.119 761.078,827.968 742.297,823.196 723.516,819.342 \n",
" 704.735,816.28 697.775,815.395 685.954,813.624 667.173,811.607 648.392,810.376 629.61,809.932 610.829,810.311 592.048,811.59 573.267,813.896 564.913,815.395 \n",
" 554.486,817.165 535.705,821.594 516.924,827.728 513.432,829.119 498.143,835.542 484.506,842.843 479.361,845.945 464.486,856.568 460.58,859.947 449.799,870.292 \n",
" 441.799,880.427 439.084,884.016 431.121,897.74 425.834,911.465 423.018,923.632 422.632,925.189 421.022,938.913 421.169,952.638 422.958,966.362 423.018,966.608 \n",
" 425.852,980.086 430.132,993.811 435.938,1007.54 441.799,1018.32 443.231,1021.26 451.295,1034.98 460.58,1047.67 461.284,1048.71 471.932,1062.43 479.361,1070.52 \n",
" 484.332,1076.16 498.143,1089.66 498.367,1089.88 513.451,1103.61 516.924,1106.47 530.318,1117.33 535.705,1121.38 549.09,1131.05 554.486,1134.76 570.004,1144.78 \n",
" 573.267,1146.83 592.048,1157.79 593.352,1158.5 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#620100; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 614.113,1144.78 629.61,1153.08 641.066,1158.5 648.392,1162.03 667.173,1170.08 672.844,1172.23 685.954,1177.45 704.735,1183.82 712.025,1185.95 723.516,1189.6 \n",
" 742.297,1194.6 761.078,1198.65 766.938,1199.68 779.859,1202.22 798.641,1205.04 817.422,1206.99 836.203,1208.11 854.984,1208.38 873.765,1207.72 892.546,1206.04 \n",
" 911.327,1203.16 926.703,1199.68 930.108,1198.9 948.89,1193.2 966.267,1185.95 967.671,1185.31 986.452,1174.71 990.121,1172.23 1005.23,1159.78 1006.61,1158.5 \n",
" 1018.52,1144.78 1024.01,1135.8 1026.87,1131.05 1032.65,1117.33 1035.97,1103.61 1037.21,1089.88 1036.61,1076.16 1034.27,1062.43 1030.2,1048.71 1024.27,1034.98 \n",
" 1024.01,1034.51 1017.46,1021.26 1008.75,1007.54 1005.23,1002.9 998.797,993.811 987.007,980.086 986.452,979.508 974.223,966.362 967.671,960.241 959.575,952.638 \n",
" 948.89,943.675 943.099,938.913 930.108,929.117 924.661,925.189 911.327,916.14 903.945,911.465 892.546,904.497 880.411,897.74 873.765,894.08 854.984,884.784 \n",
" 853.29,884.016 836.203,876.104 821.52,870.292 817.422,868.594 798.641,861.63 782.316,856.568 779.859,855.745 761.078,850.217 742.297,845.716 727.515,842.843 \n",
" 723.516,841.971 704.735,838.694 685.954,836.297 667.173,834.738 648.392,834.014 629.61,834.163 610.829,835.273 592.048,837.48 573.267,840.988 566.027,842.843 \n",
" 554.486,845.85 535.705,852.511 526.792,856.568 516.924,861.576 503.124,870.292 498.143,874.077 486.816,884.016 479.361,892.636 475.275,897.74 467.15,911.465 \n",
" 461.951,925.189 460.58,931.526 458.917,938.913 457.86,952.638 458.692,966.362 460.58,976.257 461.221,980.086 465.056,993.811 470.487,1007.54 477.687,1021.26 \n",
" 479.361,1023.88 485.933,1034.98 495.994,1048.71 498.143,1051.25 507.21,1062.43 516.924,1072.57 520.303,1076.16 535.058,1089.88 535.705,1090.43 551.378,1103.61 \n",
" 554.486,1106 569.816,1117.33 573.267,1119.73 590.641,1131.05 592.048,1131.94 610.829,1143.01 614.113,1144.78 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#7c0200; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 629.61,1133.32 625.572,1131.05 610.829,1122.59 602.446,1117.33 592.048,1110.47 582.305,1103.61 573.267,1096.73 564.623,1089.88 554.486,1080.97 549.115,1076.16 \n",
" 535.705,1062.45 535.691,1062.43 523.635,1048.71 516.924,1039.45 513.559,1034.98 504.958,1021.26 498.283,1007.54 498.143,1007.15 492.816,993.811 489.194,980.086 \n",
" 487.399,966.362 487.519,952.638 489.769,938.913 494.525,925.189 498.143,918.527 502.181,911.465 513.598,897.74 516.924,894.673 530.362,884.016 535.705,880.582 \n",
" 554.486,870.905 556.001,870.292 573.267,863.964 592.048,859.124 606.939,856.568 610.829,855.903 629.61,853.913 648.392,853.123 667.173,853.401 685.954,854.673 \n",
" 701.839,856.568 704.735,856.876 723.516,859.726 742.297,863.465 761.078,868.188 768.093,870.292 779.859,873.594 798.641,879.851 809.352,884.016 817.422,887.046 \n",
" 836.203,895.133 841.621,897.74 854.984,904.151 868.486,911.465 873.765,914.389 891.473,925.189 892.546,925.876 911.327,938.772 911.523,938.913 929.172,952.638 \n",
" 930.108,953.443 944.79,966.362 948.89,970.476 958.489,980.086 967.671,990.894 970.217,993.811 980.508,1007.54 986.452,1017.36 988.965,1021.26 996.046,1034.98 \n",
" 1001.23,1048.71 1004.65,1062.43 1005.23,1067.3 1006.43,1076.16 1006.22,1089.88 1005.23,1095.51 1003.86,1103.61 999.109,1117.33 991.279,1131.05 986.452,1137.07 \n",
" 979.665,1144.78 967.671,1154.95 962.714,1158.5 948.89,1166.67 936.753,1172.23 930.108,1174.94 911.327,1180.86 892.546,1184.88 884.924,1185.95 873.765,1187.53 \n",
" 854.984,1188.94 836.203,1189.23 817.422,1188.48 798.641,1186.75 793.052,1185.95 779.859,1184.26 761.078,1180.99 742.297,1176.79 725.908,1172.23 723.516,1171.61 \n",
" 704.735,1165.92 685.954,1159.03 684.659,1158.5 667.173,1151.58 652.467,1144.78 648.392,1142.91 629.61,1133.32 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#970300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 658.269,1131.05 667.173,1135.34 685.954,1143.27 690.037,1144.78 704.735,1150.34 723.516,1156.28 731.9,1158.5 742.297,1161.4 761.078,1165.63 779.859,1168.84 \n",
" 798.641,1171.09 815.246,1172.23 817.422,1172.39 836.203,1172.68 845.743,1172.23 854.984,1171.8 873.765,1169.63 892.546,1165.89 911.327,1160.18 915.531,1158.5 \n",
" 930.108,1151.85 941.904,1144.78 948.89,1139.54 958.357,1131.05 967.671,1119.34 969.117,1117.33 975.992,1103.61 979.745,1089.88 980.936,1076.16 979.912,1062.43 \n",
" 976.86,1048.71 971.822,1034.98 967.671,1026.87 964.963,1021.26 956.458,1007.54 948.89,997.72 945.946,993.811 933.676,980.086 930.108,976.62 919.428,966.362 \n",
" 911.327,959.511 902.901,952.638 892.546,944.977 883.833,938.913 873.765,932.376 861.701,925.189 854.984,921.353 836.203,911.735 835.622,911.465 817.422,903.078 \n",
" 803.883,897.74 798.641,895.639 779.859,889.075 762.349,884.016 761.078,883.631 742.297,878.844 723.516,875.112 704.735,872.356 685.954,870.552 679.93,870.292 \n",
" 667.173,869.682 648.392,869.933 643.766,870.292 629.61,871.385 610.829,874.235 592.048,878.824 577.32,884.016 573.267,885.626 554.486,895.504 551.08,897.74 \n",
" 535.705,910.58 534.802,911.465 524.159,925.189 517.501,938.913 516.924,941.003 513.792,952.638 512.649,966.362 513.77,980.086 516.924,993.518 516.987,993.811 \n",
" 521.849,1007.54 528.623,1021.26 535.705,1032.31 537.356,1034.98 547.661,1048.71 554.486,1056.29 560.002,1062.43 573.267,1075.08 574.423,1076.16 590.959,1089.88 \n",
" 592.048,1090.71 610.046,1103.61 610.829,1104.13 629.61,1115.86 632.176,1117.33 648.392,1126.24 658.269,1131.05 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#b20500; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 667.173,1120.44 661.015,1117.33 648.392,1110.74 636.172,1103.61 629.61,1099.54 615.309,1089.88 610.829,1086.57 597.542,1076.16 592.048,1071.3 582.362,1062.43 \n",
" 573.267,1052.72 569.544,1048.71 558.818,1034.98 554.486,1028.08 550.097,1021.26 543.357,1007.54 538.72,993.811 536.182,980.086 535.896,966.362 538.184,952.638 \n",
" 543.591,938.913 552.95,925.189 554.486,923.566 568.076,911.465 573.267,907.965 592.048,898.188 593.202,897.74 610.829,891.816 629.61,887.708 648.392,885.389 \n",
" 667.173,884.543 685.954,884.955 704.735,886.496 723.516,889.1 742.297,892.766 761.078,897.548 761.705,897.74 779.859,903.16 798.641,909.963 802.256,911.465 \n",
" 817.422,917.785 832.74,925.189 836.203,926.915 854.984,937.355 857.549,938.913 873.765,949.417 878.371,952.638 892.546,963.512 896.077,966.362 911.122,980.086 \n",
" 911.327,980.302 924.031,993.811 930.108,1001.64 934.732,1007.54 943.419,1021.26 948.89,1032.68 950.042,1034.98 954.796,1048.71 957.343,1062.43 957.563,1076.16 \n",
" 955.165,1089.88 949.647,1103.61 948.89,1104.82 940.145,1117.33 930.108,1126.96 924.932,1131.05 911.327,1139.36 899.378,1144.78 892.546,1147.42 873.765,1152.68 \n",
" 854.984,1155.92 836.203,1157.53 817.422,1157.77 798.641,1156.83 779.859,1154.79 761.078,1151.69 742.297,1147.5 732.569,1144.78 723.516,1142.32 704.735,1136.17 \n",
" 691.615,1131.05 685.954,1128.85 667.173,1120.44 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ce0900; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 691.224,1117.33 704.735,1122.8 723.516,1129.18 730.252,1131.05 742.297,1134.45 761.078,1138.58 779.859,1141.53 798.641,1143.31 817.422,1143.83 836.203,1142.93 \n",
" 854.984,1140.36 873.765,1135.71 886.262,1131.05 892.546,1128.23 910.013,1117.33 911.327,1116.22 923.396,1103.61 930.108,1092.19 931.308,1089.88 935.198,1076.16 \n",
" 935.972,1062.43 934.063,1048.71 930.108,1036.3 929.705,1034.98 923.188,1021.26 914.379,1007.54 911.327,1003.72 903.342,993.811 892.546,982.751 889.862,980.086 \n",
" 873.765,966.366 873.76,966.362 854.984,952.923 854.55,952.638 836.203,941.547 831.328,938.913 817.422,931.795 802.562,925.189 798.641,923.489 779.859,916.436 \n",
" 763.825,911.465 761.078,910.606 742.297,905.845 723.516,902.27 704.735,899.854 685.954,898.642 667.173,898.748 648.392,900.378 629.61,903.847 610.829,909.617 \n",
" 606.483,911.465 592.048,918.994 583.161,925.189 573.267,934.753 569.691,938.913 561.937,952.638 558.09,966.362 557.375,980.086 559.307,993.811 563.625,1007.54 \n",
" 570.252,1021.26 573.267,1025.92 579.067,1034.98 590.17,1048.71 592.048,1050.66 603.632,1062.43 610.829,1068.71 619.798,1076.16 629.61,1083.4 639.091,1089.88 \n",
" 648.392,1095.72 662.317,1103.61 667.173,1106.21 685.954,1115.15 691.224,1117.33 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#eb1300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 704.735,1109.76 690.242,1103.61 685.954,1101.7 667.173,1092.08 663.357,1089.88 648.392,1080.54 642.008,1076.16 629.61,1066.61 624.542,1062.43 610.829,1049.29 \n",
" 610.249,1048.71 598.742,1034.98 592.048,1024.76 589.766,1021.26 583.305,1007.54 579.409,993.811 578.264,980.086 580.289,966.362 586.201,952.638 592.048,944.911 \n",
" 597.607,938.913 610.829,929.295 618.617,925.189 629.61,920.643 648.392,915.567 667.173,912.869 685.954,912.075 704.735,912.868 723.516,915.054 742.297,918.532 \n",
" 761.078,923.287 767.036,925.189 779.859,929.347 798.641,936.724 803.433,938.913 817.422,945.628 830.184,952.638 836.203,956.222 851.534,966.362 854.984,968.921 \n",
" 868.929,980.086 873.765,984.594 883.181,993.811 892.546,1004.94 894.679,1007.54 903.598,1021.26 910.025,1034.98 911.327,1039.65 913.91,1048.71 915.015,1062.43 \n",
" 912.976,1076.16 911.327,1080.28 906.937,1089.88 895.531,1103.61 892.546,1106.08 874.631,1117.33 873.765,1117.75 854.984,1124.38 836.203,1128.29 817.422,1130.06 \n",
" 798.641,1130.1 779.859,1128.65 761.078,1125.86 742.297,1121.79 726.658,1117.33 723.516,1116.42 704.735,1109.76 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fb3e00; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 723.516,1103.68 723.298,1103.61 704.735,1096.62 689.809,1089.88 685.954,1088 667.173,1077.46 665.102,1076.16 648.392,1064.39 645.84,1062.43 630.473,1048.71 \n",
" 629.61,1047.77 618.449,1034.98 610.829,1023.67 609.244,1021.26 603.007,1007.54 599.68,993.811 599.608,980.086 603.449,966.362 610.829,954.709 612.473,952.638 \n",
" 629.61,939.44 630.595,938.913 648.392,931.814 667.173,927.53 685.954,925.746 704.735,925.957 723.516,927.841 742.297,931.212 761.078,935.992 769.971,938.913 \n",
" 779.859,942.302 798.641,950.132 803.778,952.638 817.422,959.832 828.304,966.362 836.203,971.67 847.554,980.086 854.984,986.503 862.883,993.811 873.765,1006.09 \n",
" 874.998,1007.54 884.039,1021.26 890.324,1034.98 892.546,1044.14 893.659,1048.71 893.707,1062.43 892.546,1066.92 889.769,1076.16 880.435,1089.88 873.765,1095.85 \n",
" 861.947,1103.61 854.984,1106.93 836.203,1112.86 817.422,1115.92 798.641,1116.73 779.859,1115.72 761.078,1113.14 742.297,1109.12 723.516,1103.68 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fe6600; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 742.297,1096 723.516,1090.45 722.017,1089.88 704.735,1082.84 691.05,1076.16 685.954,1073.37 668.609,1062.43 667.173,1061.37 651.739,1048.71 648.392,1045.33 \n",
" 638.897,1034.98 629.61,1021.66 629.341,1021.26 623.429,1007.54 620.926,993.811 622.429,980.086 628.993,966.362 629.61,965.645 644.843,952.638 648.392,950.651 \n",
" 667.173,943.735 685.954,940.361 704.735,939.666 723.516,941.098 742.297,944.323 761.078,949.162 771.262,952.638 779.859,955.798 798.641,964.277 802.571,966.362 \n",
" 817.422,975.182 824.709,980.086 836.203,989.117 841.65,993.811 854.627,1007.54 854.984,1008.04 863.826,1021.26 869.866,1034.98 872.438,1048.71 870.827,1062.43 \n",
" 863.786,1076.16 854.984,1084.92 847.875,1089.88 836.203,1095.39 817.422,1100.54 798.641,1102.6 779.859,1102.27 761.078,1099.98 742.297,1096 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ff8700; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 761.078,1085.66 742.297,1081.79 723.812,1076.16 723.516,1076.06 704.735,1067.57 695.291,1062.43 685.954,1056.46 675.431,1048.71 667.173,1041.13 661.138,1034.98 \n",
" 651.259,1021.26 648.392,1014.56 645.577,1007.54 644.4,993.811 648.392,980.267 648.463,980.086 662.37,966.362 667.173,963.62 685.954,957.298 704.735,954.973 \n",
" 723.516,955.599 742.297,958.543 761.078,963.443 769.185,966.362 779.859,970.676 798.641,980.072 798.665,980.086 817.422,993.133 818.284,993.811 832.266,1007.54 \n",
" 836.203,1012.83 841.972,1021.26 847.522,1034.98 848.693,1048.71 844.214,1062.43 836.203,1071.77 830.491,1076.16 817.422,1082.22 798.641,1086.54 779.859,1087.41 \n",
" 761.078,1085.66 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ffa400; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 779.859,1069.19 761.078,1068.67 742.297,1065.19 733.701,1062.43 723.516,1058.53 704.735,1048.95 704.36,1048.71 687.378,1034.98 685.954,1033.31 677.151,1021.26 \n",
" 672.185,1007.54 673.976,993.811 685.954,980.131 686.029,980.086 704.735,974.186 723.516,973.03 742.297,975.256 761.078,980.08 761.095,980.086 779.859,988.783 \n",
" 788.495,993.811 798.641,1001.36 805.653,1007.54 816.556,1021.26 817.422,1023.59 821.143,1034.98 819.524,1048.71 817.422,1051.89 805.842,1062.43 798.641,1065.69 \n",
" 779.859,1069.19 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ffbe03; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 761.078,1041.95 742.297,1039.57 731.308,1034.98 723.516,1029.32 716.177,1021.26 715.702,1007.54 723.516,1002.13 742.297,1000.89 761.078,1006.34 763.228,1007.54 \n",
" 777.891,1021.26 778.736,1034.98 761.078,1041.95 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#300000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1163.93,774.222 1174.26,778.801 1193.04,785.388 1202.49,787.946 1211.83,790.689 1230.61,794.983 1249.39,798.098 1268.17,800.191 1286.95,801.349 1305.73,801.599 \n",
" 1324.51,800.899 1343.29,799.138 1362.07,796.117 1380.86,791.518 1391.42,787.946 1399.64,785.985 1418.42,780.367 1434.64,774.222 1437.2,773.471 1455.98,767.122 \n",
" 1472.25,760.497 1474.76,759.648 1493.54,752.587 1506.86,746.773 1512.32,744.688 1531.1,736.747 1538.95,733.049 1549.89,728.377 1568.51,719.324 1568.67,719.254 \n",
" 1587.45,710.284 1596.25,705.6 1606.23,700.546 1621.76,691.876 1625.01,690.122 1643.79,679.238 1645.58,678.151 1662.57,667.937 1668.05,664.427 1681.35,655.901 \n",
" 1689.06,650.703 1700.13,643.127 1708.79,636.978 1718.92,629.582 1727.37,623.254 1737.7,615.196 1744.88,609.53 1756.48,599.857 1761.35,595.805 1775.26,583.404 \n",
" 1776.77,582.081 1791.56,568.357 1794.04,565.869 1805.63,554.632 1812.82,546.885 1818.63,540.908 1830.6,527.184 1831.6,525.95 1842.39,513.459 1850.38,502.761 \n",
" 1852.83,499.735 1862.92,486.011 1869.16,476.145 1871.86,472.286 1880.4,458.562 1887.55,444.838 1887.95,443.985 1894.62,431.113 1900.49,417.389 1905.25,403.665 \n",
" 1906.73,398.344 1909.43,389.94 1912.7,376.216 1914.85,362.492 1915.86,348.768 1915.65,335.043 1914.09,321.319 1910.98,307.595 1906.73,295.74 1906.07,293.87 \n",
" 1899.43,280.146 1889.99,266.422 1887.95,264.017 1877.47,252.697 1869.16,245.551 1860.34,238.973 1850.38,232.627 1836.09,225.249 1831.6,223.138 1812.82,215.96 \n",
" 1796.93,211.524 1794.04,210.73 1775.26,206.743 1756.48,204.076 1737.7,202.501 1718.92,201.852 1700.13,202.017 1681.35,202.925 1662.57,204.539 1643.79,206.859 \n",
" 1625.01,209.913 1616.98,211.524 1606.23,213.388 1587.45,217.291 1568.67,221.979 1557.42,225.249 1549.89,227.184 1531.1,232.677 1512.89,238.973 1512.32,239.15 \n",
" 1493.54,245.513 1475.57,252.697 1474.76,252.992 1455.98,260.387 1442.65,266.422 1437.2,268.723 1418.42,277.429 1413.04,280.146 1399.64,286.568 1385.96,293.87 \n",
" 1380.86,296.491 1362.07,307.009 1361.07,307.595 1343.29,317.803 1337.6,321.319 1324.51,329.342 1315.75,335.043 1305.73,341.604 1295.29,348.768 1286.95,354.597 \n",
" 1276.03,362.492 1268.17,368.364 1257.87,376.216 1249.39,382.985 1240.73,389.94 1230.61,398.585 1224.62,403.665 1211.83,415.345 1209.54,417.389 1195.16,431.113 \n",
" 1193.04,433.296 1181.39,444.838 1174.26,452.733 1168.72,458.562 1157.01,472.286 1155.48,474.234 1145.57,486.011 1136.7,498.256 1135.54,499.735 1125.62,513.459 \n",
" 1117.92,526.079 1117.17,527.184 1108.79,540.908 1101.79,554.632 1099.14,560.705 1095.34,568.357 1089.66,582.081 1085.1,595.805 1081.57,609.53 1080.36,616.107 \n",
" 1078.81,623.254 1077.02,636.978 1076.44,650.703 1077.16,664.427 1079.34,678.151 1080.36,681.947 1082.91,691.876 1088.25,705.6 1095.95,719.324 1099.14,723.776 \n",
" 1106.17,733.049 1117.92,744.948 1119.93,746.773 1136.7,759.456 1138.33,760.497 1155.48,770.352 1163.93,774.222 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#480000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1211.83,723.188 1204.55,719.324 1193.04,712.244 1184.25,705.6 1174.26,696.111 1170.36,691.876 1160.64,678.151 1155.48,667.581 1154.01,664.427 1149.63,650.703 \n",
" 1147.27,636.978 1146.62,623.254 1147.46,609.53 1149.65,595.805 1153.16,582.081 1155.48,575.417 1157.69,568.357 1163.11,554.632 1169.78,540.908 1174.26,533.146 \n",
" 1177.42,527.184 1185.84,513.459 1193.04,503.37 1195.47,499.735 1205.75,486.011 1211.83,478.845 1217.12,472.286 1229.61,458.562 1230.61,457.539 1242.65,444.838 \n",
" 1249.39,438.414 1256.91,431.113 1268.17,421.088 1272.31,417.389 1286.95,405.202 1288.82,403.665 1305.73,390.496 1306.46,389.94 1324.51,376.79 1325.33,376.216 \n",
" 1343.29,363.965 1345.57,362.492 1362.07,351.949 1367.39,348.768 1380.86,340.714 1391.11,335.043 1399.64,330.27 1417.17,321.319 1418.42,320.665 1437.2,311.41 \n",
" 1445.83,307.595 1455.98,302.91 1474.76,295.184 1478.27,293.87 1493.54,287.786 1512.32,281.311 1516.11,280.146 1531.1,275.139 1549.89,269.775 1563.69,266.422 \n",
" 1568.67,265.087 1587.45,260.82 1606.23,257.386 1625.01,254.731 1643.79,252.839 1646.25,252.697 1662.57,251.623 1681.35,251.34 1700.13,252.099 1706.14,252.697 \n",
" 1718.92,253.949 1737.7,257.104 1756.48,261.948 1768.96,266.422 1775.26,268.897 1794.04,278.66 1796.37,280.146 1812.82,292.868 1813.92,293.87 1826.07,307.595 \n",
" 1831.6,316.357 1834.52,321.319 1840.29,335.043 1843.77,348.768 1845.39,362.492 1845.43,376.216 1844.08,389.94 1841.45,403.665 1837.58,417.389 1832.43,431.113 \n",
" 1831.6,432.903 1826.62,444.838 1819.67,458.562 1812.82,469.912 1811.5,472.286 1802.82,486.011 1794.04,497.867 1792.74,499.735 1782.17,513.459 1775.26,521.37 \n",
" 1770.4,527.184 1757.55,540.908 1756.48,541.979 1744.1,554.632 1737.7,560.591 1729.45,568.357 1718.92,577.514 1713.66,582.081 1700.13,593.073 1696.72,595.805 \n",
" 1681.35,607.501 1678.61,609.53 1662.57,620.957 1659.21,623.254 1643.79,633.546 1638.36,636.978 1625.01,645.326 1615.8,650.703 1606.23,656.311 1591.19,664.427 \n",
" 1587.45,666.482 1568.67,676.082 1564.26,678.151 1549.89,685.156 1534.34,691.876 1531.1,693.35 1512.32,701.209 1500.37,705.6 1493.54,708.299 1474.76,714.921 \n",
" 1460.28,719.324 1455.98,720.763 1437.2,726.285 1418.42,730.896 1407.89,733.049 1399.64,734.96 1380.86,738.452 1362.07,741.07 1343.29,742.836 1324.51,743.728 \n",
" 1305.73,743.683 1286.95,742.585 1268.17,740.26 1249.39,736.455 1237.62,733.049 1230.61,730.917 1211.83,723.188 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#620100; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1268.17,698.323 1252.21,691.876 1249.39,690.557 1230.61,678.909 1229.62,678.151 1215.44,664.427 1211.83,659.536 1206.04,650.703 1200.03,636.978 1196.64,623.254 \n",
" 1195.36,609.53 1195.85,595.805 1197.87,582.081 1201.3,568.357 1206.1,554.632 1211.83,541.966 1212.27,540.908 1219.24,527.184 1227.61,513.459 1230.61,509.189 \n",
" 1236.91,499.735 1247.48,486.011 1249.39,483.779 1258.89,472.286 1268.17,462.348 1271.64,458.562 1285.49,444.838 1286.95,443.496 1300.37,431.113 1305.73,426.544 \n",
" 1316.6,417.389 1324.51,411.141 1334.23,403.665 1343.29,397.025 1353.37,389.94 1362.07,384.022 1374.21,376.216 1380.86,372.024 1397.05,362.492 1399.64,360.978 \n",
" 1418.42,350.69 1422.22,348.768 1437.2,341.11 1450.42,335.043 1455.98,332.422 1474.76,324.393 1482.83,321.319 1493.54,317.054 1512.32,310.49 1521.83,307.595 \n",
" 1531.1,304.592 1549.89,299.38 1568.67,295.058 1575.04,293.87 1587.45,291.355 1606.23,288.469 1625.01,286.512 1643.79,285.526 1662.57,285.605 1681.35,286.91 \n",
" 1700.13,289.679 1717.45,293.87 1718.92,294.256 1737.7,301.189 1750.1,307.595 1756.48,311.576 1768.83,321.319 1775.26,328.06 1780.98,335.043 1788.92,348.768 \n",
" 1793.79,362.492 1794.04,363.812 1796.35,376.216 1796.93,389.94 1795.76,403.665 1794.04,412.173 1793.08,417.389 1789.19,431.113 1783.97,444.838 1777.38,458.562 \n",
" 1775.26,462.252 1769.86,472.286 1761.14,486.011 1756.48,492.38 1751.34,499.735 1740.39,513.459 1737.7,516.509 1728.52,527.184 1718.92,537.14 1715.33,540.908 \n",
" 1700.99,554.632 1700.13,555.397 1685.62,568.357 1681.35,571.897 1668.87,582.081 1662.57,586.929 1650.67,595.805 1643.79,600.722 1630.89,609.53 1625.01,613.429 \n",
" 1609.29,623.254 1606.23,625.138 1587.45,635.981 1585.6,636.978 1568.67,646.139 1559.37,650.703 1549.89,655.437 1531.1,663.86 1529.73,664.427 1512.32,671.838 \n",
" 1495.28,678.151 1493.54,678.828 1474.76,685.395 1455.98,690.982 1452.49,691.876 1437.2,696.088 1418.42,700.348 1399.64,703.732 1385.74,705.6 1380.86,706.325 \n",
" 1362.07,708.106 1343.29,708.844 1324.51,708.436 1305.73,706.713 1299.06,705.6 1286.95,703.485 1268.17,698.323 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#7c0200; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1305.73,673.76 1286.95,667.097 1281.49,664.427 1268.17,656.366 1261.01,650.703 1249.39,637.957 1248.64,636.978 1241.15,623.254 1236.93,609.53 1235.28,595.805 \n",
" 1235.72,582.081 1237.95,568.357 1241.79,554.632 1247.18,540.908 1249.39,536.514 1253.83,527.184 1261.79,513.459 1268.17,504.169 1271.11,499.735 1281.57,486.011 \n",
" 1286.95,479.785 1293.33,472.286 1305.73,459.352 1306.49,458.562 1320.81,444.838 1324.51,441.575 1336.59,431.113 1343.29,425.714 1353.95,417.389 1362.07,411.393 \n",
" 1373.03,403.665 1380.86,398.372 1394.09,389.94 1399.64,386.498 1417.49,376.216 1418.42,375.69 1437.2,365.714 1443.89,362.492 1455.98,356.635 1474.23,348.768 \n",
" 1474.76,348.535 1493.54,341.057 1511.05,335.043 1512.32,334.59 1531.1,328.753 1549.89,323.895 1562.18,321.319 1568.67,319.877 1587.45,316.717 1606.23,314.595 \n",
" 1625.01,313.581 1643.79,313.809 1662.57,315.501 1681.35,318.986 1689.43,321.319 1700.13,324.873 1718.92,334.132 1720.34,335.043 1736.89,348.768 1737.7,349.699 \n",
" 1746.99,362.492 1753.11,376.216 1756.23,389.94 1756.48,394.168 1757.01,403.665 1756.48,409.433 1755.8,417.389 1752.94,431.113 1748.54,444.838 1742.66,458.562 \n",
" 1737.7,467.791 1735.4,472.286 1726.99,486.011 1718.92,497.196 1717.14,499.735 1706.22,513.459 1700.13,520.223 1693.94,527.184 1681.35,539.832 1680.28,540.908 \n",
" 1665.39,554.632 1662.57,557.033 1649.01,568.357 1643.79,572.438 1631.01,582.081 1625.01,586.378 1611.18,595.805 1606.23,599.062 1589.25,609.53 1587.45,610.619 \n",
" 1568.67,621.23 1564.77,623.254 1549.89,630.962 1536.97,636.978 1531.1,639.743 1512.32,647.715 1504.38,650.703 1493.54,654.898 1474.76,661.218 1463.61,664.427 \n",
" 1455.98,666.729 1437.2,671.448 1418.42,675.205 1399.64,678.011 1398.13,678.151 1380.86,679.889 1362.07,680.602 1343.29,679.999 1326.98,678.151 1324.51,677.852 \n",
" 1305.73,673.76 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#970300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1343.29,652.206 1337,650.703 1324.51,647.207 1305.73,638.706 1302.95,636.978 1286.95,623.448 1286.77,623.254 1277.78,609.53 1272.87,595.805 1271.05,582.081 \n",
" 1271.68,568.357 1274.34,554.632 1278.79,540.908 1284.93,527.184 1286.95,523.629 1292.56,513.459 1301.67,499.735 1305.73,494.499 1312.24,486.011 1324.32,472.286 \n",
" 1324.51,472.088 1337.8,458.562 1343.29,453.512 1352.93,444.838 1362.07,437.275 1369.8,431.113 1380.86,422.872 1388.6,417.389 1399.64,409.969 1409.66,403.665 \n",
" 1418.42,398.353 1433.47,389.94 1437.2,387.901 1455.98,378.499 1461.05,376.216 1474.76,370.053 1493.54,362.644 1493.99,362.492 1512.32,356.079 1531.1,350.549 \n",
" 1538.53,348.768 1549.89,345.949 1568.67,342.394 1587.45,339.973 1606.23,338.788 1625.01,339.033 1643.79,341.014 1662.57,345.197 1672.59,348.768 1681.35,352.613 \n",
" 1696.75,362.492 1700.13,365.511 1709.54,376.216 1716.89,389.94 1718.92,397.318 1720.47,403.665 1721.25,417.389 1719.77,431.113 1718.92,434.411 1716.35,444.838 \n",
" 1711.25,458.562 1704.52,472.286 1700.13,479.504 1696.28,486.011 1686.61,499.735 1681.35,506.181 1675.46,513.459 1662.8,527.184 1662.57,527.405 1648.69,540.908 \n",
" 1643.79,545.248 1632.9,554.632 1625.01,560.93 1615.31,568.357 1606.23,574.891 1595.66,582.081 1587.45,587.421 1573.6,595.805 1568.67,598.7 1549.89,608.839 \n",
" 1548.48,609.53 1531.1,618.004 1518.99,623.254 1512.32,626.151 1493.54,633.347 1482.54,636.978 1474.76,639.604 1455.98,644.912 1437.2,649.19 1428.3,650.703 \n",
" 1418.42,652.456 1399.64,654.572 1380.86,655.388 1362.07,654.705 1343.29,652.206 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#b20500; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1380.86,630.605 1362.07,627.684 1347.45,623.254 1343.29,621.65 1324.51,610.105 1323.84,609.53 1312.73,595.805 1306.97,582.081 1305.73,573.416 1305.1,568.357 \n",
" 1305.73,559.681 1306.09,554.632 1309.43,540.908 1314.77,527.184 1321.93,513.459 1324.51,509.52 1330.89,499.735 1341.52,486.011 1343.29,484.02 1353.91,472.286 \n",
" 1362.07,464.293 1368.1,458.562 1380.86,447.603 1384.22,444.838 1399.64,433.18 1402.54,431.113 1418.42,420.527 1423.5,417.389 1437.2,409.334 1447.8,403.665 \n",
" 1455.98,399.421 1474.76,390.713 1476.66,389.94 1493.54,383.153 1512.32,376.69 1514,376.216 1531.1,371.37 1549.89,367.23 1568.67,364.327 1587.45,362.82 \n",
" 1606.23,362.99 1625.01,365.291 1643.79,370.435 1656.33,376.216 1662.57,380.145 1673.52,389.94 1681.35,401.626 1682.45,403.665 1686.35,417.389 1687.02,431.113 \n",
" 1685.11,444.838 1681.35,457.321 1680.99,458.562 1674.88,472.286 1667.01,486.011 1662.57,492.34 1657.38,499.735 1646.08,513.459 1643.79,515.896 1632.99,527.184 \n",
" 1625.01,534.628 1618.05,540.908 1606.23,550.615 1601.09,554.632 1587.45,564.516 1581.79,568.357 1568.67,576.754 1559.63,582.081 1549.89,587.59 1533.83,595.805 \n",
" 1531.1,597.168 1512.32,605.537 1502.05,609.53 1493.54,612.811 1474.76,618.943 1458.64,623.254 1455.98,623.973 1437.2,627.773 1418.42,630.276 1399.64,631.316 \n",
" 1380.86,630.605 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ce0900; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1418.42,606.993 1399.64,606.21 1380.86,602.521 1364.41,595.805 1362.07,594.416 1348.72,582.081 1343.29,572.262 1341.64,568.357 1339.71,554.632 1341.09,540.908 \n",
" 1343.29,533.625 1345.25,527.184 1351.83,513.459 1360.41,499.735 1362.07,497.584 1371.26,486.011 1380.86,475.653 1384.1,472.286 1399.17,458.562 1399.64,458.18 \n",
" 1416.9,444.838 1418.42,443.755 1437.2,431.379 1437.64,431.113 1455.98,420.824 1462.85,417.389 1474.76,411.704 1493.54,403.895 1494.21,403.665 1512.32,397.615 \n",
" 1531.1,392.612 1545.16,389.94 1549.89,389.051 1568.67,387.242 1587.45,387.362 1606.23,389.938 1606.24,389.94 1625.01,396.913 1635.45,403.665 1643.79,412.51 \n",
" 1647.12,417.389 1651.72,431.113 1652.28,444.838 1649.77,458.562 1644.75,472.286 1643.79,474.071 1637.28,486.011 1627.84,499.735 1625.01,503.144 1616.18,513.459 \n",
" 1606.23,523.54 1602.46,527.184 1587.45,540.083 1586.42,540.908 1568.67,553.909 1567.59,554.632 1549.89,565.706 1545.2,568.357 1531.1,575.882 1518,582.081 \n",
" 1512.32,584.666 1493.54,591.984 1481.72,595.805 1474.76,598.009 1455.98,602.538 1437.2,605.618 1418.42,606.993 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#eb1300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1455.98,578.719 1437.2,580.433 1418.42,579.181 1399.64,573.46 1391.34,568.357 1380.86,555.937 1380.13,554.632 1377.54,540.908 1379.27,527.184 1380.86,523.003 \n",
" 1384.64,513.459 1392.89,499.735 1399.64,491.069 1403.81,486.011 1417.46,472.286 1418.42,471.46 1434.54,458.562 1437.2,456.662 1455.41,444.838 1455.98,444.498 \n",
" 1474.76,434.761 1483,431.113 1493.54,426.755 1512.32,420.53 1525.4,417.389 1531.1,416.086 1549.89,413.911 1568.67,414.211 1584.98,417.389 1587.45,418.097 \n",
" 1606.23,430.198 1607.09,431.113 1613.55,444.838 1614.33,458.562 1611.16,472.286 1606.23,483.107 1604.84,486.011 1595.36,499.735 1587.45,508.984 1583.36,513.459 \n",
" 1568.67,527.103 1568.57,527.184 1550.14,540.908 1549.89,541.082 1531.1,552.38 1526.82,554.632 1512.32,561.653 1496.04,568.357 1493.54,569.324 1474.76,574.867 \n",
" 1455.98,578.719 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fb3e00; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1474.76,544.71 1455.98,545.839 1437.2,541.481 1436.26,540.908 1427.07,527.184 1427.99,513.459 1434.42,499.735 1437.2,496.212 1446.32,486.011 1455.98,477.568 \n",
" 1463.07,472.286 1474.76,465.068 1487.68,458.562 1493.54,456.008 1512.32,450.465 1531.1,447.996 1549.89,450.955 1561.25,458.562 1566.09,472.286 1562.27,486.011 \n",
" 1553.76,499.735 1549.89,503.981 1540.03,513.459 1531.1,520.366 1520.7,527.184 1512.32,531.822 1493.54,540.124 1490.71,540.908 1474.76,544.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#480000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1352.21,897.74 1343.29,900.21 1324.51,906.993 1314.79,911.465 1305.73,915.692 1289.35,925.189 1286.95,926.7 1270.14,938.913 1268.17,940.574 1254.9,952.638 \n",
" 1249.39,958.879 1242.82,966.362 1233.42,980.086 1230.61,985.509 1225.86,993.811 1220.17,1007.54 1216.52,1021.26 1214.64,1034.98 1214.42,1048.71 1215.84,1062.43 \n",
" 1219.04,1076.16 1224.31,1089.88 1230.61,1101.09 1231.78,1103.61 1240.06,1117.33 1249.39,1128.88 1250.94,1131.05 1262.78,1144.78 1268.17,1149.95 1276.54,1158.5 \n",
" 1286.95,1167.52 1292.28,1172.23 1305.73,1182.71 1309.97,1185.95 1324.51,1196.13 1329.86,1199.68 1343.29,1208.11 1352.53,1213.4 1362.07,1218.77 1378.94,1227.12 \n",
" 1380.86,1228.09 1399.64,1236.79 1410.01,1240.85 1418.42,1244.35 1437.2,1251.08 1448.92,1254.57 1455.98,1256.91 1474.76,1262.21 1493.54,1266.41 1504.05,1268.3 \n",
" 1512.32,1270.04 1531.1,1273.17 1549.89,1275.42 1568.67,1276.89 1587.45,1277.62 1606.23,1277.61 1625.01,1276.83 1643.79,1275.19 1662.57,1272.57 1681.35,1268.79 \n",
" 1683.3,1268.3 1700.13,1264.31 1718.92,1258.34 1728.4,1254.57 1737.7,1250.83 1756.48,1241.34 1757.34,1240.85 1775.26,1229.52 1778.57,1227.12 1794.04,1213.93 \n",
" 1794.62,1213.4 1807.31,1199.68 1812.82,1191.71 1816.85,1185.95 1824.1,1172.23 1828.94,1158.5 1831.6,1145.97 1831.89,1144.78 1833.4,1131.05 1833.14,1117.33 \n",
" 1831.6,1106.55 1831.25,1103.61 1828.22,1089.88 1823.63,1076.16 1817.27,1062.43 1812.82,1054.94 1809.49,1048.71 1800.35,1034.98 1794.04,1027.27 1789.4,1021.26 \n",
" 1776.6,1007.54 1775.26,1006.25 1762.37,993.811 1756.48,988.836 1745.86,980.086 1737.7,973.976 1726.93,966.362 1718.92,961.033 1705.12,952.638 1700.13,949.685 \n",
" 1681.35,939.692 1679.74,938.913 1662.57,930.443 1649.89,925.189 1643.79,922.521 1625.01,915.318 1612.91,911.465 1606.23,909.111 1587.45,903.424 1568.67,898.893 \n",
" 1562.92,897.74 1549.89,894.666 1531.1,891.146 1512.32,888.482 1493.54,886.574 1474.76,885.363 1455.98,884.832 1437.2,885 1418.42,885.931 1399.64,887.739 \n",
" 1380.86,890.606 1362.07,894.808 1352.21,897.74 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#620100; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1398.51,911.465 1380.86,914.996 1362.07,920.281 1348.9,925.189 1343.29,927.313 1324.51,936.226 1319.79,938.913 1305.73,947.812 1299.16,952.638 1286.95,963.343 \n",
" 1283.77,966.362 1272.03,980.086 1268.17,986.107 1263.16,993.811 1256.73,1007.54 1252.67,1021.26 1250.61,1034.98 1250.32,1048.71 1251.73,1062.43 1254.85,1076.16 \n",
" 1259.84,1089.88 1267.03,1103.61 1268.17,1105.33 1275.33,1117.33 1286.08,1131.05 1286.95,1132.01 1298.08,1144.78 1305.73,1152.05 1312.44,1158.5 1324.51,1168.53 \n",
" 1329.08,1172.23 1343.29,1182.58 1348.21,1185.95 1362.07,1194.83 1370.42,1199.68 1380.86,1205.55 1396.78,1213.4 1399.64,1214.81 1418.42,1223.21 1428.81,1227.12 \n",
" 1437.2,1230.45 1455.98,1236.79 1470.73,1240.85 1474.76,1242.06 1493.54,1246.86 1512.32,1250.58 1531.1,1253.38 1542.32,1254.57 1549.89,1255.52 1568.67,1256.97 \n",
" 1587.45,1257.53 1606.23,1257.17 1625.01,1255.84 1635.07,1254.57 1643.79,1253.58 1662.57,1250.41 1681.35,1245.89 1696.89,1240.85 1700.13,1239.79 1718.92,1232.22 \n",
" 1728.99,1227.12 1737.7,1222.3 1751.18,1213.4 1756.48,1209.29 1767.58,1199.68 1775.26,1191.22 1779.81,1185.95 1788.92,1172.23 1794.04,1161.01 1795.23,1158.5 \n",
" 1799.63,1144.78 1801.88,1131.05 1802.22,1117.33 1800.78,1103.61 1797.56,1089.88 1794.04,1080.33 1792.68,1076.16 1786.56,1062.43 1778.33,1048.71 1775.26,1044.52 \n",
" 1768.67,1034.98 1756.73,1021.26 1756.48,1021.01 1743.36,1007.54 1737.7,1002.54 1727.55,993.811 1718.92,987.182 1709.13,980.086 1700.13,974.037 1687.63,966.362 \n",
" 1681.35,962.658 1662.57,952.845 1662.14,952.638 1643.79,943.854 1631.43,938.913 1625.01,936.235 1606.23,929.447 1591.81,925.189 1587.45,923.782 1568.67,918.617 \n",
" 1549.89,914.564 1531.22,911.465 1531.1,911.443 1512.32,908.665 1493.54,906.807 1474.76,905.817 1455.98,905.691 1437.2,906.474 1418.42,908.263 1399.64,911.224 \n",
" 1398.51,911.465 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#7c0200; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1423.09,925.189 1418.42,925.75 1399.64,929.145 1380.86,934.069 1367.15,938.913 1362.07,940.776 1343.29,949.488 1337.73,952.638 1324.51,961.151 1317.59,966.362 \n",
" 1305.73,977.344 1303.01,980.086 1292.25,993.811 1286.95,1003.45 1284.68,1007.54 1279.46,1021.26 1276.65,1034.98 1275.95,1048.71 1277.2,1062.43 1280.41,1076.16 \n",
" 1285.69,1089.88 1286.95,1092.26 1292.41,1103.61 1301.27,1117.33 1305.73,1122.88 1312.03,1131.05 1324.51,1144.08 1325.18,1144.78 1340.31,1158.5 1343.29,1160.88 \n",
" 1358.2,1172.23 1362.07,1174.91 1379.4,1185.95 1380.86,1186.83 1399.64,1197.23 1404.65,1199.68 1418.42,1206.31 1435.95,1213.4 1437.2,1213.92 1455.98,1220.83 \n",
" 1474.76,1226.35 1477.9,1227.12 1493.54,1231.3 1512.32,1235.2 1531.1,1238.1 1549.89,1240.09 1562.41,1240.85 1568.67,1241.29 1587.45,1241.61 1606.23,1240.9 \n",
" 1606.78,1240.85 1625.01,1239.29 1643.79,1236.56 1662.57,1232.46 1680.08,1227.12 1681.35,1226.73 1700.13,1219.42 1712.11,1213.4 1718.92,1209.58 1733.6,1199.68 \n",
" 1737.7,1196.35 1749.09,1185.95 1756.48,1177.07 1760.3,1172.23 1768.36,1158.5 1773.52,1144.78 1775.26,1136.48 1776.47,1131.05 1777.4,1117.33 1776.27,1103.61 \n",
" 1775.26,1099.16 1773.39,1089.88 1768.83,1076.16 1762.28,1062.43 1756.48,1053.25 1753.77,1048.71 1743.56,1034.98 1737.7,1028.51 1731.18,1021.26 1718.92,1009.84 \n",
" 1716.38,1007.54 1700.13,994.628 1699.04,993.811 1681.35,981.752 1678.67,980.086 1662.57,970.635 1654.29,966.362 1643.79,961.044 1625.01,952.947 1624.2,952.638 \n",
" 1606.23,945.58 1587.45,939.65 1584.69,938.913 1568.67,934.3 1549.89,930.036 1531.1,926.798 1518.23,925.189 1512.32,924.345 1493.54,922.618 1474.76,921.862 \n",
" 1455.98,922.089 1437.2,923.368 1423.09,925.189 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#970300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1429.24,938.913 1418.42,940.56 1399.64,944.817 1380.86,950.912 1376.63,952.638 1362.07,959.085 1349.21,966.362 1343.29,970.279 1330.71,980.086 1324.51,986.259 \n",
" 1317.59,993.811 1308.46,1007.54 1305.73,1013.62 1302.3,1021.26 1298.7,1034.98 1297.5,1048.71 1298.48,1062.43 1301.58,1076.16 1305.73,1086.94 1306.77,1089.88 \n",
" 1313.61,1103.61 1322.92,1117.33 1324.51,1119.26 1334.06,1131.05 1343.29,1140.31 1347.82,1144.78 1362.07,1156.76 1364.25,1158.5 1380.86,1170.31 1383.8,1172.23 \n",
" 1399.64,1181.79 1407.43,1185.95 1418.42,1191.6 1436.88,1199.68 1437.2,1199.81 1455.98,1207.12 1474.76,1212.96 1476.46,1213.4 1493.54,1218.1 1512.32,1222.08 \n",
" 1531.1,1225 1549.89,1226.95 1553.05,1227.12 1568.67,1228.08 1587.45,1228.15 1605.6,1227.12 1606.23,1227.09 1625.01,1225.01 1643.79,1221.59 1662.57,1216.57 \n",
" 1671.54,1213.4 1681.35,1209.71 1700.13,1200.46 1701.47,1199.68 1718.92,1187.71 1721.11,1185.95 1734.92,1172.23 1737.7,1168.49 1744.71,1158.5 1751.2,1144.78 \n",
" 1754.92,1131.05 1756.31,1117.33 1755.63,1103.61 1753,1089.88 1748.38,1076.16 1741.61,1062.43 1737.7,1056.41 1732.9,1048.71 1722,1034.98 1718.92,1031.73 \n",
" 1708.9,1021.26 1700.13,1013.51 1693.06,1007.54 1681.35,998.796 1674.13,993.811 1662.57,986.481 1651.27,980.086 1643.79,976.043 1625.01,967.216 1622.94,966.362 \n",
" 1606.23,959.452 1587.45,953.157 1585.61,952.638 1568.67,947.596 1549.89,943.227 1531.1,939.94 1522.85,938.913 1512.32,937.454 1493.54,935.891 1474.76,935.373 \n",
" 1455.98,935.932 1437.2,937.662 1429.24,938.913 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#b20500; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1425.87,952.638 1418.42,954.072 1399.64,959.279 1381.6,966.362 1380.86,966.687 1362.07,976.959 1357.42,980.086 1343.29,991.858 1341.24,993.811 1330.1,1007.54 \n",
" 1324.51,1017.91 1322.76,1021.26 1318.32,1034.98 1316.56,1048.71 1317.2,1062.43 1320.12,1076.16 1324.51,1087.67 1325.3,1089.88 1332.36,1103.61 1341.99,1117.33 \n",
" 1343.29,1118.85 1353.76,1131.05 1362.07,1138.99 1368.36,1144.78 1380.86,1154.65 1386.09,1158.5 1399.64,1167.45 1407.71,1172.23 1418.42,1178.16 1434.71,1185.95 \n",
" 1437.2,1187.11 1455.98,1194.77 1470.75,1199.68 1474.76,1201.03 1493.54,1206.32 1512.32,1210.36 1531.1,1213.28 1532.24,1213.4 1549.89,1215.36 1568.67,1216.31 \n",
" 1587.45,1216.12 1606.23,1214.7 1615.2,1213.4 1625.01,1212 1643.79,1207.84 1662.57,1201.77 1667.63,1199.68 1681.35,1193.34 1693.86,1185.95 1700.13,1181.47 \n",
" 1711.11,1172.23 1718.92,1163.45 1722.92,1158.5 1730.83,1144.78 1735.51,1131.05 1737.52,1117.33 1737.21,1103.61 1734.75,1089.88 1730.13,1076.16 1723.23,1062.43 \n",
" 1718.92,1055.99 1714.14,1048.71 1702.66,1034.98 1700.13,1032.45 1688.67,1021.26 1681.35,1015.18 1671.55,1007.54 1662.57,1001.3 1650.67,993.811 1643.79,989.793 \n",
" 1625.01,980.217 1624.72,980.086 1606.23,971.959 1590.61,966.362 1587.45,965.215 1568.67,959.467 1549.89,955.012 1536.59,952.638 1531.1,951.587 1512.32,949.077 \n",
" 1493.54,947.685 1474.76,947.404 1455.98,948.294 1437.2,950.479 1425.87,952.638 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ce0900; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1420.49,966.362 1418.42,966.869 1399.64,973.244 1385.05,980.086 1380.86,982.399 1364.36,993.811 1362.07,995.859 1350.78,1007.54 1343.29,1018.96 1341.89,1021.26 \n",
" 1336.48,1034.98 1334.1,1048.71 1334.35,1062.43 1337.06,1076.16 1342.23,1089.88 1343.29,1091.81 1349.57,1103.61 1359.52,1117.33 1362.07,1120.17 1372.04,1131.05 \n",
" 1380.86,1138.97 1387.7,1144.78 1399.64,1153.55 1407.05,1158.5 1418.42,1165.39 1431.34,1172.23 1437.2,1175.16 1455.98,1183.26 1463.45,1185.95 1474.76,1190 \n",
" 1493.54,1195.4 1512.32,1199.53 1513.26,1199.68 1531.1,1202.68 1549.89,1204.63 1568.67,1205.4 1587.45,1204.92 1606.23,1203.1 1625.01,1199.74 1625.27,1199.68 \n",
" 1643.79,1194.67 1662.57,1187.31 1665.33,1185.95 1681.35,1176.66 1687.54,1172.23 1700.13,1160.53 1702.05,1158.5 1711.59,1144.78 1717.37,1131.05 1718.92,1123.43 \n",
" 1720.15,1117.33 1720.26,1103.61 1718.92,1096 1717.91,1089.88 1713.31,1076.16 1706.28,1062.43 1700.13,1053.58 1696.76,1048.71 1684.67,1034.98 1681.35,1031.84 \n",
" 1669.63,1021.26 1662.57,1015.79 1650.97,1007.54 1643.79,1002.95 1627.64,993.811 1625.01,992.417 1606.23,983.649 1597.09,980.086 1587.45,976.38 1568.67,970.467 \n",
" 1551.9,966.362 1549.89,965.852 1531.1,962.231 1512.32,959.827 1493.54,958.597 1474.76,958.561 1455.98,959.806 1437.2,962.493 1420.49,966.362 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#eb1300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1416.62,980.086 1399.64,987.351 1388.35,993.811 1380.86,999.2 1371.29,1007.54 1362.07,1018.95 1360.41,1021.26 1353.85,1034.98 1350.73,1048.71 1350.54,1062.43 \n",
" 1353.03,1076.16 1358.13,1089.88 1362.07,1096.88 1365.82,1103.61 1376.18,1117.33 1380.86,1122.26 1389.57,1131.05 1399.64,1139.48 1406.5,1144.78 1418.42,1152.81 \n",
" 1427.95,1158.5 1437.2,1163.55 1455.89,1172.23 1455.98,1172.27 1474.76,1179.43 1493.54,1185.05 1497.42,1185.95 1512.32,1189.46 1531.1,1192.57 1549.89,1194.41 \n",
" 1568.67,1194.98 1587.45,1194.19 1606.23,1191.9 1625.01,1187.85 1631.17,1185.95 1643.79,1181.6 1662.57,1172.49 1663.01,1172.23 1681.26,1158.5 1681.35,1158.41 \n",
" 1692.85,1144.78 1699.97,1131.05 1700.13,1130.44 1703.6,1117.33 1704.21,1103.61 1702.08,1089.88 1700.13,1084.28 1697.4,1076.16 1690.22,1062.43 1681.35,1050.23 \n",
" 1680.23,1048.71 1667.42,1034.98 1662.57,1030.69 1651.14,1021.26 1643.79,1016.02 1630.53,1007.54 1625.01,1004.33 1606.23,994.867 1603.78,993.811 1587.45,987.093 \n",
" 1568.67,980.91 1565.52,980.086 1549.89,975.976 1531.1,972.372 1512.32,970.042 1493.54,968.964 1474.76,969.19 1455.98,970.845 1437.2,974.144 1418.42,979.412 \n",
" 1416.62,980.086 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fb3e00; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1414.99,993.811 1399.64,1002.4 1392.51,1007.54 1380.86,1019.04 1378.94,1021.26 1370.93,1034.98 1366.89,1048.71 1366.19,1062.43 1368.44,1076.16 1373.52,1089.88 \n",
" 1380.86,1102.51 1381.5,1103.61 1392.43,1117.33 1399.64,1124.43 1406.82,1131.05 1418.42,1139.97 1425.39,1144.78 1437.2,1151.95 1449.74,1158.5 1455.98,1161.51 \n",
" 1474.76,1169.11 1484.38,1172.23 1493.54,1175.11 1512.32,1179.64 1531.1,1182.76 1549.89,1184.51 1568.67,1184.87 1587.45,1183.71 1606.23,1180.81 1625.01,1175.85 \n",
" 1634.54,1172.23 1643.79,1168.06 1659.46,1158.5 1662.57,1155.99 1674,1144.78 1681.35,1133.57 1682.83,1131.05 1687.41,1117.33 1688.6,1103.61 1686.78,1089.88 \n",
" 1682.1,1076.16 1681.35,1074.79 1674.64,1062.43 1664.19,1048.71 1662.57,1047.01 1650.42,1034.98 1643.79,1029.57 1632.6,1021.26 1625.01,1016.35 1609.4,1007.54 \n",
" 1606.23,1005.9 1587.45,997.585 1576.93,993.811 1568.67,990.952 1549.89,985.86 1531.1,982.196 1513.9,980.086 1512.32,979.889 1493.54,978.947 1474.76,979.487 \n",
" 1469.38,980.086 1455.98,981.66 1437.2,985.766 1418.42,992.235 1414.99,993.811 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fe6600; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1415.7,1007.54 1399.64,1019.85 1398.15,1021.26 1388.17,1034.98 1382.94,1048.71 1381.59,1062.43 1383.59,1076.16 1388.71,1089.88 1396.96,1103.61 1399.64,1106.88 \n",
" 1408.66,1117.33 1418.42,1126.2 1424.29,1131.05 1437.2,1140 1445.13,1144.78 1455.98,1150.58 1473.84,1158.5 1474.76,1158.88 1493.54,1165.22 1512.32,1169.94 \n",
" 1525.7,1172.23 1531.1,1173.14 1549.89,1174.8 1568.67,1174.89 1587.45,1173.27 1593.2,1172.23 1606.23,1169.58 1625.01,1163.3 1635.02,1158.5 1643.79,1153.13 \n",
" 1654.28,1144.78 1662.57,1134.99 1665.41,1131.05 1671.22,1117.33 1673.12,1103.61 1671.65,1089.88 1667.03,1076.16 1662.57,1068.2 1659.25,1062.43 1648.17,1048.71 \n",
" 1643.79,1044.45 1633.2,1034.98 1625.01,1028.9 1613.35,1021.26 1606.23,1017.16 1587.45,1008.02 1586.23,1007.54 1568.67,1000.98 1549.89,995.613 1541.07,993.811 \n",
" 1531.1,991.812 1512.32,989.551 1493.54,988.831 1474.76,989.755 1455.98,992.528 1450.84,993.811 1437.2,997.719 1418.42,1005.96 1415.7,1007.54 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ff8700; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1419.07,1021.26 1418.42,1021.81 1406.16,1034.98 1399.64,1047.87 1399.27,1048.71 1397.15,1062.43 1398.76,1076.16 1399.64,1078.51 1403.97,1089.88 1412.66,1103.61 \n",
" 1418.42,1110.15 1425.28,1117.33 1437.2,1127.13 1442.62,1131.05 1455.98,1139.2 1466.91,1144.78 1474.76,1148.35 1493.54,1155.2 1505.65,1158.5 1512.32,1160.22 \n",
" 1531.1,1163.42 1549.89,1164.94 1568.67,1164.68 1587.45,1162.45 1603.89,1158.5 1606.23,1157.83 1625.01,1149.48 1632.52,1144.78 1643.79,1134.75 1647.12,1131.05 \n",
" 1654.62,1117.33 1657.47,1103.61 1656.4,1089.88 1651.8,1076.16 1643.79,1062.46 1643.77,1062.43 1631.76,1048.71 1625.01,1042.74 1615.22,1034.98 1606.23,1029.05 \n",
" 1592.38,1021.26 1587.45,1018.81 1568.67,1011.16 1557.1,1007.54 1549.89,1005.42 1531.1,1001.55 1512.32,999.343 1493.54,998.871 1474.76,1000.3 1455.98,1003.93 \n",
" 1444.81,1007.54 1437.2,1010.57 1419.07,1021.26 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ffa400; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1444.58,1021.26 1437.2,1025.61 1425.86,1034.98 1418.42,1045.52 1416.59,1048.71 1413.36,1062.43 1414.5,1076.16 1418.42,1086.77 1419.63,1089.88 1429.01,1103.61 \n",
" 1437.2,1112.1 1442.87,1117.33 1455.98,1126.83 1462.88,1131.05 1474.76,1137.2 1493.18,1144.78 1493.54,1144.91 1512.32,1150.08 1531.1,1153.38 1549.89,1154.76 \n",
" 1568.67,1154.03 1587.45,1150.89 1606.23,1144.81 1606.29,1144.78 1625.01,1132.79 1627.01,1131.05 1637.03,1117.33 1641.24,1103.61 1640.71,1089.88 1636.08,1076.16 \n",
" 1627.6,1062.43 1625.01,1059.52 1614.41,1048.71 1606.23,1042.25 1595.55,1034.98 1587.45,1030.38 1568.67,1021.67 1567.5,1021.26 1549.89,1015.66 1531.1,1011.57 \n",
" 1512.32,1009.38 1493.54,1009.23 1474.76,1011.4 1455.98,1016.35 1444.58,1021.26 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ffbe03; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1449.26,1034.98 1437.2,1046.74 1435.69,1048.71 1430.82,1062.43 1431.27,1076.16 1436.33,1089.88 1437.2,1091.15 1446.65,1103.61 1455.98,1112.2 1462.52,1117.33 \n",
" 1474.76,1124.84 1487.43,1131.05 1493.54,1133.59 1512.32,1139.28 1531.1,1142.8 1549.89,1143.99 1568.67,1142.53 1587.45,1137.85 1602.37,1131.05 1606.23,1128.4 \n",
" 1617.38,1117.33 1623.75,1103.61 1624.07,1089.88 1619.38,1076.16 1610.17,1062.43 1606.23,1058.43 1595.21,1048.71 1587.45,1043.42 1572.33,1034.98 1568.67,1033.27 \n",
" 1549.89,1026.59 1531.1,1022.09 1523.85,1021.26 1512.32,1020.06 1493.54,1020.39 1487.59,1021.26 1474.76,1023.65 1455.98,1030.92 1449.26,1034.98 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#ffd909; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1459.05,1048.71 1455.98,1052.68 1450.69,1062.43 1450.01,1076.16 1455.06,1089.88 1455.98,1091.11 1466.91,1103.61 1474.76,1109.77 1486.81,1117.33 1493.54,1120.62 \n",
" 1512.32,1127.21 1530.88,1131.05 1531.1,1131.09 1549.89,1131.75 1555.94,1131.05 1568.67,1129.03 1587.45,1121.3 1593.18,1117.33 1603.5,1103.61 1605.36,1089.88 \n",
" 1600.65,1076.16 1590.37,1062.43 1587.45,1059.85 1572.11,1048.71 1568.67,1046.78 1549.89,1038.91 1535.59,1034.98 1531.1,1033.95 1512.32,1032.22 1493.54,1033.32 \n",
" 1486.23,1034.98 1474.76,1038.76 1459.05,1048.71 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1602)\" style=\"stroke:#fff120; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1476.26,1062.43 1474.76,1066.91 1472.82,1076.16 1474.76,1081.51 1478.59,1089.88 1493.08,1103.61 1493.54,1103.89 1512.32,1112.02 1531.1,1116.43 1549.89,1116.17 \n",
" 1568.67,1109.51 1576.26,1103.61 1581.7,1089.88 1577.39,1076.16 1568.67,1066.17 1564.28,1062.43 1549.89,1054.69 1532.23,1048.71 1531.1,1048.42 1512.32,1047.13 \n",
" 1501.03,1048.71 1493.54,1050.49 1476.26,1062.43 \n",
" \"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1527.17\" cy=\"613.554\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1527.17\" cy=\"613.554\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1618.37\" cy=\"637.403\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1618.37\" cy=\"637.403\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1549.18\" cy=\"492.819\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1549.18\" cy=\"492.819\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1823.98\" cy=\"418.189\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1823.98\" cy=\"418.189\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1293.93\" cy=\"522.355\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1293.93\" cy=\"522.355\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1375.62\" cy=\"389.369\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1375.62\" cy=\"389.369\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1545.21\" cy=\"437.334\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1545.21\" cy=\"437.334\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1722.25\" cy=\"205.487\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1722.25\" cy=\"205.487\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1906.92\" cy=\"161.573\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1906.92\" cy=\"161.573\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1526.94\" cy=\"482.377\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1526.94\" cy=\"482.377\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1030.32\" cy=\"554.788\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1030.32\" cy=\"554.788\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1489.87\" cy=\"657.078\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1489.87\" cy=\"657.078\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1499.59\" cy=\"451.447\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1499.59\" cy=\"451.447\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1483.76\" cy=\"582.757\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1483.76\" cy=\"582.757\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1665.71\" cy=\"384.646\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1665.71\" cy=\"384.646\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1144.08\" cy=\"612.56\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1144.08\" cy=\"612.56\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1296.99\" cy=\"593.963\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1296.99\" cy=\"593.963\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1647.5\" cy=\"374.898\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1647.5\" cy=\"374.898\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1572.15\" cy=\"344.795\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1572.15\" cy=\"344.795\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1584.83\" cy=\"460.947\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1584.83\" cy=\"460.947\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1723.37\" cy=\"427.81\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1723.37\" cy=\"427.81\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1503.28\" cy=\"549.899\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1503.28\" cy=\"549.899\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1381.74\" cy=\"694.884\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1381.74\" cy=\"694.884\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1409.85\" cy=\"533.465\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1409.85\" cy=\"533.465\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1098.28\" cy=\"459.024\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1098.28\" cy=\"459.024\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1726.43\" cy=\"507.417\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1726.43\" cy=\"507.417\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1588.12\" cy=\"483.037\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1588.12\" cy=\"483.037\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1567.05\" cy=\"414.612\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1567.05\" cy=\"414.612\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1347.27\" cy=\"756.69\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1347.27\" cy=\"756.69\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1669.27\" cy=\"430.175\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1669.27\" cy=\"430.175\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1514.45\" cy=\"458.399\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1514.45\" cy=\"458.399\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1311.54\" cy=\"610.333\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1311.54\" cy=\"610.333\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1805.56\" cy=\"170.488\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1805.56\" cy=\"170.488\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1536.92\" cy=\"488.447\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1536.92\" cy=\"488.447\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1564.73\" cy=\"549.975\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1564.73\" cy=\"549.975\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1702.37\" cy=\"441.05\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1702.37\" cy=\"441.05\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1506.65\" cy=\"539.098\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1506.65\" cy=\"539.098\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1652.65\" cy=\"414.633\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1652.65\" cy=\"414.633\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1420.77\" cy=\"400.461\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1420.77\" cy=\"400.461\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1577.53\" cy=\"727.214\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1577.53\" cy=\"727.214\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1520.58\" cy=\"697.071\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1520.58\" cy=\"697.071\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1332.45\" cy=\"541.926\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1332.45\" cy=\"541.926\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1433.03\" cy=\"478.789\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1433.03\" cy=\"478.789\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1265.09\" cy=\"535.391\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1265.09\" cy=\"535.391\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1216.93\" cy=\"571.591\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1216.93\" cy=\"571.591\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1523.05\" cy=\"264.036\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1523.05\" cy=\"264.036\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1861.56\" cy=\"467.108\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1861.56\" cy=\"467.108\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1352.53\" cy=\"347.268\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1352.53\" cy=\"347.268\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1643.12\" cy=\"627.204\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1643.12\" cy=\"627.204\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1424.76\" cy=\"378.492\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1424.76\" cy=\"378.492\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"744.78\" cy=\"1255.09\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"744.78\" cy=\"1255.09\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"829.626\" cy=\"1131.53\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"829.626\" cy=\"1131.53\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"565.594\" cy=\"1006.35\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"565.594\" cy=\"1006.35\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"630.033\" cy=\"856.299\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"630.033\" cy=\"856.299\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"503.591\" cy=\"1047.29\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"503.591\" cy=\"1047.29\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"565.069\" cy=\"898.903\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"565.069\" cy=\"898.903\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"774.791\" cy=\"824.405\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"774.791\" cy=\"824.405\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1012.52\" cy=\"1147.51\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1012.52\" cy=\"1147.51\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"755.838\" cy=\"972.426\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"755.838\" cy=\"972.426\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"926.381\" cy=\"1076.57\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"926.381\" cy=\"1076.57\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"749.54\" cy=\"1200.52\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"749.54\" cy=\"1200.52\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"896.665\" cy=\"905.91\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"896.665\" cy=\"905.91\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"792.897\" cy=\"920.357\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"792.897\" cy=\"920.357\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"445.984\" cy=\"924.533\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"445.984\" cy=\"924.533\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"767.938\" cy=\"966.026\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"767.938\" cy=\"966.026\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"932.463\" cy=\"1137.54\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"932.463\" cy=\"1137.54\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"684.427\" cy=\"1042.1\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"684.427\" cy=\"1042.1\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"860.693\" cy=\"1043.04\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"860.693\" cy=\"1043.04\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"903.061\" cy=\"1087.55\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"903.061\" cy=\"1087.55\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"573.676\" cy=\"1026.54\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"573.676\" cy=\"1026.54\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1001.61\" cy=\"1085.8\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1001.61\" cy=\"1085.8\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1236.98\" cy=\"1028.72\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1236.98\" cy=\"1028.72\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"690.988\" cy=\"1019.48\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"690.988\" cy=\"1019.48\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"478.159\" cy=\"823.366\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"478.159\" cy=\"823.366\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"786.812\" cy=\"1105.11\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"786.812\" cy=\"1105.11\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1071.18\" cy=\"825.025\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1071.18\" cy=\"825.025\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"979.89\" cy=\"1024.38\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"979.89\" cy=\"1024.38\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"625.221\" cy=\"919.38\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"625.221\" cy=\"919.38\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"493.582\" cy=\"1099.29\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"493.582\" cy=\"1099.29\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"858.796\" cy=\"1071.81\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"858.796\" cy=\"1071.81\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1634.97\" cy=\"1189.26\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1634.97\" cy=\"1189.26\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1627.68\" cy=\"1113.39\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1627.68\" cy=\"1113.39\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1588.9\" cy=\"1065.83\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1588.9\" cy=\"1065.83\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1487.21\" cy=\"1281.39\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1487.21\" cy=\"1281.39\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1454.34\" cy=\"1006.7\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1454.34\" cy=\"1006.7\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1564.24\" cy=\"1123.21\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1564.24\" cy=\"1123.21\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1635.84\" cy=\"1011.4\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1635.84\" cy=\"1011.4\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1437.72\" cy=\"1096.48\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1437.72\" cy=\"1096.48\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1546.51\" cy=\"1160.71\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1546.51\" cy=\"1160.71\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1688.28\" cy=\"988.055\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1688.28\" cy=\"988.055\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1723.34\" cy=\"1188.11\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1723.34\" cy=\"1188.11\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1827.34\" cy=\"1023.57\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1827.34\" cy=\"1023.57\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1179.99\" cy=\"724.405\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1179.99\" cy=\"724.405\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1362.86\" cy=\"1008.04\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1362.86\" cy=\"1008.04\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1413.78\" cy=\"1245.68\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1413.78\" cy=\"1245.68\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1596.21\" cy=\"1146.5\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1596.21\" cy=\"1146.5\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1556.88\" cy=\"1030.01\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1556.88\" cy=\"1030.01\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1226.67\" cy=\"958.485\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1226.67\" cy=\"958.485\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1533.84\" cy=\"1064.19\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1533.84\" cy=\"1064.19\" r=\"7\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1411.9\" cy=\"926.871\" r=\"10\"/>\n",
"<circle clip-path=\"url(#clip1602)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1411.9\" cy=\"926.871\" r=\"7\"/>\n",
"<defs>\n",
" <clipPath id=\"clip1603\">\n",
" <rect x=\"2160\" y=\"47\" width=\"73\" height=\"1441\"/>\n",
" </clipPath>\n",
"</defs>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#320000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,1397.46 2232.76,1397.46 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#490000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,1307.45 2232.76,1307.45 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#640100; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,1217.43 2232.76,1217.43 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#7d0200; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,1127.42 2232.76,1127.42 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#980300; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,1037.4 2232.76,1037.4 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#b40500; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,947.388 2232.76,947.388 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#d00900; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,857.374 2232.76,857.374 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#ed1500; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,767.359 2232.76,767.359 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#fb3e00; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,677.345 2232.76,677.345 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#fe6600; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,587.331 2232.76,587.331 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#ff8700; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,497.316 2232.76,497.316 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#ffa400; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,407.302 2232.76,407.302 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#ffbe03; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,317.287 2232.76,317.287 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#ffd909; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,227.273 2232.76,227.273 \n",
" \"/>\n",
"<polyline clip-path=\"url(#clip1603)\" style=\"stroke:#fff120; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2160.76,137.259 2232.76,137.259 \n",
" \"/>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 1350.46)\" x=\"2268.76\" y=\"1350.46\">0.01</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 1199.79)\" x=\"2268.76\" y=\"1199.79\">0.02</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 1049.11)\" x=\"2268.76\" y=\"1049.11\">0.03</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 898.444)\" x=\"2268.76\" y=\"898.444\">0.04</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 747.774)\" x=\"2268.76\" y=\"747.774\">0.05</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 597.103)\" x=\"2268.76\" y=\"597.103\">0.06</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 446.433)\" x=\"2268.76\" y=\"446.433\">0.07</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 295.762)\" x=\"2268.76\" y=\"295.762\">0.08</text>\n",
"</g>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#ffffff; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 2268.76, 145.092)\" x=\"2268.76\" y=\"145.092\">0.09</text>\n",
"</g>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 2232.76,1487.47 2232.76,1336.8 2256.76,1336.8 2232.76,1336.8 2232.76,1186.13 2256.76,1186.13 2232.76,1186.13 2232.76,1035.46 2256.76,1035.46 2232.76,1035.46 \n",
" 2232.76,884.793 2256.76,884.793 2232.76,884.793 2232.76,734.122 2256.76,734.122 2232.76,734.122 2232.76,583.452 2256.76,583.452 2232.76,583.452 2232.76,432.782 \n",
" 2256.76,432.782 2232.76,432.782 2232.76,282.111 2256.76,282.111 2232.76,282.111 2232.76,131.441 2256.76,131.441 2232.76,131.441 2232.76,47.2441 \n",
" \"/>\n",
"<path clip-path=\"url(#clip1600)\" d=\"\n",
"M1749.93 251.724 L2040.76 251.724 L2040.76 130.764 L1749.93 130.764 Z\n",
" \" fill=\"#363c46\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
"<polyline clip-path=\"url(#clip1600)\" style=\"stroke:#ffffff; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
" 1749.93,251.724 2040.76,251.724 2040.76,130.764 1749.93,130.764 1749.93,251.724 \n",
" \"/>\n",
"<circle clip-path=\"url(#clip1600)\" style=\"fill:#adb2b7; stroke:none; fill-opacity:0.1\" cx=\"1857.93\" cy=\"191.244\" r=\"25\"/>\n",
"<circle clip-path=\"url(#clip1600)\" style=\"fill:#eca25c; stroke:none; fill-opacity:0.1\" cx=\"1857.93\" cy=\"191.244\" r=\"21\"/>\n",
"<g clip-path=\"url(#clip1600)\">\n",
"<text style=\"fill:#adadad; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1941.93, 208.744)\" x=\"1941.93\" y=\"208.744\">y2</text>\n",
"</g>\n",
"</svg>\n"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"contour(range(-5,5,length=100), range(-5,5,length=100), (x,y)->begin\n",
" mean([pdf(dist, [x;y]) for dist in dist_arr_fit])\n",
" end)\n",
"scatter!(data[1,:], data[2,:], alpha=0.1, markersize=2)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.3.1",
"language": "julia",
"name": "julia-1.3"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.3.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment