Last active
April 11, 2024 01:04
-
-
Save MrSnor/f00eda4b6653db7798f99d6a096a1f36 to your computer and use it in GitHub Desktop.
IDSUP programs (chapterwise)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Chapter 5 - Statistics\n", | |
| "\n", | |
| "2 types of statistics - descriptive and inferential" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Descriptive Statistics\n", | |
| "\n", | |
| "- Descriptive statistics is a set of techniques used to summarize and present data.\n", | |
| "- Used to describe the characteristics of the population using sample data.\n", | |
| "- Characteristics can be mean, median, mode, variance, standard deviation, etc.\n", | |
| "- We measure the central tendency, graphical representation, dispersion, percentiles, etc.\n", | |
| "\n", | |
| "## Inferential Statistics\n", | |
| "\n", | |
| "- Inferential statistics is a set of techniques used to make inferences about the population using sample data.\n", | |
| "- Used to test hypotheses and make predictions about the population using sample data.\n", | |
| "\n", | |
| "## Types of Data\n", | |
| "\n", | |
| "- Categorical\n", | |
| "- Numerical\n", | |
| "\n", | |
| "i. Categorical Data : \n", | |
| " a. **Nominal** - Nominal data is data that has no order. \n", | |
| " b. **Ordinal** - Ordinal data is data that has an order. \n", | |
| " c. **Binary** - Binary data is data that has two possible values.\n", | |
| "\n", | |
| "ii. Numerical Data : Continuous, Discrete\n", | |
| " a. **Continuous** - Continuous data is data that has a range of values. \n", | |
| " b. **Discrete** - Discrete data is data that has a finite number of values.\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Measures of central tendency\n", | |
| "\n", | |
| "Mean - The average value of a dataset.\n", | |
| "\n", | |
| "formula = x1 + x2 + x3 + ... + xn / n\n", | |
| "\n", | |
| "- Mean uses the sum of all values divided by the number of values.\n", | |
| "\n", | |
| "- Mean is not affected by outliers." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Example of using mean function\n", | |
| "2.0\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# mean in python\n", | |
| "from typing import List\n", | |
| "def mean(v: List[float]) -> float:\n", | |
| " assert len(v) > 0\n", | |
| " return sum(v) / len(v)\n", | |
| "\n", | |
| "# example of using the function\n", | |
| "print(\"Example of using mean function\")\n", | |
| "a = [1, 2, 3]\n", | |
| "print(mean(a))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Median - The middle most value of a dataset." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 18, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "List of 7 random numbers: [73, 79, 111, 2, 97, 34, 28]\n", | |
| "Sorted list of 7 random numbers: [2, 28, 34, 73, 79, 97, 111]\n", | |
| "73\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Median in python\n", | |
| "from typing import List\n", | |
| "import random\n", | |
| "\n", | |
| "def median(v: List[float]) -> float:\n", | |
| " n = len(v)\n", | |
| " sorted_v = sorted(v) # ordered dataset\n", | |
| " midpoint = n // 2\n", | |
| " if n % 2 == 1:\n", | |
| " return sorted_v[midpoint]\n", | |
| " else:\n", | |
| " after_midpoint = sorted_v[midpoint]\n", | |
| " before_midpoint = sorted_v[midpoint - 1]\n", | |
| " return (after_midpoint + before_midpoint) / 2\n", | |
| " \n", | |
| "# example of using the function using list of 7 random numbers\n", | |
| "random_numbers = [random.randint(1, 165) for _ in range(7)]\n", | |
| "print(\"List of 7 random numbers: \", random_numbers)\n", | |
| "print(\"Sorted list of 7 random numbers: \", sorted(random_numbers))\n", | |
| "print(median(random_numbers))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Mode - The most common value of a dataset." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Example of using mode function\n", | |
| "[3]\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "from collections import Counter\n", | |
| "\n", | |
| "def mode(v: List[float]) -> List[float]:\n", | |
| " c = Counter(v)\n", | |
| " max_count = max(c.values())\n", | |
| " return [x for x, count in c.items() if count == max_count]\n", | |
| "\n", | |
| "# example of using the mode function\n", | |
| "print(\"Example of using mode function\")\n", | |
| "a = [1, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4]\n", | |
| "print(mode(a))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Quantile - The value that divides a dataset into two equal parts." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 24, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Example of using quantile function\n", | |
| "6\n", | |
| "11\n", | |
| "16\n", | |
| "20\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# Example of Quantile in python\n", | |
| "from typing import List\n", | |
| "\n", | |
| "def find_quantile(xs: List[float], p: float) -> float:\n", | |
| " \"\"\"\n", | |
| " xs: a list of numbers\n", | |
| " p: a number between 0 and 1 (e.g - 0.25) (for calculating quantiles)\n", | |
| " \"\"\"\n", | |
| " p_index = p * len(xs)\n", | |
| " if p_index == 0:\n", | |
| " return min(xs)\n", | |
| " elif p_index == len(xs):\n", | |
| " return max(xs)\n", | |
| " else:\n", | |
| " return sorted(xs)[int(p_index)]\n", | |
| " \n", | |
| "# example of using the quantile function\n", | |
| "print(\"Example of using quantile function\")\n", | |
| "# list of 20 numbers\n", | |
| "a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", | |
| "print(find_quantile(a, 0.25))\n", | |
| "print(find_quantile(a, 0.5))\n", | |
| "print(find_quantile(a, 0.75))\n", | |
| "print(find_quantile(a, 1))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Deciles - Divides a dataset into 10 equal parts.\n", | |
| "\n", | |
| "Percentiles - Divides a dataset into 100 equal parts." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 26, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Example of using qth quantile function\n", | |
| "6\n", | |
| "11\n", | |
| "16\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# code for qth quantile in python\n", | |
| "\n", | |
| "def qth_quantile(ds: List[float], q: float) -> float:\n", | |
| " \"\"\"\n", | |
| " xs: a list of numbers\n", | |
| " q: a number between 0 and 1 (e.g - 0.25) (for calculating quantiles)\n", | |
| " \"\"\"\n", | |
| " n = len(ds)\n", | |
| " ods = sorted(ds)\n", | |
| " x_index = int(q * n)\n", | |
| " return ods[x_index]\n", | |
| "\n", | |
| "# This doesn't give exact median\n", | |
| "\n", | |
| "# Example of using the qth quantile function\n", | |
| "print(\"Example of using qth quantile function\")\n", | |
| "# list of 20 numbers\n", | |
| "a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", | |
| "print(qth_quantile(a, 0.25))\n", | |
| "print(qth_quantile(a, 0.5))\n", | |
| "print(qth_quantile(a, 0.75))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## Measure of dispersion (spread)\n", | |
| "\n", | |
| "- Statistic measure of dispersion is the difference between the largest and smallest values in a dataset.\n", | |
| "- Describe the spread or variability of a dataset.\n", | |
| "\n", | |
| "It includes -\n", | |
| "\n", | |
| "- Range - The difference between the largest and smallest values in a dataset.\n", | |
| "\n", | |
| "- Inter-quartile range - The difference between the 75th and 25th percentiles.\n", | |
| "\n", | |
| "- Variance - The average of the squared differences from the mean." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 27, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Example of using range function\n", | |
| "19\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "# code for range \n", | |
| "\n", | |
| "def range_(ds: List[float]) -> float:\n", | |
| " \"\"\"\n", | |
| " xs: a list of numbers\n", | |
| " \"\"\"\n", | |
| " x_max = max(ds)\n", | |
| " x_min = min(ds)\n", | |
| " return x_max - x_min\n", | |
| "\n", | |
| "# example of using the range function\n", | |
| "print(\"Example of using range function\")\n", | |
| "# list of 20 numbers\n", | |
| "a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]\n", | |
| "print(range_(a))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Plot for y = x^2" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 28, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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", | |
| "text/plain": [ | |
| "<Figure size 640x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Plot for y = x^2\n", | |
| "from matplotlib import pyplot as plt\n", | |
| "\n", | |
| "x_list = [a/10 for a in range(-100, 100)]\n", | |
| "\n", | |
| "y_list = [a**2 for a in x_list]\n", | |
| "\n", | |
| "plt.plot(x_list, y_list)\n", | |
| "plt.show()" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": ".venv", | |
| "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.2" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment