Skip to content

Instantly share code, notes, and snippets.

@MrSnor
Last active April 11, 2024 01:04
Show Gist options
  • Select an option

  • Save MrSnor/f00eda4b6653db7798f99d6a096a1f36 to your computer and use it in GitHub Desktop.

Select an option

Save MrSnor/f00eda4b6653db7798f99d6a096a1f36 to your computer and use it in GitHub Desktop.
IDSUP programs (chapterwise)
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"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
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment