diff --git a/1-Introduction/04-stats-and-probability/README.md b/1-Introduction/04-stats-and-probability/README.md
index 4f762e2b..4ea65986 100644
--- a/1-Introduction/04-stats-and-probability/README.md
+++ b/1-Introduction/04-stats-and-probability/README.md
@@ -38,7 +38,7 @@ Suppose we draw a sequence of n samples of a random variable X: x1, x
> It can be demonstrated that for any discrete distribution with values {x1, x2, ..., xN} and corresponding probabilities p1, p2, ..., pN, the expectation would equal to E(X)=x1p1+x2p2+...+xNpN.
-To identify how far the values are spread, we can compute the variance σ2 = ∑(xi - \mu;)2/n), where μ is the mean of the sequence. The value σ is called **standard deviation**, and σ2 is called a **variance**.
+To identify how far the values are spread, we can compute the variance σ2 = ∑(xi - μ)2/n, where μ is the mean of the sequence. The value σ is called **standard deviation**, and σ2 is called a **variance**.
## Real-world Data
@@ -48,12 +48,40 @@ When we analyze data from real life, they often are not random variables as such
[180.0, 215.0, 210.0, 210.0, 188.0, 176.0, 209.0, 200.0, 231.0, 180.0, 188.0, 180.0, 185.0, 160.0, 180.0, 185.0, 197.0, 189.0, 185.0, 219.0]
```
-> When working with real data, we assume that data points are samples drawn from some probability distribution. This assumption allows us to apply machine learning techniques and build working predictive models.
+> When working with real-world data, we assume that all data points are samples drawn from some probability distribution. This assumption allows us to apply machine learning techniques and build working predictive models.
+To see what is the distribution of our data, we can plot a graph called a **histogram**. X-axis would contain a number of different weight intervals (so-called **bins**), and vertical axis would show the number of times our random variable sample was inside a given interval.
+
+From this histogram you can see that all values are centered around certain mean weight, and the further we go from that weight - the fewer weights of that value are encountered. I.e., it is very improbable that a weight of a baseball player would be very different from the mean weight. Variance of weights show the extent to which weights are likely to differ from the mean.
+
+> If we take weights of other people, not from the baseball league, the distribution is likely to be different. However, the shape of the distribution will be the same, but mean and variance would change. So, if we train our model on baseball players, it i likely to give wrong results when applied to students of a university, because the underlying distribution is different.
## Normal Distribution
+The distribution of weights that we have seen above is very typical, and many measurements from real world follow the same type of distribution, but with different mean and variance. This distribution is called **normal distribution**, and it plays very important role in statistics.
+
+Using normal distribution is a correct way to generate random weights of potential baseball players. Once we know mean weight `mean` and standard deviation `std`, we can generate 1000 weight samples in the following way:
+```python
+samples = np.random.normal(mean,std,1000)
+```
+
+If we plot the histogram of the generated samples we will see the picture very similar to the one shown above. And if we increase the number of samples and the number of bins, we can generate a picture of a normal distribution that is more close to ideal:
+
+
+*Normal Distribution with mean=0 and std.dev=1*
+
+
+## Law of Large Numbers and Central Limit Theorem
+
+One of the reasons why normal distribution is so important is so-called **central limit theorem**. Suppose we have a large sample of independent N values X1, ..., XN, sampled from any distribution with mean μ and variance σ2. Then, for sufficiently large N (in other words, when N→∞), the mean ΣiXi would be normally distributed, with mean μ and variance σ2/N.
+
+> Another way to interpret central limit theorem is to say that regardless of distribution, when you compute the mean of any random variable values you end up with normal distribution.
+
+From central limit theorem it also follows that, when N→∞, the probability of the sample mean to be equal to μ becomes 1. This is known as **the law of large numbers**.
+
+
+
## 🚀 Challenge
diff --git a/1-Introduction/04-stats-and-probability/images/normal-histogram.png b/1-Introduction/04-stats-and-probability/images/normal-histogram.png
new file mode 100644
index 00000000..af40eca9
Binary files /dev/null and b/1-Introduction/04-stats-and-probability/images/normal-histogram.png differ
diff --git a/1-Introduction/04-stats-and-probability/notebook.ipynb b/1-Introduction/04-stats-and-probability/notebook.ipynb
index 41dda760..ad4cd849 100644
--- a/1-Introduction/04-stats-and-probability/notebook.ipynb
+++ b/1-Introduction/04-stats-and-probability/notebook.ipynb
@@ -338,6 +338,172 @@
],
"metadata": {}
},
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "source": [
+ "mean = df['Weight'].mean()\r\n",
+ "var = df['Weight'].var()\r\n",
+ "std = df['Weight'].std()\r\n",
+ "print(f\"Mean = {mean}\\nVariance = {var}\\nStandard Deviation = {std}\")"
+ ],
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Mean = 201.6892545982575\n",
+ "Variance = 440.6426848120547\n",
+ "Standard Deviation = 20.991490771549664\n"
+ ]
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Normal Distribution\r\n",
+ "\r\n",
+ "Let's create an artificial sample of weights that follows normal distribution with the same mean and variance as real data:"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "source": [
+ "generated = np.random.normal(mean,std,1000)\r\n",
+ "generated[:20]"
+ ],
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "array([187.05660174, 181.77292853, 183.09148457, 198.30703945,\n",
+ " 201.51640234, 213.21564624, 221.00562653, 218.30263433,\n",
+ " 234.16968198, 187.40138853, 199.34286071, 205.52705493,\n",
+ " 251.03651986, 189.64156046, 222.23536452, 211.37502445,\n",
+ " 205.07287496, 207.90248813, 180.66579133, 226.86092236])"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 60
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "source": [
+ "plt.hist(generated,bins=15)\r\n",
+ "plt.show()"
+ ],
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/svg+xml": "\r\n\r\n\r\n",
+ "image/png": "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vSUlJTp8+LAOHjyo06dPq729XQsXLlR3d/dglT1ovqofv/nNbzRjxgzdf//9euutt/Tuu+9qy5YtGjZsmDMnmfqxdu1avfHGG9q/f78++OADrV27VmvWrNEvfvELZ06i9KOurk7PPfec3nnnHdXW1urzzz9XUVGRrl+/7szZtm2bqqqqVFNTozNnzsjn82nevHlqa2tz5iRLP27cuKFz585py5YtOnfunA4dOqTLly9r8eLFUedJln78vmS4nvanH8l0Pe1PP+7Y9dQMYZLM4cOHe41fu3bN/NEf/ZG5cOGCGT9+vNm+fbuz73//939NWlqaOXjwoDP2ySefmLvuusu88cYbd6DqwdNXP5544gnz3e9+95bHJFs/Jk2aZF566aWosW984xvm+9//vjEmsfsRDAaNJFNXV2eMMaanp8f4fD6zdetWZ85nn31mPB6P2blzpzEmufrRl1//+tdGkrly5YoxJjn7kazX0776kczX0776caeup0NuReWr9PT0aPny5dq4caMmTZrUa39DQ4O6urpUVFTkjPn9fhUUFKi+vv5Oljroenp6dOzYMd17772aP3++Ro8erenTp0e9HZJM/ZCkGTNm6OjRo/rkk09kjNHJkyd1+fJlzZ8/X1Ji9yMUCkmSsrOzJUlNTU0KBAJRr9XtdmvmzJnOa02mftxqjsvlcr5bLNn6kczX0y/3I9mvp339/bhT19OECyovv/yyUlNT9fzzz/e5PxAIKD09XSNHjowa93q9vb4kcagLBoNqb2/X1q1b9cgjj+j48eN6/PHHtWTJEtXV1UlKrn5I0t///d/rgQce0NixY5Wenq5HHnlEO3bs0IwZMyQlbj+MMVq3bp1mzJihgoICSXJez5e/CPT3X2sy9ePLPvvsM5WWlmrZsmXOF60lWz+S9XraVz+S+Xp6q78fd+p6GrdfoT8YGhoa9JOf/ETnzp2Ty+Ua0LHGmAEfY7uenh5J0qOPPqq1a9dKkh588EHV19dr586dmjlz5i2PTcR+SF/8w3rnnXd09OhRjR8/XqdOndKqVas0ZswYzZ0795bHDfV+rF69Wu+9955Onz7da9+XX1d/Xmsi90P64sbaJ598Uj09PdqxY8dXni8R+5HM19O++pHM19Nb/Xu5U9fThFpRefvttxUMBjVu3DilpqYqNTVVV65c0fr16zVhwgRJks/nU2dnp1pbW6OODQaDvf5nOdSNGjVKqampeuCBB6LGJ06c6Nylnkz96Ojo0N/+7d+qqqpKixYt0te+9jWtXr1aTzzxhH70ox9JSsx+rFmzRkePHtXJkyc1duxYZ9zn80lSr//Z/P5rTaZ+3NTV1aWlS5eqqalJtbW1UV9bn0z9SNbr6a36kazX01v1405eTxMqqCxfvlzvvfeeGhsbnc3v92vjxo168803JUlTp05VWlqaamtrneNaWlp04cIFFRYWxqv0QZGenq5p06b1+kjZ5cuXnS9/TKZ+dHV1qaurS3fdFf3XPiUlxfnfUiL1wxij1atX69ChQ/rlL3+pvLy8qP15eXny+XxRr7Wzs1N1dXXOa02mfki/CykffvihTpw4oZycnKj9ydSPZLueflU/ku16+lX9uKPX0/7f82uHtrY2c/78eXP+/HkjyVRVVZnz5887d+V/2ZfvUjfGmGeffdaMHTvWnDhxwpw7d878+Z//uZkyZYr5/PPP78AriK2v6sehQ4dMWlqa2bVrl/nwww/Nq6++alJSUszbb7/tnCOZ+jFz5kwzadIkc/LkSfPb3/7W7NmzxwwbNszs2LHDOUei9OOv//qvjcfjMW+99ZZpaWlxths3bjhztm7dajwejzl06JB5//33zXe+8x0zZswYEw6HnTnJ0o+uri6zePFiM3bsWNPY2Bg1JxKJOOdJln70JZGvp/3pRzJdT/vTjzt1PR1yQeXkyZNGUq9txYoVfc7v6x9WR0eHWb16tcnOzjYZGRlm4cKF5urVq4Nf/CDoTz92795t/viP/9gMGzbMTJkyxRw5ciTqHMnUj5aWFvO9733P+P1+M2zYMHPfffeZH//4x6anp8c5R6L0o68+SDJ79uxx5vT09Jgf/OAHxufzGbfbbR5++GHz/vvvR50nWfrR1NR0yzknT550zpMs/ehLIl9P+9uPZLme9qcfd+p66vr/BQEAAFgnoe5RAQAAiYWgAgAArEVQAQAA1iKoAAAAaxFUAACAtQgqAADAWgQVAABgLYIKAACwFkEFAABYi6ACAACsRVABAADWIqgAAABr/T/pvzsvxQnO7QAAAABJRU5ErkJggg=="
+ },
+ "metadata": {}
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "source": [
+ "plt.hist(np.random.normal(0,1,50000),bins=300)\r\n",
+ "plt.show()"
+ ],
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/svg+xml": "\r\n\r\n\r\n",
+ "image/png": "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vfjii7r77rvt9Y888ojq6upUU1PjYHW4lNLSUr300kt68803lZub63Q56MNLL72ku+++WykpKfa69vZ2uVwuXXHFFQqHwxHb4lFCBZT+On36tEKhkP347Nmzmjlzpn7/+9+rsLBQ48aNc7A69Oajjz7SHXfcoYKCAu3Zsyfu33yJqrCwUAUFBdq6dau97vrrr9ddd93FJFlDWZal0tJSVVVV6Y033lBeXp7TJeESmpub9eGHH0as+9GPfqSvf/3revTRRxPi9FxSzkEZP358xOMrr7xSknTNNdcQTgx19uxZFRUVafz48frVr36lTz75xN7m9XodrAxdLV++XA888IAmT56sKVOmaPv27Tp9+rSWLFnidGnoxbJly7R37169/PLLysrKsucLud1uZWRkOFwdepKVldUthGRmZmr06NEJEU6kJA0oiD/79+/X+++/r/fff79biEzCJqDR7rnnHn366ad64okn1NjYqPz8fL3yyiu6+uqrnS4Nvei4JLyoqChi/bPPPqtFixZd/oIAJekpHgAAYDZmGAIAAOMQUAAAgHEIKAAAwDgEFAAAYBwCCgAAMA4BBQAAGIeAAgAAjENAAQAAxiGgAAAA4xBQAACAcQgoAADAOAQUAABgnP8H89I+mMR4d+MAAAAASUVORK5CYII="
+ },
+ "metadata": {}
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "Since most values in real life are normally distributed, it means we should not use uniform random number generator to generate sample data. Here is what happens if we try to generate weights with uniform distribution (generated by `np.random.rand`):"
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "source": [
+ "wrong_sample = np.random.rand(1000)*2*std+mean-std\r\n",
+ "plt.hist(wrong_sample)\r\n",
+ "plt.show()"
+ ],
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/svg+xml": "\r\n\r\n\r\n",
+ "image/png": "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"
+ },
+ "metadata": {}
+ }
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "## Simulating Normal Distribution with Central Limit Theorem\r\n",
+ "\r\n",
+ "Pseudo-random generator in Python is designed to give us uniform distribution. If we want to create a generator for normal distribution, we can use central limit theorem. To get a normally distributed value we will just compute a mean of a uniform-generated sample."
+ ],
+ "metadata": {}
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "source": [
+ "def normal_random(sample_size=100):\r\n",
+ " sample = [random.uniform(0,1) for _ in range(sample_size) ]\r\n",
+ " return sum(sample)/sample_size\r\n",
+ "\r\n",
+ "sample = [normal_random() for _ in range(100)]\r\n",
+ "plt.hist(sample)\r\n",
+ "plt.show()"
+ ],
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/svg+xml": "\r\n\r\n\r\n",
+ "image/png": "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jrD79ujRQ3fccUebKyxut1tut7szJQIAgCjh2ArLxo0blZ6erlGjRoXd1xij6upqeb1eByoDAADRJuwVlnPnzunYsWPB/draWlVXVyshIUE333yzJMnv9+uXv/ylfvSjH7U4xvz589WvXz8VFBRIklasWKGxY8dqyJAh8vv9Wrt2raqrq7V+/fqOXBMAAOhmwg4shw8f1uTJk4P7ubm5kqQFCxZoy5YtkqTt27fLGKOvfe1rLY5RV1enHj3+trhz5swZPfzww/L5fPJ4PBo9erQqKip05513hlseAADohlzGGNPVRUSC3++Xx+NRQ0OD4uPju7ocABE2MK+4q0sI2/FV07u6BMB67X395ruEAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6BBYAAGA9AgsAALAegQUAAFiPwAIAAKxHYAEAANYjsAAAAOsRWAAAgPUILAAAwHoEFgAAYD0CCwAAsB6BBQAAWI/AAgAArEdgAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1wg4sFRUVmjFjhlJSUuRyubR79+6Q8w899JBcLlfINnbs2KuOW1hYqOHDh8vtdmv48OHatWtXuKUBAIBuKuzAcv78eY0aNUrr1q1rtc3999+v+vr64LZ37942x6ysrNScOXM0b948vfXWW5o3b55mz56t1157LdzyAABANxQTbofs7GxlZ2e32cbtdis5ObndY65Zs0b33Xef8vPzJUn5+fkqLy/XmjVrtG3btnBLBAAA3Ywjz7CUlZUpMTFRt9xyi7797W/r1KlTbbavrKxUVlZWyLGpU6fq0KFDrfYJBALy+/0hGwAA6J4iHliys7P1s5/9TC+//LJ+9KMf6fXXX9c999yjQCDQah+fz6ekpKSQY0lJSfL5fK32KSgokMfjCW6pqakRuwYAAGCXsN8Supo5c+YE/3vkyJEaM2aMBgwYoOLiYn35y19utZ/L5QrZN8Y0O/Zp+fn5ys3NDe77/X5CCwAA3VTEA8uVvF6vBgwYoJqamlbbJCcnN1tNOXXqVLNVl09zu91yu90RqxMAANjL8c9h+eCDD3Ty5El5vd5W24wbN06lpaUhx0pKSpSZmel0eQAA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XCH7xphmxyTp4sWLmjt3rlasWKFbbrmlxbHOnj2rb3zjG3rhhRd04403OlKvEyI5B5J06dIlJSYm6vnnn1fPnj2Vnp6u999/X08//bTV/ygjPQ9lZWX64Q9/qGeffVYZGRk6duyYFi1aJK/Xq6VLl0a8/kho7xxI0tChQzV06NDg/rhx43Ty5Ek988wzIS/U4YxpCyfm4bKnnnpK27ZtU1lZmWJjYyNbeARFcg66+71Rat/vQbTeG9uDwOKgG2+8UT179myWlk+dOtUsVUufhJHDhw+rqqpKjz76qKRPfvmMMYqJiVFJSYkSEhJ0/PhxzZgxI9jv0qVLkqSYmBgdPXpUgwcPdvCqwuPEHNxzzz3yer3q1auXevbsGex76623yufzqbGxUb1793b2wsLk1DwsXbpU8+bN0z/+4z9Kkm677TadP39eDz/8sL7//e+rRw973vUNdw5aM3bsWG3dujW4n5yc3OkxryWn5uGyZ555RitXrtS+ffv093//952u1wlOzMGf/vSnbn1vbM2VvwfRdm8Mhz13s26od+/eSk9PV2lpacjx0tJSZWZmNmsfHx+v3/3ud6qurg5uCxcu1NChQ1VdXa2MjAwNGzasWZsvfvGLmjx5sqqrq5WamnqtLq9dnJgDSbrrrrt07Nix4A1Jkt555x15vV4r/0E6NQ8fffRRs1DSs2dPmU8eqHfugjog3DloTVVVlbxeb3B/3LhxzcYsKSkJa8xryal5kKSnn35a//qv/6rf/OY3GjNmTETqdYITc9Dd742tufL3INrujWHpiid9P0su/9naxo0bzR//+EezePFic91115njx48bY4zJy8sz8+bNa7V/a38l9Gm2PwnvxBzU1dWZv/u7vzOPPvqoOXr0qPnVr35lEhMTzb/92785eSmd4sQ8LFu2zMTFxZlt27aZd99915SUlJjBgweb2bNnO3kpHRbuHPz7v/+72bVrl3nnnXfM73//e5OXl2ckmcLCwmCbV155xfTs2dOsWrXKHDlyxKxatSpq/qw5kvOwevVq07t3b/Of//mfIX/yevbs2Wt+fe3hxBxcqbvdG9szB9F4b2wvAss1sH79ejNgwADTu3dvc/vtt5vy8vLguQULFpi777671b7dIbAY48wcHDp0yGRkZBi3220GDRpkfvjDH7b4mQw2ifQ8XLhwwSxfvtwMHjzYxMbGmtTUVPPII4+E9eev11o4c7B69ergtfXt29eMHz/eFBcXNxvzl7/8pRk6dKjp1auXGTZsWJsvYraI9DwMGDDASGq2LVu27BpdUfic+F34tO52b2zvHETjvbE9XMZYtm4MAABwBZ5hAQAA1iOwAAAA6xFYAACA9QgsAADAegQWAABgPQILAACwHoEFAABYj8ACAACsR2ABAADWI7AAAADrEVgAAID1CCwAAMB6/w+bp61mhe2/rAAAAABJRU5ErkJggg=="
+ },
+ "metadata": {}
+ }
+ ],
+ "metadata": {}
+ },
{
"cell_type": "code",
"execution_count": null,