pyerrors/examples/04_fit_example.ipynb

728 lines
205 KiB
Text
Raw Permalink Normal View History

2021-10-11 18:31:02 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib\n",
"import matplotlib.pyplot as plt\n",
"import pyerrors as pe\n",
"import scipy.optimize\n",
"from scipy.linalg import cholesky\n",
"from scipy.stats import norm"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"plt.style.use('./base_style.mplstyle')\n",
"import shutil\n",
"usetex = shutil.which('latex') not in ('', None)\n",
"plt.rc('text', usetex=usetex)"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Read data from the pcac example"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Data has been written using pyerrors 2.0.0.\n",
"Format version 0.1\n",
"Written by fjosw on 2022-01-06 11:27:34 +0100 on host XPS139305, Linux-5.11.0-44-generic-x86_64-with-glibc2.29\n",
"\n",
"Description: SF correlation function f_P on a test ensemble\n"
]
}
],
2021-10-11 18:31:02 +01:00
"source": [
"fP = pe.Corr(pe.input.json.load_json(\"./data/f_P\"), padding=[1, 1])\n",
"fP.gamma_method()"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now define a custom fit function, in this case a single exponential. __Here we need to use the autograd wrapped version of np__ (imported as anp) to use automatic differentiation."
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import autograd.numpy as anp\n",
"def func_exp(a, x):\n",
" y = a[1] * anp.exp(-a[0] * x)\n",
" return y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit single exponential to f_P. The kwarg `resplot` generates a figure which visualizes the fit with residuals."
]
},
{
"cell_type": "code",
"execution_count": 5,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fit with 2 parameters\n",
"Method: Levenberg-Marquardt\n",
"`xtol` termination condition is satisfied.\n",
"chisquare/d.o.f.: 0.0023324250917750268\n",
"fit parameters [ 0.20362603 16.25660947]\n",
"\n",
" Goodness of fit:\n",
"χ²/d.o.f. = 0.002332\n",
"p-value = 1.0000\n",
"Fit parameters:\n",
"0\t 0.2036(92)\n",
"1\t 16.3(1.3)\n",
"\n"
2021-10-11 18:31:02 +01:00
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAt0AAAHJCAYAAABZmIXiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABX0klEQVR4nO3deXiU5b3/8fckQEAgGxhUFskAikutBHBvXSDa1ta2AqK1Pdqqwbb2uNQSOef82nq6cJJqq7a1JtbW9tRWSLS1tcsxAa1aWwtES9WikgGEuCCESRAxLJnfHw8ZEpJACElmkrxf1zVXMvPMM/NNeJj5zDf3c9+hWCwWQ5IkSVK3SUl0AZIkSVJfZ+iWJEmSupmhW5IkSepmhm5JkiSpmxm6JUmSpG5m6JYkSZK6maFbkiRJ6maGbkmSJKmbGbolSZKkbmboliRJkrrZgEQX0CQajbJ48WIAqquriUQi3HvvvWRmZu53v+Li4vh9otEo8+fP7+ZKJUmSpIMTisVisUQXATBv3jwKCwsJh8Px65FIhIqKinb3KS4uBogH7crKSsrKyigpKen+giVJkqQOSprQnZ+fT35+fjxAFxcXs3DhQrZs2dLuPllZWaxZs6ZFNzwUCpEkP5IkSZIEJFHo3tecOXMAKCsra3N7JBJhwoQJrQJ2KBSioqKCmTNnttqnoaGBhoaG+PXGxkZqa2sZMWIEoVCoC6uXJElSfxCLxdi6dStHHXUUKSntny6ZNGO6mysvLycajbYbuCEI3W3JzMwkGo22uW3hwoXceuutXVGiJEmSFLd+/XrGjBnT7vakCt1NJ1NGo1HmzJlzwJMo25KdnU1tbW2b2xYsWMBNN90Uv15XV8e4ceNYv3496enpnS1bkiRJ/VR9fT1jx45l+PDh+71fUoXuzMxMCgoKACgtLW1zzPaBtBe4AdLS0khLS2t1e3p6uqFbkiRJnXagocpJMU93NBqlsLCwxbCQmTNnEo1GqaysbHOfpllO2nqs9rZJkiRJiZAUoTsSiVBcXNyiS90UwNvrcofDYTIzM9sc293WSZSSJElSoiRF6M7Ly2P+/PktOtSLFi0iLy8vHqCbgnlzCxYsaNEJLy8vjw9PkSRJkpJF0kwZGI1GKS0tjV+vrq6mqKgo3ukuLS2lqKiI6urqFvsVFxfHw/qyZcsoKirq8HPW19eTkZFBXV2dY7olSZJ00DqaJ5MmdCeCoVuSJEmHoqN5MimGl0iSJEl9maFbkiRJ6maGbkmSJKmbGbolSZKkbmboliRJkrpZvw/d3zovDfrvBC6SJEnqAf0+dP/HB9JIe/IbBm9JkiR1mwGJLiDRvviH7fyQeyElBh/+DqT0+88hkiRJPSISiVBSUkJpaSnZ2dnMmzcvvq26uprFixdTUFBwUIsfJisXx8nI4N2n72FIRSHkfQY+eqfBW5IkqQdNnTqVadOmUVJS0uL2qqoqSkpK4rcXFhYSiUQoKytrcb/S0lIKCgp6rN7mOro4Tr/vdAPsfN9lDBmaDo98AXbtgI//EFL91UiSJPWE7OzsNm/Py8tjwoQJ8ev5+flEo9FW96uoqEhY6O4ok2WTky+DAYPgoWtg9w64uBRSBya6KkmSpH4tMzMz/v3MmTNbbS8tLSUSifRgRZ1j6G7uxFmQOgjKPgtlV8LsnwZBXJIkKRnteBc2vZLoKgIjj4FBh3XJQ1VWVhIOhwmHw/EOdlVVVXx4SXV1dfx+FRUVRCIRiouLAZg/f36X1NDVDN37Ou5jcOkDsOgzsOjTcMnPYeDgRFclSZLU2qZXoPTsRFcRKPgzHHVylzxUWVkZhYWFLW7Ly8ujqKiIOXPmxG9r6nxHIpGkDdtNDN1tOeYCuOxX8OCn4FeXwqW/7LJPbpIkSV1m5DFB2E0GI485pN2XL19OcXExmzdvZvHixa1Cd29n6G7PxBlweTn8ci48MAc+9SCkDU90VZIkSXsNOqzLusuJNm3atHi3evr06Qmupus5N97+5H4APvMwvLkSfv5xeLc20RVJkiT1eTNnzmx3RpMDSdaTKg3dBzLuNLjit1C7Bu6/ELa+meiKJEmS+rTMzMwWs5YcjKqqqq4tposYujviqCnw2T/C9i3wkw/BlnWJrkiSJKnPqK3t/GiCcDgc725HIhHy8vK6qqwuZejuqJzJ8Lk/ATH46Yfh7SSZnkeSJKmXaprqLxKJUFlZSXFxMZWVlW3et6qqioULF7aYHhCITytYWFgYn2owGbkMfAeW7Wy50xvwv5+AbZuC8d5Hvr9ba5QkSVLy6mietNN9sNKPhCv/AJlj4f6PwWt/S3RFkiRJSnKG7s4YOgL+7bdwxInwv5+E1UsSXZEkSZKSmKG7swanw6cfgvFnBQvovPTbRFckSZKkJOXiOIdi4BCY+wD8ugDKroCP/xBO/tQBd9tY/x4btza0uz1neBo56S49L0mS1FcYug/VgEEw675gtcrffB4atsKp8/a7ywPPvsadS15td/v1MyZxY/6hLaUqSZKk5GHo7gopqfCxuyAtHf44H7a9Def+J4RCbd798lPHkX/8KABWb3yHGxY9zx1zT2ZizjAg6HRLkiSp7zB0d5VQCM7/Jgw9HCq/FgTvC78bBPJ95KQPbjV8ZGLOME4cndFT1UqSpH7Moa49z9DdlUIhOOsGGDoSfvvvwVzes+6DgR60kiQpeTjUtecZurvDlE/DYSOg7Er4xSy47Jcw2C62JElKDg517XmG7u5y7Ifh3x6BX14CP70wmF5w+KhEVyVJkuRQ1wQwdHencafBZ/8Ev7gYfnI+fObXkB1OdFWSJElJIRKJUFJSQnFxMeFwmHnzghngNm/eDMCECRMoKChIZIldxtDd3UYdD1c9Fqxced/5Qcf7yPcnuipJkqSEC4fDFBUVUVVVRTgcZv78+S22z5s3jzlz5lBWVnZQj1taWpp0Yd0VKXtC5jj43P9BxthgqMmaJwFYs2kb9z+zFoD7n1nLmk3bElikJEnqb5I9i5SUlBCNRiktLT2o/SoqKrqpos4zdPeUoSPhit/BmGnwi1n85Xc/YcbtT/Bw1QYAHq7awIzbn6Bs+foEFypJkvqDxcvX94osMmfOHAoLCzt8/9LSUiKRSDdW1DmG7p6UNgw+tZh3wh/m9OU3cXnKYzTGgk2NseBS+NBK1ibZp0xJktS3rNm0jVseWhnPH5C8WeSSSy4hGo1SVVUFQDQapbi4mPLycubNmxe/HaCyspKKigoikQjFxcUUFxfHt+1vv57gmO6eNmAQP8y+hZGNO/nGwPsZHdpM0a65xPZ8/gmFQixavp7CD01OcKGSJKmvWrx8PaFQCGKxVtuSLYtkZmYCsHz5cvLy8li4cCHz5s0jHA4ze/ZsJkyYwIoVK8jMzGTmzJlAcILmvuPD97dfT7DTnQAbog18a9en+cbOT1OQ+ih3DLybQewEIBaLsWHL9gRXKEmS+rINW7YTayNwQ/JnkUgkQmVlZfx6OBxucb2r9+sqdroTYEzWEEKhEPft/givx0Zwx8C7yRkYZd7OG9kWGsaYrCGJLlGSJPVhTVmkvU53MmWRaDQKBCEZiM9kEo1GiUQi1NbWUltbe8DH6ex+XcVOdwJcMm1s/NPlHxtP5fIdCzguZR1lg27lyNjbzJ02NsEVSpKkvqx5FtlXLBZLqiyyfPlyAKZNmwZAVVUVc+bMYfHixYTD4XgYb0/TSZUHu19XM3QnQO7IoRTNOomUEKSEYHlsMrN3fp2hofeoSP8m43cl3xm3kiSp79g3iwDx74tmncT4kUMTW2AzJSUlFBUVkZmZSTQaZcaMGSxYsICCgoL4bUC7M5ZUVVV1ar+uZuhOkDnTxrL0y+dwcd4YAE6eciqxz1UyJPtI+MmHoXppgiuUJEl92b5Z5OK8MSz98jnMSaIud3FxMdFoNH5SZCQSIRqNkpeXF79P0xCRptlIwuFwPEhHIhHy8vI6tF93C8Xa+9tCP1BfX09GRgZ1dXWkp6cnpIYXaur46Pef5tEvncWJozOg4R0ouwIiT8BFP4CTL0tIXZIkqX9olUV60P6WgY9Go0yYMKHVLCRNc3bn5+c
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 800x494.438 with 2 Axes>"
]
},
"metadata": {},
2021-10-11 18:31:02 +01:00
"output_type": "display_data"
}
],
"source": [
"start_fit = 9\n",
"stop_fit = 18\n",
2021-10-11 18:31:02 +01:00
"\n",
"fit_result = fP.fit(func_exp, [start_fit, stop_fit], resplot=True)\n",
"fit_result.gamma_method()\n",
"print(\"\\n\", fit_result)"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The covariance of the two fit parameters can be computed in the following way"
]
},
{
"cell_type": "code",
"execution_count": 6,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Covariance: 0.009831165600263978\n",
"Normalized covariance: 0.8384671240792649\n"
2021-10-11 18:31:02 +01:00
]
}
],
"source": [
2022-05-14 11:46:57 +01:00
"cov_01 = pe.fits.covariance([fit_result[0], fit_result[1]])[0, 1]\n",
2021-10-11 18:31:02 +01:00
"print('Covariance: ', cov_01)\n",
"print('Normalized covariance: ', cov_01 / fit_result[0].dvalue / fit_result[1].dvalue)"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Effective mass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculate the effective mass for comparison"
]
},
{
"cell_type": "code",
"execution_count": 7,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [],
"source": [
"m_eff_fP = fP.m_eff()\n",
"m_eff_fP.tag = r\"Effective mass of f_P\""
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculate the corresponding plateau and compare the two results"
]
},
{
"cell_type": "code",
"execution_count": 8,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fit with 1 parameter\n",
"Method: Levenberg-Marquardt\n",
"`ftol` termination condition is satisfied.\n",
"chisquare/d.o.f.: 0.13241808096938082\n",
"fit parameters [0.20567587]\n",
"\n",
"Effective mass:\t 0.2057(68)\n",
"Fitted mass:\t 0.2036(92)\n"
2021-10-11 18:31:02 +01:00
]
}
],
"source": [
"m_eff_fP.gamma_method()\n",
"m_eff_plateau = m_eff_fP.plateau([start_fit, stop_fit])\n",
2021-10-11 18:31:02 +01:00
"m_eff_plateau.gamma_method()\n",
"print()\n",
"print('Effective mass:\\t', m_eff_plateau)\n",
"print('Fitted mass:\\t', fit_result[0])"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now visualize the effective mass compared to the result of the fit"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "code",
"execution_count": 9,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAlcAAAGLCAYAAADqL7dNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/gUlEQVR4nO3dfXAj52Hn+R84L+S8kRhIpmdkzcQDyoo8O6dToBkpytrJOQId+RIlq1tyZnelurskZSBeJ2VbqQKO/uO0c1dlLlhXm7gSlRdQJd5UyXs1Q+QUr5xYZUBW4jjxWiRhlTIZK5bQVCRZMx5pwCY4L+S8sO8PunsAECBe2A0S5PdTxZrpRveDh3jp/vHp53naZ1mWJQAAALiia60rAAAAsJEQrgAAAFxEuAIAAHAR4QoAAMBFhCsAAAAXEa4AAABcRLgCAABw0da1rsBaWFxc1Lvvvqs9e/bI5/OtdXUAAEAHsCxLc3NzuuOOO9TVVbt9alOGq3fffVcHDhxY62oAAIAO9Pbbb+vOO++s+fimDFd79uyRtPTi9Pb2rnFtAABAJygWizpw4ICTI2rZlOHKvhTY29tLuAIAAE2p16WIDu0AAAAuIlwBAAC4iHAFAADgIsIVAACAiwhXAAAALiJcAQAAuIhwBQAA4CLCFQAAgIsIVwAAAC4iXAEAALiIcAUAAOAiwhUAAICLCFcAAAAuIlyh45imua7KAQCgFOEKHSUej8vv97tSViqVkmEYrpQFAIDNZ1mWtdaVaLdisai+vj7Nzs6qt7d3ravTdmNjY05AMU1TsVisoX0kKZ/PS5KSyWTDZZqmqdOnTzv7G4ahZ555ZllIisfjGhgYkCQFAgENDQ2VPZ5KpRQOhxUMBpfVS5IuXryoRCLRVL2j0eiydQAAVNNwfrA2odnZWUuSNTs7u9ZVabtEImElEglnOZPJWJFIZMV9YrFY2XIkErHC4XDDZUYiESufz9fcf2ZmxgqFQtbMzIxlWZY1NTVlVX408/n8snoODQ1ZyWTSWU4mk2V1rVdvu66ldQcAoJZG8wPhapPx+/1OiLGtlLFnZmascDhcto8dfuzAVK/McDhcFmASiYTl9/ud5UgksizgZDKZsuVYLFYW0PL5vCWp7HlnZmacdY3U2xYKhWr+/gAA2BrND1s9bkHbkLLZrDKZTN3tDh48qM9+9rNl655++mk988wz+pVf+ZUV9x0cHFQ4HHaW5+fn9dRTT9V8vBGGYcg0zap9lrLZbM3yJicnZRiGQqGQJDmX5UzTbKjMytdqYmKi7LlSqZRzudAwDIXD4WV1yWazZZf87L5Spc9r/39yclJHjx5dsd6lgsGgcrmcsx0AAKtBuGrB1atXGxppFggElq27dOmSHnzwwbr7X716ddm60n2qPV5Prc7bfr+/Zn38fr9mZmbK1mWzWUlLoWRycrKpMtPptEzT1Pj4eFmdcrmcgsGggsGgotGohoeHnYBlGMay17I0KFUGOzugrVTvUoODg8pms4QrAIArCFct2LFjR0Mj1nbv3l11XSP77tixY9m60v2qPd6qQCCgQqHQ8Pajo6NKJpMr/h6VZdqd2k3T1PDwsLNvaQuUHW4SiYQOHTrkhCPTNJcFomAwqHA4rGw263R8t8NTs/UOBAJOh3cAAFaLcNWCapetGlV5mbBRPT09y0bCuaWZYBWPx3XixAlFIpGmyvT7/c4+qVRKe/fu1fT0tPP40aNHy7Y1TdO5rGgYRtUgl8lkFI/HVSgUFAgEnABWGcTq1TsYDOrUqVMr/j4AADSKcLWJVAsdUvWWoWrS6bQGBgbKAkq9Mk3T1OjoqEZGRpyAFA6HnfBU61Kc3+9vaA6q0sBpX4YsDWq16l3KDmcAALiBSUQ3kWAwWDO01GuJsy+52QHF7sxer0zDMDQ2NrbsEqG0FKDsflaV+5um6YSkao9LS/20Kus4NDRU1spVq96Vz2XPrwUAaM6F4rzO/Hi27s+F4vxaV7VtaLnaZEZGRpTNZp2wkU6ny1p0DMNQOp0umwQ0l8spl8tpaGjICSal+61UZigUUiwWK2vhOnXqlEKhkBPoEomEs87ePxwOl43yqxauhoeHlUwmnXKSyWTZhKD16l36O7s16zsAbDZf+/5b+vKLr9fd7nMPf0RfGLy7DTVae8zQvklnaLfDzsTERNmltXQ6rXg87nTwNk1Thw4dqjryr/Sjs1KZpmkqlUo5y/l8XolEoizQpFIp5zmqzbQ+ODi4bEqHbDarXC4nv9+vfD6vaDRaNoqwkXpLSyGt2ozxAID6LhTndWFuQZJ0c9HSt86e19Mv5fXZTwzok4f3aUuXT5LUv6db/b09a1nVVWs0PxCuNmG46kRjY2NlrV1uGh4edqaGAAC05oUz53Ty+bM6N3vr8t/+vh499ehhPXJk/xrWzD2N5gf6XKEjxGIxT+4BODY2pmg06nq5ALCZvHDmnD7zbK4sWEnS+dl5febZnF44c26NarY2CFfoGCdOnFA6nXatPNM0dfHiRU9awwBgs7i5aOnk82dV7TKYve7k82d1c3HzXCgjXKFj2JOFNjJFQyNSqZRnc4cBwGbx8nRhWYtVKUvSudl5vTzd+JyKna4towXHxsaczsKmaZaNRKvGns1bknPPucoOx82WiY3BDlhu4DMDAKt3Ya6xKRYa3W4j8LzlamxsTNLSPEORSEShUKhuH5d4PK5wOKxIJKJEIqFAIKDh4eFVlQkAANzXv6exEYCNbrcReD5a0L7NSWmrk8/nWzYcvtTg4KAGBwedloWxsTGNjo4695prpcxSjBYEAMAdNxctfSzxbZ2fna/a78onaV9fj74b/2VnWoZOtS5GCxqGIdM0q84ftNJNdjOZTNklm4mJCafTcStlLiwsqFgslv0AAIDV29Ll01OPHpa0FKRK2ctPPXq444NVMzztc1Wr47F9Y95GpNNpmabpzEPUSpmjo6M6efJkQ8/nttLJ1VayESZXAwBsPheK87pz706NfOoepf7W0PuXrjmP3bZ7uyIfD+rOvTt1oTi/ac5za3L7m0AgUHavuWrsTu2maWp4eLju7NkrlTkyMqInn3zSWS4Wizpw4EDT9W4FtwUAAGxkK53n3r90TV/65muSNtd5bk3CVb1gJS21RNn3gEulUk4/q1bK7O7uVnd3d/MVdcHjDx7U4OEPOstvXLikz596RX944j7d1b/bWd+/Z23qBwDAalSe52rZTOc5T8NV6c16S5mmueJjo6OjGhkZcVqrwuGwTNNUNpt1bubbTJlrqb+3p2oz6F39u3XkQ31rUCMAANxT6zy3mXkervx+vwzDWBZ8as2KbRiGc0uS0nmspKXWrFbKXC9uLlp69R1TkvTqO6Y+ur+3rR38DMNQMplUKpVSIBAom74in88rm80qGAyW3SDZ3ufYsWOSlgYXSNLAwIAymQz35FtD2WzWef0HBwdXnAOskW3t99q+Cbf9+cjn8yoUCjpx4oSr84wBwIZleSyRSFjJZNJZHh8ftyKRiLOcz+etRCJRtk8sFlu2HAqFGi6zntnZWUuSNTs72/A+q/XNf3jX+vkvZa2fiX/D+fn5L2Wtb/7Du22rgy0UClV9vWZmZqxwOFy2LhgMWjMzM2XL9vtV+T41q/Q9tMViMWtoaGhV5W4WkqyZmRkrk8lYmUzGtW3D4XDVz0fpew8Am1Gj+cHzPlexWExjY2POPeEmJibKbsCbzWaVTCbLpl4YGRlxJgqVllquXnzxxYbLXG/sG1pWzv9h39DyK0+E2nrH8EAgUHW93+/X4OCgs5zNZuX3+8sGE/j9fqeFcLW3jslkMk6/Otvg4GDDI0k3s1wu57Ti1muxbWbblUSjUcXjcWa2B4A62tKhvfRgXHlZwZ5lvZTf7697AF+pzPWk3g0tfVq6oeXg4X1rNgeIaZoqFAoKBoMKhUJl84jVCmKrlUqlqk6rsd4v7a4n9UbQtrptvTJqzTMHAFiyJqMFN5Nmbmj50MBt7atYidKQY4cbu0VxcnKyrBXR7pczMDCgSCQiv9/v9NGx+8GVht1UKlX2XJFIRNlsVplMxulfJy2F5Vwup3g8LsM
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
2021-10-11 18:31:02 +01:00
]
},
"metadata": {},
2021-10-11 18:31:02 +01:00
"output_type": "display_data"
}
],
"source": [
"m_eff_fP.show(plateau=fit_result[0])"
2021-10-11 18:31:02 +01:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fitting with x-errors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We first generate pseudo data"
]
},
{
"cell_type": "code",
"execution_count": 10,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(Obs[-0.47(35)], Obs[-0.26(25)])\n",
"(Obs[2.44(35)], Obs[1.15(25)])\n",
"(Obs[3.68(35)], Obs[-1.23(25)])\n",
"(Obs[6.50(35)], Obs[-1.86(25)])\n",
"(Obs[7.91(35)], Obs[-0.32(25)])\n"
2021-10-11 18:31:02 +01:00
]
}
],
"source": [
"ox = []\n",
"oy = []\n",
"for i in range(0,10,2):\n",
" ox.append(pe.pseudo_Obs(i + 0.35 * np.random.normal(), 0.35, str(i)))\n",
" oy.append(pe.pseudo_Obs(np.sin(i) + 0.25 * np.random.normal() - 0.2 * i + 0.17, 0.25, str(i)))\n",
"\n",
"[o.gamma_method() for o in ox + oy]\n",
"[print(o) for o in zip(ox, oy)];"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And choose a function to fit"
]
},
{
"cell_type": "code",
"execution_count": 11,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [],
"source": [
"def func(a, x):\n",
" y = a[0] + a[1] * x + a[2] * anp.sin(x)\n",
" return y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then fit this function to the data and get the fit parameter as Obs with the function `odr_fit` which uses orthogonal distance regression."
]
},
{
"cell_type": "code",
"execution_count": 12,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fit with 3 parameters\n",
"Method: ODR\n",
"Sum of squares convergence\n",
"Residual variance: 0.49296554803718634\n",
"Parameter 1 : 0.72(56)\n",
"Parameter 2 : -0.43(16)\n",
"Parameter 3 : 2.33(84)\n"
2021-10-11 18:31:02 +01:00
]
}
],
"source": [
"beta = pe.fits.total_least_squares(ox, oy, func)\n",
2021-10-11 18:31:02 +01:00
"\n",
"for i, item in enumerate(beta):\n",
" item.gamma_method()\n",
" print('Parameter', i + 1, ':', item)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the visulization we determine the value of the fit function in a range of x values"
]
},
{
"cell_type": "code",
"execution_count": 13,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAFyCAYAAAAZNbUwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8TklEQVR4nO3deXxU1eH+8c8kQMKSSUAICgYlLCqyGUTcRSFS61LUAEXcaiVoFxTaLyntr7W2tdG0RUWrgq07IhBc0aoJCu4IRBTcWIZNEIKEyQQkgSTz++OaYDDLJMydM3Pv83698kommeQ+hjjzzLnnnuMJBoNBRERERFwoznQAEREREVNUhERERMS1VIRERETEtVSERERExLVUhERERMS1VIRERETEtVSERERExLVamQ7QlOrqarZv305SUhIej8d0HBEREYkBwWCQsrIyunXrRlxcw+M+UV+Etm/fTlpamukYIiIiEoO2bt3Kscce2+DXo74IJSUlAdZ/iNfrNZxGREREYkEgECAtLa22RzQk6otQzekwr9erIiQiIiLN0tS0Gk2WFhEREddSERIRERHXUhESERER11IREhEREddSERIRERHXUhESERER11IREhEREddSERIRERHXUhESERER11IREhEREddSERIRERHXivq9xkRsU10Nu9fD16ugbUfokwml26DwNmjdDpLT4Kh0OHao9XET+9WIiEjsURES99n+ESz/L3z5Cny72/rc0IlWEao6AGU7oKIMvlhkfT3BCzmbwBMPJRuhU0+j8UVEJHxUhMQdKvbC/hJI6QElPtjyPpxyDfQ6H44ZZI0IgVVyrl906Pv27rLuHxcP5QH492nQ7RQ4czKc8GOI09llEZFY5gkGg0HTIRoTCARITk6mtLQUr9drOo7EmqqDUPQ4LLkT0obBT+dYp8Q8nuaf6qqqhHWvwXv3WUWqWwZclAdpQ+3JLiIiLRZqf9DLWXGubSth1rnw8m+h90j40Z3W5+PiWjbfJ74VnHgx3PAqXP8KVFfCW/8Ib2YREYkonRoTZyoPwBOjrVNdk5Zap7/C6fizIHsJlJdatze+DXGt4LgzwnscERGxlYqQOEtguzXfJ9EL174ARw+0RnLsEBcP7TpZHy9/GD5fBKP+DsMm6QozEZEYoVNj4hyb3oWHzoY377Bud8+wrwQd7spH4PSb4dUceGky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
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
]
},
"metadata": {},
2021-10-11 18:31:02 +01:00
"output_type": "display_data"
}
],
"source": [
"x_t = np.arange(min(ox).value - 1, max(ox).value + 1, 0.01)\n",
"y_t = func([o.value for o in beta], x_t)\n",
"\n",
"plt.errorbar([e.value for e in ox], [e.value for e in oy], xerr=[e.dvalue for e in ox], yerr=[e.dvalue for e in oy], marker='D', lw=1, ls='none', zorder=10)\n",
"plt.plot(x_t, y_t, '--')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also take a look at how much the inidividual ensembles contribute to the uncetainty of the fit parameters"
]
},
{
"cell_type": "code",
"execution_count": 14,
2021-10-11 18:31:02 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameter 0\n",
"\n",
"Parameter 1\n",
"\n",
"Parameter 2\n",
"\n"
2021-10-11 18:31:02 +01:00
]
},
{
"data": {
"image/png": "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
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
2021-10-11 18:31:02 +01:00
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i, item in enumerate(beta):\n",
" print('Parameter', i)\n",
" item.plot_piechart()\n",
" print()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Correlated fits with a covariance of your own choosing"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"##### generate a random data set"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"def fitf(p, x):\n",
" return p[1] * anp.exp(-p[0] * x)\n",
"\n",
"num_samples = 400\n",
"N = 10\n",
"x_random = norm.rvs(size=(N, num_samples)) # generate random numbers\n",
"\n",
"r = np.zeros((N, N))\n",
"for i in range(N):\n",
" for j in range(N):\n",
" r[i, j] = np.exp(-0.8 * np.fabs(i - j)) # element in correlation matrix\n",
"\n",
"errl = np.sqrt([10.0, 2.5, 25.0, 2.8, 4.2, 4.7, 4.9, 5.1, 3.2, 4.2]) # set y errors\n",
"for i in range(N):\n",
" for j in range(N):\n",
" r[i, j] *= errl[i] * errl[j] # element in covariance matrix\n",
"\n",
"c = cholesky(r, lower=True)\n",
"y = np.dot(c, x_random)\n",
"x = np.arange(N)\n",
"\n",
"\n",
"data = []\n",
"for i in range(N):\n",
" data.append(pe.Obs([[np.exp(-(i + 1)) + np.exp(-(i + 1)) * o for o in y[i]]], ['ens']))\n",
"\n",
"data[2] = data[2]+0.05\n",
"\n",
"[o.gamma_method() for o in data]\n",
"\n",
"corr = pe.covariance(data, correlation=True)\n",
"covdiag = np.diag(1 / np.asarray([o.dvalue for o in data]))\n",
"\n",
"chol_inv = pe.obs.invert_corr_cov_cholesky(corr,covdiag)\n",
"chol_inv_keys = [\"\"]"
]
},
2021-10-11 18:31:02 +01:00
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 400x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.matshow(corr, vmin=-1, vmax=1)\n",
"plt.title('The full correlation matrix')\n",
"plt.set_cmap('RdBu')\n",
"plt.colorbar()\n",
"plt.draw()"
]
},
{
"cell_type": "markdown",
2021-10-11 18:31:02 +01:00
"metadata": {},
"source": [
"### generate a block diagonal covariance matrix"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"tags": []
},
2021-10-11 18:31:02 +01:00
"outputs": [],
"source": [
"e=0\n",
"block_diag_corr_matrix = np.zeros((N,N))\n",
"for k in range(3):\n",
" if(k==0):\n",
" step = 4\n",
" block = pe.covariance(data[:4],correlation=True)\n",
" else:\n",
" step = 3\n",
" block = pe.covariance(data[:3],correlation=True) \n",
" block_diag_corr_matrix[e:e+step,e:e+step] += block\n",
" e+=step\n",
"\n",
"block_diag_chol_inv = pe.obs.invert_corr_cov_cholesky(block_diag_corr_matrix,covdiag)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 400x400 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.matshow(block_diag_corr_matrix, vmin=-1, vmax=1)\n",
"plt.title('A block diagonal correlation matrix')\n",
"plt.set_cmap('RdBu')\n",
"plt.colorbar()\n",
"plt.draw()"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"#### perform a fully correlated fit and a fit with a block diagonal covariance matrix"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fit with 2 parameters\n",
"Method: Levenberg-Marquardt\n",
"`ftol` termination condition is satisfied.\n",
"chisquare/d.o.f.: 2.3597637233070254\n",
"fit parameters [0.9754457 0.28547338]\n",
"Fit with 2 parameters\n",
"inv_chol_cov_matrix handed over as kwargs.\n",
"Method: Levenberg-Marquardt\n",
"`ftol` termination condition is satisfied.\n",
"chisquare/d.o.f.: 2.3217921000302923\n",
"fit parameters [0.9766841 0.2933594]\n"
]
}
],
"source": [
"fitpc = pe.least_squares(x, data, fitf, correlated_fit=True)\n",
"fitp_inv_block_diag_cov = pe.least_squares(x, data, fitf, correlated_fit = True, inv_chol_cov_matrix = [block_diag_chol_inv,chol_inv_keys])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### generate a block diagonal covariance matrix with modified weights for particular data points + perform the fit again"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fit with 2 parameters\n",
"inv_chol_cov_matrix handed over as kwargs.\n",
"Method: Levenberg-Marquardt\n",
"`ftol` termination condition is satisfied.\n",
"chisquare/d.o.f.: 0.3401961132842267\n",
"fit parameters [0.99320618 0.33488345]\n"
]
}
],
"source": [
"covdiag[2][2] = covdiag[2][2]/100. # weight the third data point less\n",
"block_diag_chol_inv_weighted = pe.obs.invert_corr_cov_cholesky(block_diag_corr_matrix,covdiag)\n",
"\n",
"fitp_inv_block_diag_cov_weighted = pe.least_squares(x, data, fitf, correlated_fit = True, inv_chol_cov_matrix = [block_diag_chol_inv_weighted,chol_inv_keys])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### compare the fully correlated fit to those with block-diagonal covariance matrices (and modified weights)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x395.55 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x_fit = np.arange(min(x) - 1, max(x)+ 1, 0.01)\n",
"y_fit_correlated = fitf([o.value for o in fitpc.fit_parameters], x_fit)\n",
"y_fit = fitf([o.value for o in fitp_inv_block_diag_cov.fit_parameters], x_fit)\n",
"y_fit_weighted = fitf([o.value for o in fitp_inv_block_diag_cov_weighted.fit_parameters], x_fit)\n",
"\n",
"plt.figure()\n",
"plt.errorbar(x,data,yerr=[o.dvalue for o in data])\n",
"plt.plot(x_fit, y_fit_correlated, '--',label = '$\\chi^2/\\mathrm{d.o.f.}$=' + str(round(fitpc.chisquare/fitpc.dof,2)) +': fully correlated')\n",
"plt.plot(x_fit, y_fit, '--',label = '$\\chi^2/\\mathrm{d.o.f.}$=' + str(round(fitp_inv_block_diag_cov.chisquare/fitp_inv_block_diag_cov.dof,2)) +': block-diag. cov matrix')\n",
"plt.plot(x_fit, y_fit_weighted, '--',label = '$\\chi^2/\\mathrm{d.o.f.}$=' +str(round(fitp_inv_block_diag_cov_weighted.chisquare/fitp_inv_block_diag_cov_weighted.dof,2)) + \n",
" ': block-diag. cov matrix + reduced weight 2. point')\n",
"plt.xlim(-0.5,10.0)\n",
"plt.ylim(-0.1,0.6)\n",
"plt.legend(fontsize=11)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- the fully correlated fit vs. the fit with a block diagonal covariance matrix\n",
" - the fits do not differ significantly $\\rightarrow$ the block diagonal covariance matrix can be a good estimator \n",
" (if a large fraction of the off-diagonal elements are small)\\\n",
" $\\rightarrow$ sparser matrices can be more easily/cheaply inverted/saved \n",
"- the fit with a block diagonal covariance matrix vs. the fit with \" and a decreased weight for the third data point\n",
" - the $\\chi^2/\\mathrm{d.o.f.}$ improves - decreasing/increasing the weights can be used for points that are known to be less/more 'trustworthy'"
]
2021-10-11 18:31:02 +01:00
}
],
"metadata": {
2022-05-14 11:46:57 +01:00
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
},
2021-10-11 18:31:02 +01:00
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
2021-10-11 18:31:02 +01:00
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.13"
2021-10-11 18:31:02 +01:00
}
},
"nbformat": 4,
"nbformat_minor": 4
}