diff --git a/assign2.ipynb b/assign2.ipynb new file mode 100644 index 0000000..cff42c6 --- /dev/null +++ b/assign2.ipynb @@ -0,0 +1,373 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ef047b81-6907-4758-a295-7a61093769e1", + "metadata": {}, + "source": [ + "\n", + "## Q1.1\n", + "Given :\n", + "\n", + "- The received value $ x $ follows a normal distribution: $ x \\sim N(\\theta, 4) $\n", + "- The prior distribution of $\\theta$ is: $ \\theta \\sim N(5, 9) $\n", + "- We receive $ x = 6 $\n", + "\n", + "We need to find the posterior distribution $ p(\\theta \\mid x) $.\n", + "\n", + "The general formula for Bayesian updating with normal distributions is:\n", + "\n", + "\n", + "$\\mu_{\\text{post}} = \\frac{\\sigma_x^2 \\mu_0 + \\sigma_0^2 x}{\\sigma_x^2 + \\sigma_0^2}$\n", + "\n", + "$\\sigma_{\\text{post}}^2 = \\frac{\\sigma_x^2 \\sigma_0^2}{\\sigma_x^2 + \\sigma_0^2}$\n", + "Where:\n", + " $ \\mu_0 $ and $ \\sigma_0^2 $ are the mean and variance of the prior distribution of $\\theta$\n", + " $ x $ and $ \\sigma_x^2 $ are the observed value and the variance of the likelihood distribution\n", + "\n", + "- Prior mean $ \\mu_0 = 5 $\n", + "- Prior variance $ \\sigma_0^2 = 9 $\n", + "- Likelihood variance $ \\sigma_x^2 = 4 $\n", + "- Observed value $ x = 6 $\n", + "\n", + "Posterior Variance\n", + "\n", + "$$\n", + "\\sigma_{\\text{post}}^2 = \\frac{\\sigma_x^2 \\sigma_0^2}{\\sigma_x^2 + \\sigma_0^2} = \\frac{4 \\cdot 9}{4 + 9} = \\frac{36}{13}\n", + "$$\n", + "\n", + "Posterior Mean\n", + "\n", + "$$\n", + "\\mu_{\\text{post}} = \\frac{\\sigma_x^2 \\mu_0 + \\sigma_0^2 x}{\\sigma_x^2 + \\sigma_0^2} = \\frac{4 \\cdot 5 + 9 \\cdot 6}{4 + 9} = \\frac{20 + 54}{13} = \\frac{74}{13}\n", + "$$\n", + "\n", + "Result\n", + "\n", + "The posterior distribution $ p(\\theta \\mid x) $ is:\n", + "\n", + "$\n", + "\\theta \\mid x \\sim N\\left(\\frac{74}{13}, \\frac{36}{13}\\right)\n", + "$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "936c0e40-8365-4275-b4f1-1a7aa717ed9e", + "metadata": {}, + "source": [ + "## Q 1.4" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1ac147a2-fc0e-49d6-992b-02ef5951133f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Posterior Mean for Randall Vard: 87.93650793650794\n", + "Posterior Mean for Mary1: 130.15873015873015\n" + ] + } + ], + "source": [ + "# Given values\n", + "mu_0 = 100 # prior mean\n", + "variance_0 = 152 # prior variance\n", + "variance_1 = 100 # variance of likelihood\n", + "observed_scores = {\n", + " \"Randall Vard\": 80,\n", + " \"Mary1\": 150\n", + "}\n", + "\n", + "# Function to calculate the posterior mean\n", + "def calculate_posterior_mean(x, mu_0, variance_0, variance_1):\n", + " return (variance_0 * x + variance_1 * mu_0) / (variance_0 + variance_1)\n", + "\n", + "# Calculate posterior means\n", + "posterior_means = {name: calculate_posterior_mean(score, mu_0, variance_0, variance_1) for name, score in observed_scores.items()}\n", + "\n", + "# Print results\n", + "for name, mean in posterior_means.items():\n", + " print(f\"Posterior Mean for {name}: {mean}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "0cdc1e1c-9ef2-446d-8bb5-a107d2ac1ddb", + "metadata": {}, + "source": [ + "## Q3" + ] + }, + { + "cell_type": "markdown", + "id": "35bfc948-4d21-4cd0-9d6c-058dd1fc060d", + "metadata": {}, + "source": [ + "\n", + "\n", + "In logistic regression for binary classification, the likelihood function for the dataset \\((X, y)\\) given the parameters \\(\\beta\\) is defined as:\n", + "\n", + "$$\n", + "P(y | X, \\beta) = \\prod_{i=1}^n P(y_i | X_i, \\beta)\n", + "$$\n", + "\n", + "where $P(y_i | X_i, \\beta)$ is given by the logistic function:\n", + "\n", + "$$\n", + "P(y_i = 1 | X_i, \\beta) = \\sigma(X_i \\beta) = \\frac{1}{1 + \\exp(-X_i \\beta)}\n", + "$$\n", + "\n", + "and\n", + "\n", + "$$\n", + "P(y_i = 0 | X_i, \\beta) = 1 - \\sigma(X_i \\beta) = \\frac{\\exp(-X_i \\beta)}{1 + \\exp(-X_i \\beta)}\n", + "$$\n", + "\n", + "\n", + "\n", + "Assume a Gaussian prior on the parameters $\\beta$:\n", + "\n", + "$$\n", + "P(\\beta) = \\mathcal{N}(\\beta | 0, \\sigma^2 I)\n", + "$$\n", + "\n", + "where $0$ is the mean vector and $\\sigma^2 I$ is the covariance matrix with $I$ being the identity matrix.\n", + "\n", + "\n", + "using Bayes’ theorem, the posterior distribution is proportional to the product of the likelihood and the prior:\n", + "\n", + "$$\n", + "P(\\beta | X, y) \\propto P(y | X, \\beta) P(\\beta)\n", + "$$\n", + "\n", + "Taking the logarithm to get the log-posterior (which simplifies the product to a sum), we have:\n", + "\n", + "$$\n", + "\\log P(\\beta | X, y) = \\log P(y | X, \\beta) + \\log P(\\beta) + \\text{constant}\n", + "$$\n", + "\n", + "The log-likelihood $\\log P(y | X, \\beta)$ is:\n", + "\n", + "$$\n", + "\\log P(y | X, \\beta) = \\sum_{i=1}^n \\left[ y_i \\log \\sigma(X_i \\beta) + (1 - y_i) \\log (1 - \\sigma(X_i \\beta)) \\right]\n", + "$$\n", + "\n", + "The log-prior $\\log P(\\beta)$ is:\n", + "\n", + "$$\n", + "\\log P(\\beta) = -\\frac{1}{2\\sigma^2} \\beta^T \\beta + \\text{constant}\n", + "$$\n", + "\n", + "\n", + "\n", + "The MAP estimate maximizes the log-posterior:\n", + "\n", + "$$\n", + "\\hat{\\beta}_{MAP} = \\arg\\max_{\\beta} \\left( \\log P(y | X, \\beta) + \\log P(\\beta) \\right)\n", + "$$\n", + "\n", + "This is equivalent to minimizing the negative log-posterior:\n", + "\n", + "$$\n", + "\\hat{\\beta}_{MAP} = \\arg\\min_{\\beta} \\left( -\\log P(y | X, \\beta) - \\log P(\\beta) \\right)\n", + "$$\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "11e17932-30f3-4c89-95a9-f03aed5a9f14", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "VC Dimension for Axis-Aligned Rectangle in 2D:\n" + ] + }, + { + "data": { + "image/png": "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a/SaGoXJc889pxkzZlxynT179qhDhw41GuK8tLQ0TZw4seLnoqIiJSYmKi8vr8Z/MFTmdrsVHx+v/Px8RUREBHqcoMZ7WTt4H2sP72Xt4b2sHS6XSwkJCYqMjKzxa2sUJs8884xGjhx5yXVat25d4yHOczgccjgcVZY7nU7+A6klERERvJe1hPeydvA+1h7ey9rDe1k76tWr+TU2NQqTqKgoRUVF1XgnAAAAV8Jn55jk5eXp1KlTysvLk9frVU5OjiSpbdu2atSoka92CwAAgpjPwmTKlCl6++23K36+5ZZbJElZWVnq3bv3FW3D4XAoPT292o93UDO8l7WH97J28D7WHt7L2sN7WTuu5X20WVdzLQ8AAIAP8F05AADAGIQJAAAwBmECAACMQZgAAABjECYAAMAYQRMmL774onr27KkGDRqocePGgR4nqGRmZqpVq1YKDQ1VUlKSNm/eHOiRgtK6des0cOBAxcbGymazafny5YEeKShlZGTotttuU3h4uJo3b67BgwfrP//5T6DHCkqvvfaaunTpUnGX0uTkZH388ceBHivoTZ8+XTabTRMmTAj0KEFn6tSpstlslR41/ZqaoAmT0tJSDR8+XGPGjAn0KEHl/fff18SJE5Wenq7t27era9euSklJ0YkTJwI9WtApKSlR165dlZmZGehRgtratWuVmpqqjRs3avXq1Tp79qzuu+8+lZSUBHq0oBMXF6fp06dr27Zt2rp1q/r27atBgwZp165dgR4taG3ZskXz5s1Tly5dAj1K0LrppptUUFBQ8fjyyy9rtgEryCxYsMByOp2BHiNo9OjRw0pNTa342ev1WrGxsVZGRkYApwp+kqxly5YFeow64cSJE5Yka+3atYEepU5o0qSJNX/+/ECPEZROnz5t3XDDDdbq1autu+++2xo/fnygRwo66enpVteuXa9pG0FzxAQ1V1paqm3btqlfv34Vy+rVq6d+/fppw4YNAZwM+InL5ZKkq/oWUvzE6/Vq8eLFKikpUXJycqDHCUqpqakaMGBApb8zUXP79+9XbGysWrdurccee0x5eXk1er3PbkmPwCssLJTX61WLFi0qLW/RooX27t0boKmAn5SVlWnChAm644471KlTp0CPE5R27Nih5ORknTlzRo0aNdKyZcvUsWPHQI8VdBYvXqzt27dry5YtgR4lqCUlJWnhwoVq3769CgoKNG3aNPXq1Us7d+5UeHj4FW0joEdMnnvuuSonyVz44BcoUHelpqZq586dWrx4caBHCVrt27dXTk6ONm3apDFjxmjEiBHavXt3oMcKKvn5+Ro/frzee+89hYaGBnqcoNa/f38NHz5cXbp0UUpKij766CMVFRXpH//4xxVvI6BHTJ555hmNHDnykuu0bt3aP8PUQc2aNZPdbtfx48crLT9+/Liio6MDNBVQbuzYsVq5cqXWrVunuLi4QI8TtEJCQtS2bVtJUrdu3bRlyxbNmTNH8+bNC/BkwWPbtm06ceKEbr311oplXq9X69at09y5c+XxeGS32wM4YfBq3Lix2rVrpwMHDlzxawIaJlFRUYqKigrkCHVaSEiIunXrpjVr1mjw4MGSyg+dr1mzRmPHjg3scPjZsixL48aN07Jly5Sdna3rr78+0CPVKWVlZfJ4PIEeI6jcc8892rFjR6Vlo0aNUocOHTR58mSi5BoUFxfr4MGD+tWvfnXFrwmac0zy8vJ06tQp5eXlyev1KicnR5LUtm1bNWrUKLDDGWzixIkaMWKEunfvrh49emj27NkqKSnRqFGjAj1a0CkuLq5U/bm5ucrJyVFkZKQSEhICOFlwSU1N1aJFi7RixQqFh4fr2LFjkiSn06mwsLAATxdc0tLS1L9/fyUkJOj06dNatGiRsrOztWrVqkCPFlTCw8OrnOPUsGFDNW3alHOfamjSpEkaOHCgEhMTdfToUaWnp8tut+vRRx+98o3UyvVBfjBixAhLUpVHVlZWoEcz3iuvvGIlJCRYISEhVo8ePayNGzcGeqSglJWVVe1/gyNGjAj0aEGluvdQkrVgwYJAjxZ0nnjiCSsxMdEKCQmxoqKirHvuucf69NNPAz1WncDlwlfn4YcftmJiYqyQkBCrZcuW1sMPP2wdOHCgRtuwWZZl1V4rAQAAXD3uYwIAAIxBmAAAAGMQJgAAwBiECQAAMAZhAgAAjEGYAAAAYxAmAADAGIQJAAAwBmECAACMQZgAAABjECYAAMAY/wdXaCslWRRl7wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "VC Dimension for Linear Function in d Dimensions:\n", + "Dimension 1: VC Dimension = 2\n", + "Dimension 2: VC Dimension = 3\n", + "Dimension 3: VC Dimension = 4\n", + "Dimension 4: VC Dimension = 5\n", + "Dimension 5: VC Dimension = 6\n", + "\n", + "VC Dimension for Constant Function:\n", + "VC Dimension = 0\n" + ] + } + ], + "source": [ + "# Import necessary libraries\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from itertools import combinations\n", + "\n", + "\n", + "def plot_rectangle(points, labels, rect=None, title=\"\"):\n", + " fig, ax = plt.subplots()\n", + " for i, (point, label) in enumerate(zip(points, labels)):\n", + " ax.scatter(*point, color='red' if label else 'blue')\n", + " ax.annotate(f'{i}', (point[0] + 0.05, point[1] + 0.05), fontsize=12)\n", + " if rect:\n", + " (xmin, xmax, ymin, ymax) = rect\n", + " ax.add_patch(plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=None, edgecolor='black', linewidth=2))\n", + " ax.set_title(title)\n", + " plt.xlim(-1, 5)\n", + " plt.ylim(-1, 5)\n", + " plt.show()\n", + "\n", + "# Example points\n", + "points = np.array([(1, 1), (2, 2), (3, 3), (4, 4)])\n", + "\n", + "# All possible labelings for 2 points\n", + "labelings_2 = list(combinations([0, 1], 2))\n", + "print(\"VC Dimension for Axis-Aligned Rectangle in 2D:\")\n", + "\n", + "# Shattering check for 2 points\n", + "for labels in labelings_2:\n", + " plot_rectangle(points[:2], labels, title=f\"Labels: {labels}\")\n", + "\n", + "# All possible labelings for 4 points\n", + "labelings_4 = list(combinations([0, 1], 4))\n", + "\n", + "# Shattering check for 4 points (only showing a subset for clarity)\n", + "for i, labels in enumerate(labelings_4[:3]):\n", + " plot_rectangle(points, labels, rect=(1, 3.5, 1, 3.5), title=f\"Labels: {labels}\")\n", + "\n", + "# VC Dimension for Linear Function in d Dimensions\n", + "def linear_vc_dimension(d):\n", + " return d + 1\n", + "\n", + "# Example dimensions\n", + "dimensions = [1, 2, 3, 4, 5]\n", + "\n", + "print(\"\\nVC Dimension for Linear Function in d Dimensions:\")\n", + "for d in dimensions:\n", + " print(f\"Dimension {d}: VC Dimension = {linear_vc_dimension(d)}\")\n", + "\n", + "# VC Dimension for Constant Function\n", + "def constant_vc_dimension():\n", + " return 0\n", + "\n", + "print(\"\\nVC Dimension for Constant Function:\")\n", + "print(f\"VC Dimension = {constant_vc_dimension()}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "6256bef9-276d-429f-8314-d53fb14067b3", + "metadata": {}, + "source": [ + "## Q2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "2aa9121f-d873-472e-9b1e-6a8338d91ae6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True Mean: 5, MLE Mean: 5.0386641116446516\n", + "True Variance: 4, MLE Variance: 3.831619958926069\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABhW0lEQVR4nO3deVhU1f8H8PcwwLAj+6Io7juoqIhmmlJoau65b/nTNLGMci3FXHI3y0zLyqXcc8mvmqUoaomiIO6SGriDK/s+c35/kDdGARkELjO8X88zj3Pv3LnzvsM4fDj33HMUQggBIiIiIj1hJHcAIiIiIl2weCEiIiK9wuKFiIiI9AqLFyIiItIrLF6IiIhIr7B4ISIiIr3C4oWIiIj0CosXIiIi0ivGcgcoCRqNBnfv3oW1tTUUCoXccYiIiKgIhBBITk6Gu7s7jIyK3p5iEMXL3bt34eHhIXcMIiIiKoZbt26hSpUqRd7eIIoXa2trALkHb2NjI3MaIiIiKoqkpCR4eHhIv8eLyiCKl6enimxsbFi8EBER6Rldu3ywwy4RERHpFRYvREREpFdYvBAREZFeMYg+L6S/hBDIycmBWq2WOwoREZUCpVIJY2PjEh3KhMULySYrKwv37t1DWlqa3FGIiKgUWVhYwM3NDaampiWyPxYvJAuNRoOYmBgolUq4u7vD1NSUAwwSERkYIQSysrLw4MEDxMTEoHbt2joNRlcQFi8ki6ysLGg0Gnh4eMDCwkLuOEREVErMzc1hYmKCGzduICsrC2ZmZi+9T3bYJVmVRAVORETlW0l/1/M3BxEREekVFi9E5cDatWtRqVIluWPoRB8zF6R9+/aYMGGC3DFIR+X1M3jt2jW4uLjAwsICf/31l9xxSl3//v2xZMmSMn1NFi9EOho+fDgUCsVzt06dOhXp+Z6enli2bJnWun79+uHvv/8uhbTa5PiyP3z4MLp27QonJyeYmZmhZs2a6NevH44ePVqmOQqzY8cOzJ49W+4YssnvM12Uz/OKFSvg6ekJMzMz+Pr6Ijw8PN/thBDo3LkzFAoFdu3aVWK5y+r/jS7u3r2L119/Ha+88gpGjhyJrl274vz581rbZGdnY/LkyWjcuDEsLS3h7u6OoUOH4u7du8V+3T///BNt2rSBg4MDzM3NUa9ePXzxxRcvfN7vv/+OVq1awdraGk5OTujduzdiY2N12u+nn36KuXPnIjExsdj5dcUOu0TF0KlTJ6xZs0ZrnUqlKvb+zM3NYW5u/rKxyp1vvvkGgYGBGDJkCLZs2YKaNWsiMTERhw8fxocffoiIiAi5IwIA7O3t5Y4gu2c/0y/6PG/ZsgVBQUFYtWoVfH19sWzZMgQEBCA6OhrOzs5a2y5btqxUriYsb/9vnjx5goCAALRt2xZr1qyBUqmElZUVAgIC8Ndff6F69eoAgLS0NERGRmL69Onw9vbGkydP8MEHH+Ctt97C6dOni/XalpaWCAwMhJeXFywtLfHnn3/i3XffhaWlJUaPHp3vc2JiYtC9e3cEBQVhw4YNSExMxIcffohevXohMjKyyPtt1KgRatasiZ9//hnjxo0rVn6dCQOQmJgoAIjExES5o1ARpaeni0uXLon09HS5o+hs2LBhonv37gU+rtFoRHBwsPDw8BCmpqbCzc1NjB8/XgghRLt27QQArZsQQqxZs0bY2tpK+wgODhbe3t7ihx9+EB4eHsLS0lKMHTtW5OTkiAULFggXFxfh5OQk5syZo/XaS5YsEY0aNRIWFhaiSpUqYuzYsSI5OVkIIcThw4efe+3g4GAhhBAZGRnio48+Eu7u7sLCwkK0bNlSHD58WGvfa9asER4eHsLc3Fz06NFDLF68WCvzs27cuCFMTEzEhx9+WOD79NTDhw9F//79hbu7uzA3NxeNGjUSGzdu1Nq+WrVq4osvvtBa5+3tLR1DYe+7EEKsWLFC1KpVS6hUKuHs7Cx69+4tPdauXTvxwQcfSMvr168XPj4+wsrKSri4uIgBAwaI+Ph46fGn7+XBgweFj4+PMDc3F35+fuLKlSsFvh8xMTECgNiyZYt45ZVXhJmZmWjevLmIjo4W4eHhwsfHR1haWopOnTqJ+/fvF5hNCCG6d+8uhg0bVuBr6epFn+n8tGzZUowbN05aVqvVwt3dXcybN09ruzNnzojKlSuLe/fuCQBi586dOr1OVFSUaN++vbCyshLW1taiWbNm4tSpU0KI5//fCCHE7NmzhZOTk7CyshIjR44UkydPFt7e3tLjT4917ty5wtnZWdja2orPPvtMZGdni48//ljY2dmJypUrix9//FFrv5MmTRK1a9cW5ubmonr16uLTTz8VWVlZ0uOpqanCz89PvPvuu1qfbSGEmDNnjqhVq5bWZ+hZ4eHhAoC4ceOGTu9PYXr27CkGDx5c4OPbtm0TxsbGQq1WS+t2794tFAqF1rEVZb+fffaZeOWVVwp8TkHf+cX9/c3TRkQlbPv27fjiiy/w7bff4urVq9i1axcaN24MIPf0RJUqVTBr1izcu3cP9+7dK3A/169fx2+//Yb9+/dj06ZN+OGHH9ClSxfcvn0bR44cwYIFC/Dpp5/i5MmT0nOMjIzw1Vdf4eLFi1i3bh0OHTqESZMmAQBat26NZcuWwcbGRnrtjz/+GAAQGBiIsLAwbN68GefOnUPfvn3RqVMnXL16FQBw8uRJjBw5EoGBgYiKisJrr72GOXPmvPB9yM7Oll7/WXn/Es/IyICPjw/27t2LCxcuYPTo0RgyZEiBpyEKer2C3vfTp0/j/fffx6xZsxAdHY39+/fj1VdfLXBf2dnZmD17Ns6ePYtdu3YhNjYWw4cPf267Tz75BEuWLMHp06dhbGyMd95554U5g4OD8emnnyIyMhLGxsYYOHAgJk2ahC+//BLHjh3DtWvXMGPGjCIfd36OHTsGKyurQm8bNmzQek5oaCicnZ1Rt25djB07Fo8ePSpw/1lZWYiIiIC/v7+0zsjICP7+/ggLC5PWpaWlYeDAgVixYgVcXV2LdSyDBg1ClSpVcOrUKURERGDKlCkwMTHJd9sNGzZg7ty5WLBgASIiIlC1alWsXLnyue0OHTqEu3fv4ujRo1i6dCmCg4PRtWtX2NnZ4eTJkxgzZgzeffdd3L59W3qOtbU11q5di0uXLuHLL7/E6tWrtU6fWFhY4Pjx41i1atVzrUyffPIJrl69+lyLVF6JiYlQKBRap3UbNmxY6M+wc+fOBe7vzJkzOH78ONq1a1fgNj4+PjAyMsKaNWugVquRmJiIn376Cf7+/gW+xwXtt2XLlggPD0dmZmaBr1eidCp1yim2vOifgqpwHx8fUbly5TK9+fj46JR92LBhQqlUCktLS63b3LlzhRC5rR916tQp8C+X/FoQ8mt5sbCwEElJSdK6gIAA4enpqfVXUt26dZ/7Szevbdu2CQcHhwJfR4jcFhKlUinu3Lmjtb5jx45i6tSpQgghBgwYIN58802tx/v161doy8uYMWOEjY2N1rpffvlF6z07d+6cEEKIs7eeaN2EEKJLly7io48+kp77opaXwt737du3CxsbG633M6/8WjfyOnXqlADwXCvWwYMHpW327t0rABTYmvi05eX777+X1m3atEkAECEhIdK6efPmibp16xaa7UUtL2lpaeLq1auF3vK+F5s2bRK//vqrOHfunNi5c6eoX7++aNGihcjJycl3/3fu3BEAxPHjx7XWT5w4UbRs2VJaHj16tBg5cqS0jGK0vFhbW4u1a9fm+9izn2dfX1+t1iAhhGjTps1zLS/VqlV77v9R27ZtpeWcnBxhaWkpNm3aVGCuRYsW6fzdUZD09HTRrFkzMXDgQK31sbGxhf4Mb9++/dy+KleuLExNTYWRkZGYNWvWC187NDRUODs7C6VSKQAIPz8/8eTJE533e/bsWQFAxMbGFniMJdnywj4vVK7ExcXhzp07csd4oddee+25v+ie9pvo27cvli1bhho1aqBTp05488030a1bNxgb6/bfzdPTE9bW1tKyi4sLlEql1ngJLi4uuH//vrR88OBBzJs3D1euXEFSUhJycnKQkZGBtLS0AgcDPH/+PNRqNerUqaO1PjMzEw4ODgCAy5cvo2fPnlqP+/n5Yf/+/YUew7N/gQYEBCAqKgp37txB+/btpTmt1Go1vl++FH/s2Yn7cfegzslGZmamTgMYFva+v/7666hWrZr0WKdOndCzZ88C9x8REYGZM2fi7NmzePLkCTQaDQDg5s2baNCggbSdl5eXdN/NzQ0AcP/+fVStWrXAnHmf4+LiAgBSC9HTdXl/psVhbm6OWrVqFXn7/v37S/cbN24MLy8v1KxZE6GhoejYsWOxMuzevRuHDh3CmTNnivX8p4KCgvB///d/UotA3759UbNmzXy3jY6Oxnvvvae1rmXLljh06JDWuoYNGz73/6hRo0bSslKphIODg9bPYcuWLfjqq69w/fp1pKSkICcnBzY2Ni91bEBuK9/bb78NIcRz3ynVqlXTeX/Hjh1DSkoKTpw4gSlTpqBWrVoYMGBAvtvGxcVh1KhRGDZsGAYMGIDk5GTMmDEDffr0wYEDB7T+/75ov0/7HpXVdC8sXqhcKW7Tclm/pqWlZYG/HDw8PBAdHY2DBw/iwIEDeO+997Bo0SIcOXKkwKbY/Dy7rUKhyHfd01+ssbGx6Nq1K8aOHYu5c+fC3t4ef/75J0aOHImsrKwCf1GnpKRAqVQiIiICSqVS6zErK6si531W7dq1kZiYiLi4OOk9trKyQq1atZ4r5Nau+gobf1yFiTM/R+16DdC0hhsmTJiArKwsaRsjIyMIIbSel52dLd0v7H23trZGZGQkQkND8ccff2DGjBmYOXMmTp069dzVV6mpqQgICEBAQAA2bNgAJycn3Lx5EwEBAVp5AO2f0dMv+qc/j4Lk95xn1+Xdx4uOOz/Hjh0r9JQCAHz77bcYNGhQvo/VqFEDjo6OuHbtWr7Fi6OjI5RKJeLj47XWx8fHSz/rQ4cO4fr168+9v71790bbtm0RGhpaaL6nZs6ciYEDB2Lv3r347bffEBwcjM2bNz9XTOtC1/9bYWFhGDRoED777DMEBATA1tYWmzdvfunLg58WLjdu3MChQ4eeK4YaNmyIGzduFPj8tm3b4rffftNa97RTcOPGjREfH4+ZM2cWWLysWLECtra2WLhwobTu559/hoeHB06ePIlWrVoVeb+PHz8GADg5ORXl0F8aixcqV4rb0768MTc3R7du3dCtWzeMGzcO9erVw/nz59GsWTOYmpqWyizaERER0Gg0WLJkifRX5datW7W2ye+1mzZtCrVajfv376Nt27b57rt+/fpafWsA4MSJE4Xm6dOnD6ZMmYIFCxa88JLNqNMn0f6NN9G1Vz8AQA13G/z9999arRxOTk5afYSSkpIQExOjtZ/C3ndjY2P4+/vD398fwcHBqFSpEg4dOoRevXpp7ePKlSt49OgR5s+fDw8PDwDyfi6fPW61Wo0LFy7gtddeK/A5zZs3R1RUVKH7fdrqk5/bt2/j0aNHUmvSs0xNTeHj44OQkBD06NEDQG7RFhISgsDAQADAlClT8H//939az2vcuDG++OILdOvWrdBsz6pTpw7q1KmDDz/8EAMGDMCaNWvyLV7q1q2LU6dOYejQodK6U6dO6fRa+Tl+/DiqVauGTz75RFpXWFFRFE8Ll6tXr+Lw4cNSK2de+/btK7RQfdGVVhqNptA+KGlpac+NfPv0D5jCivD89nvhwgVUqVIFjo6OhWYqKSxeiIohMzMTcXFxWuuMjY3h6OiItWvXQq1Ww9fXFxYWFvj5559hbm4uNQF7enri6NGj6N+/P1QqVYn9Z69Vqxays7OxfPlydOvWDX/99RdWrVqltY2npydSUlIQEhICb29vWFhYoE6dOhg0aBCGDh2KJUuWoGnTpnjw4AFCQkLg5eWFLl264P3330ebNm2wePFidO/eHb///vsLTxlVrVoVS5YswQcffIDHjx9j+PDhqF69Oh4/foyff/4ZwH9flFU9a+Lgvl8RdfokbGwrYfln3yM+Pl6reOnQoQPWrl2Lbt26oVKlSpgxY4ZWS1Fh7/uePXvwzz//4NVXX4WdnR327dsHjUaDunXr5pvb1NQUy5cvx5gxY3DhwgVZx4Dp0KEDgoKCsHfvXtSsWRNLly5FQkJCoc/R5bRRSkoKPvvsM/Tu3Ruurq64fv06Jk2ahFq1aiEgIEDarmPHjujZs6dUnAQFBWHYsGFo3rw5WrZsiWXLliE1NRUjRowAkNuimV+rZtWqVaW/4l8kPT0dEydORJ8+fVC9enXcvn0bp06dQu/evfPdfvz48Rg1ahSaN2+O1q1bY8uWLTh37hxq1KhRpNcrSO3atXHz5k1s3rwZLVq0wN69e7Fz585i7y87Oxt9+vRBZGQk9uzZA7VaLX2f2NvbSzMv63LaaMWKFahatSrq1asHADh69CgWL16M999/X9rm66+/xs6dOxESEgIA6NKlC7744gvMmjVLOm00bdo0VKtWDU2bNi3yfoHc1r433nijmO9IMejUQ6acYodd/aPvl0rjmUuOAUidLHfu3Cl8fX2FjY2NsLS0FK1atdLq2BkWFia8vLyESqV64aXSz77us5ezPtuZc+nSpcLNzU2Ym5uLgIAAsX79egFAqwPemDFjhIODg9al0llZWWLGjBnC09NTmJiYCDc3N9GzZ0+pQ60QQvzwww+iSpUqwtzcXHTr1u2Fl0o/deDAAdG5c2dhb28vjI2NhYuLi+jRo4fYv3+/tM3Rc/+I1954U1hYWgl7Ryfx6aefiqFDh2odb2JioujXr5+wsbERHh4eYu3atVoddgt7348dOybatWsn7OzshLm5ufDy8hJbtmwp8H3cuHGj8PT0FCqVSvj5+Yndu3cLAOLMmTNCiP867OZ9X8+cOSMAiJiYmHzfh6cddp/uo6D9PPtZyMrKEmPHjhX29vbC2dlZzJs3r0QvlU5LSxNvvPGGcHJyEiYmJqJatWpi1KhRIi4uTmu7atWqSe/1U8uXLxdVq1YVpqamomXLluLEiROFvhby6bCb336fyszMFP3795cuf3d3dxeBgYHS90Z+HdBnzZolHB0dhZWVlXjnnXfE+++/L1q1aiU9XpT/R09z5e0gPnHiROHg4CCsrKxEv379xBdffFGkz39+nn4W8rs9O0RBUX311VeiYcOGwsLCQtjY2IimTZuKb775RqtjcnBwsKhWrZrW8zZt2iSaNm0qLC0thZOTk3jrrbfE5cuXddpvenq6sLW1FWFhYQXmK+kOuwohnjmZqoeSkpJga2uLxMTEEulARaUvIyMDMTExqF69eonMMEr67dztBK1lryqVZMlBZSstLQ0ODg747bff0L59+1J5jddffx2urq746aefSmX/BKxcuRI7d+7EH3/8UeA2BX3nF/f3N08bERGRLA4fPowOHTqUWOGSlpaGVatWISAgAEqlEps2bZI6cFPpMTExwfLly8v0NVm8EBGRLLp06YIuXbqU2P4UCgX27duHuXPnIiMjA3Xr1sX27du1BtOjkvdsx+yywOKFiIgMgrm5OQ4ePCh3DCoDnB6AiIiI9AqLFyIiItIrLF5IVgZwsRsREb1ASX/Xs3ghWTwdirus5sEgIiL5PP2u12WKlMKwwy7JQqlUolKlStLEZxYWFs9N4kcVh8jRnjMoIyNDpiREVJKEEEhLS8P9+/dRqVKl5+ZPKy4WLySbp0OHv+wMuqT/7j9J11o2TS98zhYi0i+VKlUq0Yl3WbyQbBQKBdzc3ODs7PzCWXLJsP3fjlCt5ZCP2suSg4hKnomJSYm1uDzF4oVkp1QqS/yDTfrlTrL2TNecMoKICsMOu0RERKRXWLwQERGRXmHxQkRERHqFxQsRERHpFRYvREREpFdYvBAREZFeYfFCREREeoXFCxEREekVFi9ERESkV1i8EBERkV4pVvGyYsUKeHp6wszMDL6+vggPDy9w29WrV6Nt27aws7ODnZ0d/P39n9t++PDhUCgUWrdOnToVJxoREREZOJ2Lly1btiAoKAjBwcGIjIyEt7c3AgICCpwZODQ0FAMGDMDhw4cRFhYGDw8PvPHGG7hz547Wdp06dcK9e/ek26ZNm4p3RERERGTQdC5eli5dilGjRmHEiBFo0KABVq1aBQsLC/z444/5br9hwwa89957aNKkCerVq4fvv/8eGo0GISEhWtupVCq4urpKNzs7u+IdERERERk0nYqXrKwsREREwN/f/78dGBnB398fYWFhRdpHWloasrOzYW9vr7U+NDQUzs7OqFu3LsaOHYtHjx4VuI/MzEwkJSVp3YiIiKhi0Kl4efjwIdRqNVxcXLTWu7i4IC4urkj7mDx5Mtzd3bUKoE6dOmH9+vUICQnBggULcOTIEXTu3BlqtTrffcybNw+2trbSzcPDQ5fDICIiIj1mXJYvNn/+fGzevBmhoaEwMzOT1vfv31+637hxY3h5eaFmzZoIDQ1Fx44dn9vP1KlTERQUJC0nJSWxgCEiIqogdGp5cXR0hFKpRHx8vNb6+Ph4uLq6FvrcxYsXY/78+fjjjz/g5eVV6LY1atSAo6Mjrl27lu/jKpUKNjY2WjciIiKqGHQqXkxNTeHj46PV2fZp51s/P78Cn7dw4ULMnj0b+/fvR/PmzV/4Ordv38ajR4/g5uamSzwiIiKqAHS+2igoKAirV6/GunXrcPnyZYwdOxapqakYMWIEAGDo0KGYOnWqtP2CBQswffp0/Pjjj/D09ERcXBzi4uKQkpICAEhJScHEiRNx4sQJxMbGIiQkBN27d0etWrUQEBBQQodJREREhkLnPi/9+vXDgwcPMGPGDMTFxaFJkybYv3+/1In35s2bMDL6ryZauXIlsrKy0KdPH639BAcHY+bMmVAqlTh37hzWrVuHhIQEuLu744033sDs2bOhUqle8vCIiIjI0CiEEELuEC8rKSkJtra2SExMZP8XIj3kOWWv1nLs/C4yJSGislTc39+c24iIiIj0CosXIiIi0issXoiIiEivsHghIiIivcLihYiIiPQKixciIiLSK2U6txERlT1ehkxEhoYtL0RERKRXWLwQERGRXmHxQkRERHqFxQsRERHpFRYvREREpFdYvBAREZFeYfFCREREeoXFCxEREekVDlJHROXeswPtAboPtsfB+ogMB1teiIiISK+weCEiIiK9wuKFiIiI9AqLFyIiItIrLF6IiIhIr7B4ISIiIr3C4oWIiIj0CosXIiIi0iscpI6ISh0HiCOiksSWFyIiItIrLF6IiIhIr7B4ISIiIr3C4oWIiIj0CosXIiIi0issXoiIiEivsHghIiIivcLihYiIiPQKB6kjMjDPDghXUTMQkeFiywsRERHpFRYvREREpFdYvBAREZFeYfFCREREeoXFCxEREekVFi9ERESkV1i8EBERkV5h8UJERER6hcULERER6RWOsEtEL/TsiLmx87vIlISIiC0vREREpGdYvBAREZFeYfFCREREeoXFCxEREekVFi9ERESkV1i8EBERkV5h8UJEpUoIAU1mGoQQckchIgPBcV6IqMRkZ2dj+/bteHxo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Generate random dataset\n", + "np.random.seed(42) \n", + "mu_true = 5\n", + "sigma_true = 2\n", + "data = np.random.normal(mu_true, sigma_true, 1000)\n", + "mu_mle = np.mean(data)\n", + "sigma_mle = np.var(data)\n", + "\n", + "print(f\"True Mean: {mu_true}, MLE Mean: {mu_mle}\")\n", + "print(f\"True Variance: {sigma_true**2}, MLE Variance: {sigma_mle}\")\n", + "\n", + "# Plot histogram of the data and the estimated Gaussian\n", + "plt.hist(data, bins=100, density=True)\n", + "xmin, xmax = plt.xlim()\n", + "x = np.linspace(xmin, xmax, 100)\n", + "p = (1 / (np.sqrt(2 * np.pi * sigma_mle))) * np.exp(-0.5 * ((x - mu_mle) ** 2 / sigma_mle))\n", + "plt.plot(x, p, 'k', linewidth=2, label=f'Estimated Gaussian mu ={mu_mle:.2f}, sigma^2={sigma_mle:.2f})')\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd217430-cd7a-464b-971c-da5e0b9dcf51", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/q1,4,6.ipynb b/q1,4,6.ipynb new file mode 100644 index 0000000..8d3eeff --- /dev/null +++ b/q1,4,6.ipynb @@ -0,0 +1,661 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 10, + "id": "fd40996c-bf8b-4957-ae03-605b00edb01b", + "metadata": {}, + "outputs": [], + "source": [ + "import scipy as sc\n", + "import numpy as np\n", + "import pandas as pd\n", + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "296de93a-e1ba-457e-9d8d-e13830e453ad", + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "id": "291a16cf-d0e2-4ed5-8ab4-4240a41c36b3", + "metadata": {}, + "source": [ + "q1 b first \n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4d7fdc90-9b84-4477-b417-1f930bde5e74", + "metadata": {}, + "outputs": [], + "source": [ + "# setting the value of n and p\n", + "n = 20\n", + "p = 0.23\n", + "dist_b = [sc.stats.binom.pmf(r, n, p) for r in range(n+1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "85130d67-4172-4a6c-9463-d3ed4245f674", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.005368024674737596,\n", + " 0.032068718836094724,\n", + " 0.09100019565826885,\n", + " 0.16309125975118294,\n", + " 0.207041177151664,\n", + " 0.19789909919951268,\n", + " 0.14778179485677884,\n", + " 0.08828522809625762,\n", + " 0.042852732468800336,\n", + " 0.017066889121773288,\n", + " 0.005607692140011227,\n", + " 0.0015227499317621994,\n", + " 0.00034113553666101246,\n", + " 6.270623251311313e-05,\n", + " 9.36521654416624e-06,\n", + " 1.1189609377445386e-06,\n", + " 1.0444846415634899e-07,\n", + " 7.340915739025293e-09,\n", + " 3.654568441506096e-10,\n", + " 1.1490782522848984e-11,\n", + " 1.7161558313345875e-13]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dist_b" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "56c7cf4c-ad95-4f29-b757-b337fa35fd58", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.bar(range(n+1), dist_b, width = 0.7)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "11fcd57d-d1b4-4571-9e4a-14cf2d620ae0", + "metadata": {}, + "outputs": [], + "source": [ + "mean, var = sc.stats.binom.stats(n,p)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "58c7f453-8e42-4d8a-8351-05ed27793515", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.6000000000000005" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1887f411-6398-41e0-8b7a-f76b47339482", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.5420000000000007" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "942dde0a-8613-4f53-b5fc-97821b1876e3", + "metadata": {}, + "outputs": [], + "source": [ + "dist_p = [sc.stats.poisson.pmf(r, n*p) for r in range(n+1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "97aed44d-31fc-4a5c-b903-7c2539553683", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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duzYbuutVmvIsAMAAMwU1j01UVFRysjIUHV1dWCsq6tL1dXVyszMDLlNZmZmUL0k7dixI2T9Sy+9pIyMDKWnp1+yl3379slisWjIkCHhHAIAADBU2G8/ud1u5ebmatq0aZoxY4bKysrU1tamvLw8SdLixYs1dOhQeTweSdKjjz6qmTNn6umnn9acOXO0adMmffDBB3rxxReD5m1tbdWWLVv09NNPd9un1+vVnj17dO+99yo2NlZer1eFhYX62c9+pltuuaUnxw0AAAwTdqiZP3++jh8/rlWrVsnn82nKlCmqqqoK3Azc0NAgi+XbC0B33nmnKisrtXLlSq1YsUJjxozR1q1bNXHixKB5N23aJL/fr4ULF3bbp9Vq1aZNm7R69Wq1t7drxIgRKiwsDLpnBgAA3Nh6dKNwQUGBCgoKQq6rqanpNjZv3jzNmzfvonMuXbpUS5cuDblu6tSp2r17d9h9AgCAGwe//QQAAIxAqAEAAEYg1AAAACMQagAAgBEINQAAwAiEGgAAYARCDQAAMAKhBgAAGIFQAwAAjECoAQAARiDUAAAAIxBqAACAEQg1AADACIQaAABgBEINAAAwAqEGAAAYgVADAACMQKgBAABGINQAAAAjEGoAAIARCDUAAMAIhBoAAGAEQg0AADACoQYAABiBUAMAAIxAqAEAAEYg1AAAACMQagAAgBEINQAAwAiEGgAAYARCDQAAMAKhBgAAGIFQAwAAjECoAQAARiDUAAAAIxBqAACAEXoUasrLy2W32xUdHS2Hw6G9e/detH7Lli0aN26coqOjNWnSJL399ttB6x966CFFREQELVlZWUE1X331lRYtWqS4uDglJCRoyZIlOnXqVE/aBwAABgo71GzevFlut1vFxcWqq6tTenq6XC6Xjh07FrJ+165dWrhwoZYsWaIPP/xQ2dnZys7O1v79+4PqsrKy1NTUFFhee+21oPWLFi3SgQMHtGPHDm3btk1/+9vftHTp0nDbBwAAhgo71JSWlio/P195eXmaMGGCKioqFBMTow0bNoSsf+aZZ5SVlaXly5dr/PjxWrt2raZOnarnn38+qM5qtcpmswWWW265JbDu448/VlVVlf70pz/J4XDorrvu0nPPPadNmzapsbEx3EMAAAAGCivUdHR0qLa2Vk6n89sJLBY5nU55vd6Q23i93qB6SXK5XN3qa2pqNGTIEI0dO1YPP/ywvvzyy6A5EhISNG3atMCY0+mUxWLRnj17Qu63vb1dra2tQQsAADDXgHCKT5w4oc7OTiUnJweNJycn69ChQyG38fl8Iet9Pl/gcVZWlubOnasRI0boyJEjWrFihWbPni2v16vIyEj5fD4NGTIkuPEBA5SYmBg0zz/zeDxas2ZNOIcH3FDsT2zvlXmOlszplXkA4EqFFWqulgULFgT+njRpkiZPnqxRo0appqZGs2bN6tGcRUVFcrvdgcetra1KS0u74l4BAMD1Kay3n5KSkhQZGanm5uag8ebmZtlstpDb2Gy2sOolaeTIkUpKStLhw4cDc3z3RuRz587pq6++uuA8VqtVcXFxQQsAADBXWKEmKipKGRkZqq6uDox1dXWpurpamZmZIbfJzMwMqpekHTt2XLBekj7//HN9+eWXSklJCcxx8uRJ1dbWBmreffdddXV1yeFwhHMIAADAUGF/+sntdus//uM/9Morr+jjjz/Www8/rLa2NuXl5UmSFi9erKKiokD9o48+qqqqKj399NM6dOiQVq9erQ8++EAFBQWSpFOnTmn58uXavXu3jh49qurqaj3wwAMaPXq0XC6XJGn8+PHKyspSfn6+9u7dq//5n/9RQUGBFixYoNTU1N54HgAAQD8X9j018+fP1/Hjx7Vq1Sr5fD5NmTJFVVVVgZuBGxoaZLF8m5XuvPNOVVZWauXKlVqxYoXGjBmjrVu3auLEiZKkyMhIffTRR3rllVd08uRJpaam6r777tPatWtltVoD87z66qsqKCjQrFmzZLFYlJOTo2efffZKjx8AABiiRzcKFxQUBK60fFdNTU23sXnz5mnevHkh6wcOHKi//vWvl9xnYmKiKisrw+oTAADcOK6LTz8hND5yCwDA5eMHLQEAgBEINQAAwAiEGgAAYARCDQAAMAKhBgAAGIFQAwAAjECoAQAARiDUAAAAIxBqAACAEQg1AADACIQaAABgBEINAAAwAqEGAAAYgVADAACMQKgBAABGINQAAAAjEGoAAIARCDUAAMAIhBoAAGAEQg0AADACoQYAABiBUAMAAIxAqAEAAEYg1AAAACMQagAAgBEINQAAwAiEGgAAYARCDQAAMAKhBgAAGIFQAwAAjECoAQAARiDUAAAAIxBqAACAEQg1AADACIQaAABghB6FmvLyctntdkVHR8vh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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.bar(range(n+1), dist_p)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3dc864ea-3fd4-4495-ada2-37b6183ef316", + "metadata": {}, + "outputs": [], + "source": [ + "mean_p, var_p = sc.stats.poisson.stats(n*p)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "ea697cc1-2f16-475a-9593-ba88c53ae313", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.6000000000000005" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_p" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "13028652-8874-4636-9770-17dd21b07b66", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.6000000000000005" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var_p" + ] + }, + { + "cell_type": "markdown", + "id": "5ef08c7f-bc7c-4f3c-b3da-d7202f8c7937", + "metadata": {}, + "source": [ + "thus we can say mean is same but varriance differs alot" + ] + }, + { + "cell_type": "markdown", + "id": "6b9c7336-0215-48d5-ad39-13504010da3f", + "metadata": {}, + "source": [ + "##Q1 b second ##\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2ba0639d-3f6f-424a-9718-7abc2f1900f7", + "metadata": {}, + "outputs": [], + "source": [ + "n = 300000\n", + "p = .000001" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "eb41aa75-fde9-4fc9-a5f7-27b13fc4a218", + "metadata": {}, + "outputs": [], + "source": [ + "dist_b = pd.Series(sc.stats.binom.pmf(r,n,p) for r in range(n+1))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "12e42311-99fe-4c0e-a2d7-a5d3ddc23d8e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 300001.000000\n", + "mean 0.000003\n", + "std 0.001413\n", + "min 0.000000\n", + "25% 0.000000\n", + "50% 0.000000\n", + "75% 0.000000\n", + "max 0.740818\n", + "dtype: float64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dist_b.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "301c54fe-371e-41e1-bd08-e58c6702857b", + "metadata": {}, + "source": [ + "lets see for poisson with lambda = n*p" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "b082dc3e-eb40-4c59-8b20-dc7b6afa8d98", + "metadata": {}, + "outputs": [], + "source": [ + "lamba = n*p" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "92ffa6e7-ce74-4dbc-a4f5-632e50f710e8", + "metadata": {}, + "outputs": [], + "source": [ + "dist_p = pd.Series(sc.stats.poisson.pmf(r, lamba) for r in range(n+1))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "5ef2a006-1b43-456b-baed-7500f0eed719", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "count 300001.000000\n", + "mean 0.000003\n", + "std 0.001413\n", + "min 0.000000\n", + "25% 0.000000\n", + "50% 0.000000\n", + "75% 0.000000\n", + "max 0.740818\n", + "dtype: float64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dist_p.describe()" + ] + }, + { + "cell_type": "markdown", + "id": "7d2ec100-06ef-4920-8bd4-b669dcf02826", + "metadata": {}, + "source": [ + "now there is no difference between poisson and binomial when n tends to infinity and p tends to zero but n*p is a normal number" + ] + }, + { + "cell_type": "markdown", + "id": "c7c993b9-718b-4b41-923f-fb5d0ce841be", + "metadata": {}, + "source": [ + "# Q4 #" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "dee42ea5-8a45-4ac3-a670-0be8d43d7473", + "metadata": {}, + "outputs": [], + "source": [ + "data = {'x=2':2/27,\n", + " 'x=3':3/27,\n", + " 'x=1':1/27,\n", + " 'x=1':1/27,\n", + " 'x=7':7/27,\n", + " 'x=0':0/27,\n", + " 'x=4':4/27,\n", + " 'x=5':9/27}\n", + "\n", + "# Create a DataFrame\n", + "df = pd.DataFrame(data, index = ['P(X) = x'])" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "9fa6affb-bbf0-4208-8b9a-a557348f6636", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
x=2x=3x=1x=7x=0x=4x=5
P(X) = x0.0740740.1111110.0370370.2592590.00.1481480.333333
\n", + "
" + ], + "text/plain": [ + " x=2 x=3 x=1 x=7 x=0 x=4 x=5\n", + "P(X) = x 0.074074 0.111111 0.037037 0.259259 0.0 0.148148 0.333333" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "id": "8e56a174-6888-4346-a7b4-ee7d94ea855c", + "metadata": {}, + "source": [ + "now lets take random samples of size 10000 and calculate mean and varrience of them 10000 times each " + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "584dbb7e-39a1-42da-b9de-34a20c7ebeb6", + "metadata": {}, + "outputs": [], + "source": [ + "ListOfMeans = []\n", + "for i in range(10000):\n", + " ListOfSamples = []\n", + " for j in range(10000):\n", + " sample = random.sample([2,3,1,1,7,0,4,5], 1)\n", + " ListOfSamples.append(sample[0])\n", + " ListOfMeans.append(pd.Series(ListOfSamples).mean())\n", + " ListOfSamples = []" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "931f0e36-9629-4137-938c-c11a0dc3b976", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(array([ 1., 1., 0., 0., 2., 1., 1., 2., 0., 0., 2.,\n", + " 3., 5., 12., 7., 8., 9., 14., 15., 20., 22., 24.,\n", + " 32., 34., 41., 42., 53., 63., 66., 74., 91., 107., 111.,\n", + " 124., 170., 145., 167., 189., 188., 217., 248., 216., 250., 281.,\n", + " 274., 299., 283., 293., 290., 273., 310., 336., 267., 289., 302.,\n", + " 273., 296., 256., 225., 265., 222., 212., 199., 213., 177., 159.,\n", + " 155., 125., 109., 120., 88., 89., 85., 69., 58., 44., 43.,\n", + " 46., 30., 33., 24., 23., 14., 22., 8., 5., 8., 8.,\n", + " 4., 4., 6., 2., 1., 1., 2., 1., 0., 0., 1.,\n", + " 1.]),\n", + " array([2.7905 , 2.792166, 2.793832, 2.795498, 2.797164, 2.79883 ,\n", + " 2.800496, 2.802162, 2.803828, 2.805494, 2.80716 , 2.808826,\n", + " 2.810492, 2.812158, 2.813824, 2.81549 , 2.817156, 2.818822,\n", + " 2.820488, 2.822154, 2.82382 , 2.825486, 2.827152, 2.828818,\n", + " 2.830484, 2.83215 , 2.833816, 2.835482, 2.837148, 2.838814,\n", + " 2.84048 , 2.842146, 2.843812, 2.845478, 2.847144, 2.84881 ,\n", + " 2.850476, 2.852142, 2.853808, 2.855474, 2.85714 , 2.858806,\n", + " 2.860472, 2.862138, 2.863804, 2.86547 , 2.867136, 2.868802,\n", + " 2.870468, 2.872134, 2.8738 , 2.875466, 2.877132, 2.878798,\n", + " 2.880464, 2.88213 , 2.883796, 2.885462, 2.887128, 2.888794,\n", + " 2.89046 , 2.892126, 2.893792, 2.895458, 2.897124, 2.89879 ,\n", + " 2.900456, 2.902122, 2.903788, 2.905454, 2.90712 , 2.908786,\n", + " 2.910452, 2.912118, 2.913784, 2.91545 , 2.917116, 2.918782,\n", + " 2.920448, 2.922114, 2.92378 , 2.925446, 2.927112, 2.928778,\n", + " 2.930444, 2.93211 , 2.933776, 2.935442, 2.937108, 2.938774,\n", + " 2.94044 , 2.942106, 2.943772, 2.945438, 2.947104, 2.94877 ,\n", + " 2.950436, 2.952102, 2.953768, 2.955434, 2.9571 ]),\n", + " )" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.hist(ListOfMeans, bins = 100)" + ] + }, + { + "cell_type": "markdown", + "id": "600de5cc-7b1b-4fc1-9731-79150ee147ee", + "metadata": {}, + "source": [ + "resulted graph is nearly same as normal distribution " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "2d7779a5-4008-4bf2-8e69-44eb8b99590f", + "metadata": {}, + "outputs": [], + "source": [ + "mean1 = 4.52\n", + "stddev1 = 4.496" + ] + }, + { + "cell_type": "markdown", + "id": "55bb6b2d-716c-4648-8c0d-18fb231a7c3b", + "metadata": {}, + "source": [ + "# Q6 #" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "473ed2a8-5c5a-4c1a-9a02-7faacc99dbb9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Z-score: 28.27076228190531\n", + "P-value: 1.24609375\n", + "P-value for p = 0.497: 1.231284540041297\n" + ] + } + ], + "source": [ + "from scipy.stats import binom\n", + "\n", + "\n", + "x_bar = 4.97\n", + "n = 10\n", + "p_null = 0.5\n", + "se = (p_null * (1 - p_null) / n)**0.5\n", + "z = (x_bar - p_null) / se\n", + "p_value = 2 * (1 - binom.cdf(int(x_bar), n, p_null))\n", + "print(\"Z-score:\", z)\n", + "print(\"P-value:\", p_value)\n", + "p_alt = 0.497\n", + "p_value_alt = 2 * (1 - binom.cdf(int(x_bar), n, p_alt))\n", + "print(\"P-value for p = 0.497:\", p_value_alt)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "43630cea-2e17-4ee0-947f-9c96a9a0a0a5", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/q2.tex b/q2.tex new file mode 100644 index 0000000..0ac1bd2 --- /dev/null +++ b/q2.tex @@ -0,0 +1,31 @@ +\documentclass{article} +\usepackage{amsmath} + +\begin{document} + + + +Q2 \\ +To find $Cov(Z, W)$ + +\begin{enumerate} + \item Mean of $Z$ and $W$ + + $E[Z] = E[XY^3 + X^3Y] = 0$ (since the expectation of the product of independent variables is the product of their expectations). + $E[W] = E[XY + X^2Y + XY^2] = 0$. + + + + \item Covariance of $Z$ and $W$: + \begin{align*} + \text{Cov}(Z, W) &= E[ZW] - E[Z]E[W] \\ + &= E[(XY^3 + X^3Y)(XY + X^2Y + XY^2)] - (0)(0) \\ + &= E[2XY^4 + 2X^4Y^2 + 2XY^2] \\ + &= 2E[XY^4] + 2E[X^4Y^2] + 2E[XY^2] \\ + &= 2(0)(3) + 2(3)(1) + 2(0)(1) = 0 + 6 + 0 = 6 + \end{align*} +\end{enumerate} + +Therefore, $\text{Cov}(Z, W) = 6$. + +\end{document} diff --git a/q3.tex b/q3.tex new file mode 100644 index 0000000..9b4279c --- /dev/null +++ b/q3.tex @@ -0,0 +1,48 @@ +\documentclass{article} +\usepackage{amsmath} +\usepackage{amsfonts} + +\begin{document} + + +\author{} +\date{} + + + + + +\section*{Proof} +Let $S = X_1 + X_2 + \ldots + X_n$. By Chebyshev's Inequality, +\[ +P\left(\left|\frac{S}{n} - \mu\right| \geq \epsilon\right) \leq \frac{\text{Var}(S)}{n^2 \epsilon^2}. +\] + +Since the random variables $X_i$ are i.i.d., +\[ +\text{Var}(S) = \text{Var}(X_1) + \text{Var}(X_2) + \ldots + \text{Var}(X_n) = n \sigma^2. +\] + +Substituting this into the inequality above, +\[ +P\left(\left|\frac{S}{n} - \mu\right| \geq \epsilon\right) \leq \frac{\sigma^2}{n \epsilon^2}. +\] + +To match with Chebyshev's inequality, we choose $k\sigma$ as the distance from the mean $\mu$, where $\sigma = \frac{\sigma}{\sqrt{n}}$ is the standard deviation of the sample mean: +\[ +k\frac{\sigma}{\sqrt{n}} = \epsilon \Rightarrow k = \frac{\sqrt{n} \epsilon}{\sigma}. +\] + +Therefore, we have: +\[ +P\left(\left|\frac{S}{n} - \mu\right| \geq \epsilon\right) \leq \frac{\sigma^2}{n \epsilon^2} = \frac{1}{k^2}. +\] + +As $n$ approaches infinity, the probability tends to zero: +\[ +\lim_{n \to \infty} P\left(\left|\frac{S}{n} - \mu\right| \geq \epsilon\right) = 0. +\] + +This proves the Weak Law of Large Numbers. + +\end{document}