You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
28 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "799ee5dc",
"metadata": {},
"source": [
"# Week 2 lab: Descriptive stattistics + Bootstrap(sampling variability)\n",
"\n",
"Keypoints:\n",
"- Descriptive statistics (center, spread, shape)\n",
"- population vs sample\n",
"- sampling variability\n",
"\n",
"Lab focus: \n",
"- Bootstrap intuition (mean vs median)\n",
"- Why estimates \"move\"\n",
"- effect of sample size"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3cd42504",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.00123015, 0.29874554, -0.27413786])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# cell 1: Imports + settings\n",
"import numpy as np \n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"rng = np.random.default_rng(7) \n",
"rng.normal(size=3)"
]
},
{
"cell_type": "markdown",
"id": "7dee5625",
"metadata": {},
"source": [
"# Example 1: Descriptive statistic\n",
"We will compute the mean, median, SD, variance, IQR, five-number summary, and flag out the outliers using the $1.5\\times IQR$ rule."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "7e5313f5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0 2.720289\n",
" 1 3.251926\n",
" 2 2.306007\n",
" 3 1.593041\n",
" 4 2.069273\n",
" Name: x, dtype: float64,\n",
" count 60.000000\n",
" mean 3.025476\n",
" std 2.512343\n",
" min 0.600462\n",
" 25% 1.674114\n",
" 50% 2.626124\n",
" 75% 3.280787\n",
" max 18.123107\n",
" Name: x, dtype: float64)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cell 2: Build a dataset with skew + outlier\n",
"rng = np.random.default_rng(7) \n",
"n = 60 \n",
"x = rng.lognormal(mean=1.0, sigma=0.6, size=n) #right-skew\n",
"x[-1] *= 10\n",
"x = pd.Series(x, name=\"x\")\n",
"x.head(), x.describe()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "34a14a88",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"({'min': np.float64(0.6004620561861885),\n",
" 'Q1': np.float64(1.6741136607158649),\n",
" 'median': np.float64(2.6261243464658732),\n",
" 'Q3': np.float64(3.2807868747809836),\n",
" 'max': np.float64(18.12310679128717)},\n",
" np.float64(1.6066732140651188),\n",
" np.float64(-0.7358961603818135),\n",
" np.float64(5.690796695878662))"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Cell 3: Five-numbers + IQR + outliers fence:\n",
"q1 = x.quantile(0.25)\n",
"q2 = x.quantile(0.50)\n",
"q3 = x.quantile(0.75)\n",
"iqr = q3-q1\n",
"\n",
"lowerFence = q1-1.5*iqr\n",
"upperFence = q3+1.5*iqr\n",
"\n",
"fiveN = {\n",
" \"min\": x.min(),\n",
" \"Q1\": q1,\n",
" \"median\": x.median(),\n",
" \"Q3\": q3,\n",
" \"max\": x.max()\n",
"}\n",
"fiveN, iqr, lowerFence, upperFence"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "1886a0a7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"({'mean': np.float64(3.0254764501575737),\n",
" 'median': np.float64(2.6261243464658732),\n",
" 'std': np.float64(2.512343173247777),\n",
" 'var': np.float64(6.31186822016471),\n",
" 'IQR': np.float64(1.6066732140651188),\n",
" 'nOutliers': 5},\n",
" 7 6.074679\n",
" 44 6.142882\n",
" 49 9.027269\n",
" 58 6.443769\n",
" 59 18.123107\n",
" Name: x, dtype: float64)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"outliers = x[(x<lowerFence) | (x>upperFence)]\n",
"summary = {\n",
" \"mean\": x.mean(),\n",
" \"median\": x.median(),\n",
" \"std\": x.std(ddof=1),\n",
" \"var\": x.var(ddof=1),\n",
" \"IQR\": iqr,\n",
" \"nOutliers\": len(outliers)\n",
"}\n",
"summary, outliers"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "af45b496",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAJT5JREFUeJzt3QmUFdWBBuDLDhpoFFRAZXEBFRBU1IlmjAsBlVEYExUHDWpcxuDCmBhhDCrREVyCnCiDy4yiRlBjRDxicATBZcSI4IImoigSEhdcaRFpHHhzbp3TfWjoZuk0/d59/X3nFN1Vr6r61qu3/NylqkEul8sFAIAENcx3AQAAakqQAQCSJcgAAMkSZACAZAkyAECyBBkAIFmCDACQLEEGAEiWIAMAJEuQAWpF586dw5lnnunZBOqUIANUadKkSaFBgwbh5ZdfrvLxI488MvTo0ePvevaeeOKJcPXVVzsDQI0JMkCtWLRoUbjzzju3OsiMHj3aGQBqTJABakWzZs1CkyZNkno2v/7663wXAfg7CTLANukj8+2332a1LXvvvXdo3rx5aNOmTfje974XnnrqqezxuO6ECROy32MTVvm0fsj42c9+FnbfffcsJHXr1i3cdNNNIZfLVfq733zzTbj44otD27ZtQ8uWLcOJJ54Y/va3v2X7Wr/ZKv4el/3pT38K//Iv/xJ22GGHrDzR66+/npVnjz32yMrarl27cPbZZ4fPPvus0t8q38fbb78dTj/99FBSUhJ22mmnMGrUqKxcy5YtCwMHDgytWrXK9vHrX//aqwu2scbb+g8AaVuxYkX49NNPN1oeg8qmxC/9MWPGhHPOOScccsghobS0NOtvs2DBgvCDH/wgnH/++eGDDz7Igs19991XadsYCmIgmT17dvjJT34SevfuHZ588slw2WWXZSHl5ptvrlg3BpCHHnoonHHGGeEf/uEfwjPPPBMGDBhQbblOPvnkLFxdd911FaEoluG9994LZ511VhZA3nzzzXDHHXdkP1988cVKASs69dRTw7777hvGjh0bpk+fHq699tqw4447httvvz0cffTR4frrrw/3339/+PnPfx4OPvjgcMQRR2zx8w1spRxAFe6+++74Lb/JqXv37hXrd+rUKTd06NCK+V69euUGDBiwyed22LBh2X429Oijj2bLr7322krLf/SjH+UaNGiQW7x4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nyUAIM0gM3fu3NC8efPa3CUAQO02LZ100kmV5nO5XPjwww/Dyy+/HEaNGlWTXQIA1E2QKSkpqTTfsGHD0K1bt+yO2P369avJLgEA6ibI3H333TXZDAAg/0Gm3Pz588Of//zn7Pfu3buHAw44oLbKBQCwbYLM8uXLw+DBg8OcOXNC69ats2VffvlldqG8Bx54IOy000412S0AwLYftXTRRReFr776Krz55pvh888/z6Z4MbzS0tJw8cUX12SXAAB1UyMzY8aMMHPmzLDvvvtWLNtvv/3ChAkTdPYFAAq7RmbdunWhSZMmGy2Py+JjAAAFG2SOPvrocMkll4QPPvigYtnf/va38G//9m/hmGOOqc3yAQDUbpC59dZbs/4wnTt3DnvuuWc2denSJVt2yy231GSXAAB100dm9913DwsWLMj6ybz11lvZsthfpm/fvjXZHQDAtq+Refrpp7NOvbHmpUGDBuEHP/hBNoIpTgcffHB2LZnnnnuuZiUBANiWQWb8+PHh3HPPDa1atarytgXnn39+GDdu3NaWAQBg2weZ1157LRx77LHVPh7vsxSv9lubYifi008/PbRp0ya0aNEi9OzZM7s5JQDAVvWR+fjjj6scdl2ucePG4ZNPPqm1Z/WLL74Ihx9+eHbF4D/84Q/ZFYPfeeedsMMOO9Ta3wAA6kmQ2XXXXbMr+O61115VPv7666+H9u3b11bZwvXXX591LF7/JpVxdBQAwFY3LR1//PFh1KhRYfXq1Rs99s0334Srrroq/NM//VOtPbOPPfZY6NOnTzj55JPDzjvvnN2U8s4779zkNmVlZVln5PUnAKA4bVWQ+eUvf5ndV6lr167hhhtuCNOmTcumWHPSrVu37LErrrii1gr33nvvhYkTJ4a99947PPnkk+GCCy7I7uV0zz33VLvNmDFjso7H5VOs0QEAilODXC6X25oNli5dmgWKGCzKN41Dsfv375/da6k2m36aNm2a1ci88MILFctikJk3b16YO3dutTUycSoXa2RimFmxYkWVo63+Hp1HTK/V/RWj98cOyHcRAEhQ/P6OFRKb+/7e6gviderUKTzxxBNZR9zFixdnYSbWmGyLDrixv028bs364oX3fv/731e7TbNmzbIJACh+NbqybxSDS7wI3rYURywtWrSo0rK33347C1MAADW611JdiTehfPHFF8N1112X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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAHHCAYAAADjzRHEAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAHP5JREFUeJzt3QnwVlX9P/DDIpsCjrmBG2igjAvulqbmMrggy5iamoWlZoaVS26VouVoLpktjpmTYDJZ6riMipqYiOYauIsLhGaBipaAAiJw/3Pub57v/8su8OHLs7xeMw+X5977LPecu7y/5557n1ZFURQJACBA64g3AQAQLACAUFosAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABrDGtWrVKF154oRqAOiJYQJ0aMWJEeeBu/thwww3Tfvvtl+67775Uy1555ZUykLz55ptr+qsAi2i76Aigvvz0pz9NPXv2TPlngd59990ycBx66KHp7rvvTocddliq1WBx0UUXpS9/+cupR48ea/rrAM0IFlDnDjnkkLTrrrs2PT/hhBPSRhttlG6++eaaDRZA9XIqBBrMuuuumzp27Jjatv3/f1d8/PHH6cwzz0ybbbZZat++fdp6663TlVdeWbZyZLNnz07bbLNN+cj/r/jvf/+bunXrlvbcc880f/78ctzxxx+f1llnnfTPf/4zHXTQQWnttddO3bt3L1tOPsuPKT/77LNlGOrSpUv5PgcccEB68sknm6bnFpcjjzyy/H8+rVM5zTNmzJjQcgJWjmABdW769Onp/fffT9OmTUsvv/xyOuWUU9JHH32UjjvuuHJ6PtgPHDgw/fKXv0wHH3xwuuqqq8pgcdZZZ6UzzjijnCcHkRtvvDFNnDgx/fjHP25676FDh5bvnw/2bdq0aRqfQ0Z+r9wycvnll6dddtklDRs2rHwsS/5+e++9d3r++efT2Wefnc4///w0efLk8pTHU089Vc6zzz77pO9///vl/3/0ox+lm266qXz06dNntZQfsIIKoC4NHz48Nw8s9mjfvn0xYsSIpvnuvPPOcvzFF1+80OuPOOKIolWrVsXEiRObxp133nlF69ati7Fjxxa33npr+bqrr756odcNGTKkHP+9732vadyCBQuK/v37F+3atSumTZvWND7PN2zYsKbngwcPLueZNGlS07gpU6YUnTt3LvbZZ5+mcZXPfvjhh0PKCoijxQLq3DXXXJMefPDB8jFy5Mjy9MGJJ56Ybr/99nL6qFGjytaGSitART41ko/9za8gyVdibLvttmnIkCHpu9/9btp3330Xe13Fqaee2vT/fKoiP587d24aPXr0EufPrRx//etf0+DBg9OWW27ZND6fajn22GPTY489lmbMmLHK5QGsXjpvQp3bfffdF+q8ecwxx6SddtqpPNDnzptvvfVW2Qeic+fOC72ucmohT69o165duuGGG9Juu+2WOnTokIYPH16GhkW1bt16oXCQ9e7duxwu7RLRfKpm1qxZ5WmYReXvsmDBgvT222+XwQaoXlosoMHkg35utZg6dWp64403Vvj1DzzwQDmcM2fOSr0eqG+CBTSgefPmlcPciXOLLbZIU6ZMSTNnzlxonldffbUc5ukVL7zwQnl1xze/+c2y1SOfUsmdNxeVWxfyVSHNvf766+Vwafed2GCDDVKnTp3Sa6+9tti0/F1yIMpXrWRLaiUBqoNgAQ3m008/Lfsy5NMa+RRDvllW7t/w29/+dqH58lUi+QCeL/2svC5fSppPm/zqV78qrwTJN9w6/fTTl/g5zd8v99XIz9daa63y8tElyf08+vXrl+66666FTpfkz/jTn/6UvvSlL5WXoGb5Etbsww8/DCgRIJI+FlDncufLSuvDe++9Vx6k8ymMc889tzxQDxgwoDw1ki8jzQf0vn37lsEjH+BPO+20tNVWW5Wvvfjii9Nzzz2XHnroobI/xg477JAuuOCC9JOf/CQdccQRZUCpyP0v7r///rKT5x577FF+h3vvvbe8PDS3TCxN/ozcyTSHiNw5NN9r47rrrkuffPJJedlqxY477lgGkcsuu6xsMcn33th///3LW5YDa1jgFSZAlV9u2qFDh2LHHXcsrr322vIS0IqZM2cWp59+etG9e/dirbXWKnr16lVcccUVTfOMGzeuaNu27UKXkGbz5s0rdtttt/J1//vf/5ouN1177bXLS0b79etXdOrUqdhoo43Ky0rnz5+/0OsXvdw0Gz9+fHHQQQcV66yzTvna/fbbr3j88ccXW77rr7++2HLLLYs2bdq49BSqSKv8z5oON0D9yKdLbrvttrL/BtB49LEAAMIIFgBAGMECAAijjwUAEEaLBQAQRrAAAGr3Bln5Vr/59sH5BjtuywsAtSHfnSLf+j/ffTffYr9qgkUOFZX7/QMAtSX/yvCmm25aPcGi8tPM+YtV7vsPAFS3GTNmlA0DleN41QSLyumPHCoECwCoLcvrxqDzJgAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAgGABAFQfLRYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEACBYAQPXRYgEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgCAYAEAVB8tFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQAIFgBA9dFiAQCEESwAgDCCBQAQpm3cWzWeN954I82cOTNVs86dO6devXqt6a8BQIMQLFYhVPTu3TutLhuv0yqdvEu7dN24uemdj4pVeq/XX39duACgRQgWK6nSUjFy5MjUp0+fFK3jh6+nPmNPTl+9YESave7KBZgJEyak4447rupbVQCoH4LFKsqhYuedd07hprROaWxKfbbZJqXuO8a/PwCsBjpvAgBhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACBM3QSLWbNmpfHjx5dD6oM6Bag9dRMsXn311bTLLruUQ+qDOgWoPXUTLACANU+wAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMG3j3gpqx/z589Ojjz6a/vOf/6Rp06alDTbYIG2yySZp7733Tm3atFlsvqlTp6Zu3botNr1RKAeofvOrZH+1wi0WY8eOTQMGDEjdu3dPrVq1Snfeeefq+WZ8Zk9MeSINunNQOWT5br/99vT5z38+7bfffum4445Lp59+ejnMz/P4PH3R+Y499tjFpjcK5QDV7/Yq2l+tcLD4+OOPU9++fdM111yzer4RK6QoivSr8b9K/5z+z3KYn7N0eSM74ogj0vrrr18G40MOOSRdf/315TDL4/P0s88+uxxuv/326YknnkgzZ84sh/l5Ht8o4aJSXo1eDlDNbq+27bRYBfnld9xxxwq9Zvr06eXr8jDSuHHjyvfNw5aw2j/vP88WxbAu/zdchsf+/Vix3Yjtmh75eYt9x9Us+vvPmzev6NGjR3HYYYeVwwEDBhTz588vp+Vhfp7H9+/fv2jbtm05X2V6RWW+nj17lu9Xzyrl1bycGrEcoJrNa8Ht9LMev1d7H4tPPvmkfFTMmDFjtXzO7Nmzy+GECRNSS6h8TuVz14Sc7X7z7G9S61at04JiQTnMz/fsvmf513hLl0m1l3E+9/jmm2+ms846K91zzz3p5ptvTq1b/1+jXR6ed955ac8990wDBw5M8+bNK1sxKtMrms+X3+/LX/5yqleV8mpeTo1YDlDNHq3C7XS1B4tLL700XXTRRav7Y8qCzfK58paUP3evvfZKa8LjUx5PL3/wctPzHC7y8zx+r032WmNlUq1lnDs0ZR07diyH22233ULTK8/nzJmz0HyLqsxXeb96VVm+Rcup0coBqtnUKtxOV3uwyGnpjDPOWKjFYrPNNgv/nB49epTDkSNHpj59+qSW+Gs6H7Arn7umWysqmrdatHSZVHsZ517SzVtAXnrppfSFL3yhaXp+nnXo0GGh+RZVma/yfvWqsnyLllOjlQNUs25VuJ2u9mDRvn378rG6Vf66zAfQnXfeebV/3qKfu6ZbK5bUarGmyqRayzhfepVDyn333VcOL7nkkvKqptxcuGDBgrJ1LY+fNGlSatu2bTnfd77znYWaFyvz9ezZs3y/elYpr+bl1IjlANVs7yrcTt0gqwZVWitapVZLnJ7H5+muEFlYvp77F7/4Rbr33nvLqz9yP4vDDjss/f73vy+Hd999dzl+1KhR5SWoeb7Bgwcv1Ms6P8+vu/LKK+v+fhaV8srL28jlANWsTRVupyvcYvHRRx+liRMnNj2fPHlyeu6559J6662XNt988+jvxxJ8uuDT9M7H76QiLfnS0jw+T59XzFN+izj88MPTbbfdls4888wyeOVWifyo+OCDD8rpeb7crJjnyx2fKnLyr0xvtPJq5HKAanZ4lW2nKxws/vGPf5Q33qio9J8YMmRIGjFiROy3Y4natWmX/nzYn9N/5/x3qSW0Xof10pTXpijBJcgb2aBBg5Z7583m863pO9mtScoBqt/hVbS/WuFgkS9X0cS+5m289sblY1mmJMFiafLG9lkuvfqs89U75QDVr02V7K/0sQAAwggWAEAYwQIACCNYAABhBAsAIIxgAQAIFgBA9dFiAQCEqZtgsc0226Rx48aVQ+qDOgWoPav9101bSqdOnWr6FzxZnDoFqD1102IBAKx5ggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABCmbm7p3dJmzZpVDsePH79a3r/jh6+nPimlCa++mma/s2Cl3mPChAnh3wsAlkWwWEmvvvpqOTzppJPS6rDxOq3Sybu0S9f94tj0zkfFKr1X586dw74XACyLYLGSBg8e3PQLnPnHslaXgav4+hwqevXqFfRtAGDZWhVFsWp/Dq+gGTNmpK5du6bp06enLl26tORHAwCr+fit8yYAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAQLACA6qPFAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAADBAgCoPlosAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECABAsAIDqo8UCAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQBjBAgAII1gAAGEECwAgjGABAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFgBAGMECAAgjWAAAYQQLACCMYAEAhBEsAIAwggUAEEawAADCCBYAQJi2qYUVRVEOZ8yY0dIfDQCspMpxu3Icr5pgMXPmzHK42WabtfRHAwABx/GuXbsudXqrYnnRI9iCBQvSlClTUufOnVOrVq0WS0M5cLz99tupS5cuqdFY/sau/8w60NjrQKPXf9boZTCjipc/x4UcKrp3755at25dPS0W+ctsuummy5wnF2a1FWhLsvyNXf+ZdaCx14FGr/+s0cugS5Uu/7JaKip03gQAwggWAEB9Bov27dunYcOGlcNGZPkbu/4z60BjrwONXv9Zo5dB+zpY/hbvvAkA1K+qarEAAGqbYAEAhBEsAIAwggUAULvB4pprrkk9evRIHTp0SHvssUd6+umnlzn/rbfemrbZZpty/u233z6NGjUq1aJLL7007bbbbuUdRzfccMM0ePDg9Nprry3zNSNGjCjvTtr8kcuhFl144YWLLUuu10ao+4q83i9aBvkxdOjQuqz/sWPHpgEDBpR36cvf/c4771xoeu43fsEFF6Ru3bqljh07pgMPPDC98cYb4fuQai2DTz/9NJ1zzjnlur322muX83zjG98o70wcvS1V6zpw/PHHL7YsBx98cN2sA2OXs/xL2h/kxxVXXFHT9d+iweIvf/lLOuOMM8pLacaPH5/69u2bDjrooPTee+8tcf7HH388HXPMMemEE05Izz77bHkwzo+XXnop1ZpHHnmkPIA8+eST6cEHHyx3Kv369Usff/zxMl+X77w2derUpsdbb72VatW222670LI89thjS523nuq+4plnnllo+fN6kB155JF1Wf953c7beD4ILMnll1+efv3rX6ff/e536amnnioPrnl/MGfOnLB9SDWXwaxZs8plOP/888vh7bffXv6xMXDgwNBtqZrXgSwHiebLcvPNNy/zPWtpHfh4OcvffLnz44YbbiiDwle+8pXarv+iBe2+++7F0KFDm57Pnz+/6N69e3HppZcucf6jjjqq6N+//0Lj9thjj+Lkk08uat17772XL/MtHnnkkaXOM3z48KJr165FPRg2bFjRt2/fzzx/Pdd9xQ9+8INiq622KhYsWFD39Z/X9TvuuKPpeV7mjTfeuLjiiiuaxn344YdF+/bti5tvvjlsH1LNZbAkTz/9dDnfW2+9FbYtVfPyDxkypBg0aNAKvU+trgPpM9R/Lov9999/mfPUQv23WIvF3Llz07hx48rmzua/G5KfP/HEE0t8TR7ffP4sJ9OlzV9Lpk+fXg7XW2+9Zc730UcfpS222KL8UZpBgwall19+OdWq3MydmwS33HLL9LWvfS3961//Wuq89Vz3le1h5MiR6Vvf+tZiP8ZXr/Xf3OTJk9M777yzUB3n3yDIzdpLq+OV2YfU4n4hrw/rrrtu2LZU7caMGVOeHt56663TKaeckj744IOlzlvP68C7776b7r333rKVdnmqvf5bLFi8//77af78+WmjjTZaaHx+nncwS5LHr8j8tSL/wutpp52W9tprr7Tddtstdb68oeWmsbvuuqs8COXX7bnnnunf//53qjX5gJH7DNx///3p2muvLQ8se++9d/lLeY1U9xX5XOuHH35YnmNuhPpfVKUeV6SOV2YfUkvyKaDc5yKfAlzWj0+t6LZUzfJpkD/+8Y/poYceSpdddll5yviQQw4p67nR1oEbb7yx7IN3+OGHL3O+Wqj/Fv91U1LZ1yL3FVjeebEvfvGL5aMiH1T69OmTrrvuuvSzn/2spooy7ywqdthhh3LjyH+J33LLLZ8podebP/zhD2WZ5L86GqH+Wbbc5+qoo44qO7Tmg0WjbEtHH3100/9zJ9a8PFtttVXZinHAAQekRnLDDTeUrQ/L66BdC/XfYi0W66+/fmrTpk3Z3NNcfr7xxhsv8TV5/IrMXwtOPfXUdM8996SHH354uT8fv6i11lor7bTTTmnixImp1uWm3t69ey91Weqx7ityB8zRo0enE088sWHrv1KPK1LHK7MPqaVQkdeL3KF3RX8qe3nbUi3JTfu5npe2LPW6Djz66KNlx90V3SdUa/23WLBo165d2mWXXcomr4rctJufN/+rrLk8vvn8Wd7wljZ/Nct/ieRQcccdd6S//e1vqWfPniv8HrkJ8MUXXywvz6t1ue/ApEmTlros9VT3ixo+fHh5Trl///4NW/95/c8HguZ1PGPGjPLqkKXV8crsQ2olVORz5jlsfu5znwvflmpJPs2X+1gsbVnqcR2otGDm5cpXkNRF/bdkT9E///nPZa/vESNGFK+88krx7W9/u1h33XWLd955p5z+9a9/vTj33HOb5v/73/9etG3btrjyyiuLCRMmlL1h11prreLFF18sas0pp5xS9vAfM2ZMMXXq1KbHrFmzmuZZdPkvuuii4oEHHigmTZpUjBs3rjj66KOLDh06FC+//HJRa84888xy2SdPnlzW64EHHlisv/765dUx9V73zeUe7JtvvnlxzjnnLDat3up/5syZxbPPPls+8q7mqquuKv9fueLh5z//ebn933XXXcULL7xQ9ojv2bNnMXv27Kb3yD3kf/Ob33zmfUgtlcHcuXOLgQMHFptuumnx3HPPLbRf+OSTT5ZaBsvblmpl+fO0H/7wh8UTTzxRLsvo0aOLnXfeuejVq1cxZ86culgHZi5nG8imT59edOrUqbj22muX+B61WP8tGiyyXEB5x9quXbvysqEnn3yyadq+++5bXn7U3C233FL07t27nH/bbbct7r333qIW5ZVqSY98SeHSlv+0005rKquNNtqoOPTQQ4vx48cXteirX/1q0a1bt3JZNtlkk/L5xIkTG6Lum8tBIdf7a6+9tti0eqv/hx9+eInrfGUZ8yWn559/frls+UBxwAEHLFYuW2yxRRkqP+s+pJbKIB8YlrZfyK9bWhksb1uqleXPf1T169ev2GCDDco/GvJynnTSSYsFhFpeBx5ezjaQXXfddUXHjh3Ly62XpBbr38+mAwBh/FYIABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAMIIFsAqmTZtWvlLpZdccknTuMcff7z8JcpFf6EWqH9+KwRYZaNGjUqDBw8uA8XWW2+ddtxxxzRo0KB01VVXKV1oMIIFEGLo0KFp9OjRadddd00vvvhieuaZZ1L79u2VLjQYwQIIMXv27LTddtult99+O40bNy5tv/32ShYakD4WQIhJkyalKVOmpAULFqQ333xTqUKD0mIBrLK5c+em3XffvexbkftYXH311eXpkA033FDpQoMRLIBVdtZZZ6XbbrstPf/882mdddZJ++67b+ratWu65557lC40GKdCgFUyZsyYsoXipptuSl26dEmtW7cu///oo4+ma6+9VulCg9FiAQCE0WIBAIQRLACAMIIFABBGsAAAwggWAEAYwQIACCNYAABhBAsAIIxgAQCEESwAgDCCBQAQRrAAAFKU/wcC8CzD3rZu0AAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Cell 5: Visual Diagnostics - boxplot + histogram\n",
"nBins = 25\n",
"plt.figure()\n",
"plt.hist(x, bins=nBins)\n",
"plt.title(\"Histogram\")\n",
"plt.xlabel(\"x\"); plt.ylabel(\"Counts\")\n",
"plt.show()\n",
"\n",
"plt.figure()\n",
"plt.boxplot(x, vert=False, showmeans=True)\n",
"plt.title(\"Boxplot\")\n",
"plt.xlabel(\"x\")\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv (3.14.2)",
"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.14.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}