diff --git a/fall-2024/math/mat-203/00010/.~lock.mat-203-00010.odt# b/fall-2024/math/mat-203/00010/.~lock.mat-203-00010.odt#
new file mode 100644
index 0000000..e3b831e
--- /dev/null
+++ b/fall-2024/math/mat-203/00010/.~lock.mat-203-00010.odt#
@@ -0,0 +1 @@
+,winsdominoes,Fons-iMac-2.local,19.11.2024 23:03,file:///Users/winsdominoes/Library/Application%20Support/LibreOffice/4;
\ No newline at end of file
diff --git a/fall-2024/math/mat-203/00010/01_ExampleDescriptiveStatsStudents.ipynb b/fall-2024/math/mat-203/00010/01_ExampleDescriptiveStatsStudents.ipynb
index df45e49..2a079cc 100644
--- a/fall-2024/math/mat-203/00010/01_ExampleDescriptiveStatsStudents.ipynb
+++ b/fall-2024/math/mat-203/00010/01_ExampleDescriptiveStatsStudents.ipynb
@@ -4,7 +4,19 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "ename": "ModuleNotFoundError",
+ "evalue": "No module named 'numpy'",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[1], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m#Numerical Python\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# To plot\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mmatplotlib\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyplot\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mplt\u001b[39;00m\n",
+ "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'numpy'"
+ ]
+ }
+ ],
"source": [
"#Numerical Python\n",
"import numpy as np\n",
@@ -810,7 +822,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.12.4"
+ "version": "3.13.0"
}
},
"nbformat": 4,
diff --git a/fall-2024/math/mat-203/00010/Whr2024Descriptive.ipynb b/fall-2024/math/mat-203/00010/Whr2024Descriptive.ipynb
index b870f5a..a512cdf 100644
--- a/fall-2024/math/mat-203/00010/Whr2024Descriptive.ipynb
+++ b/fall-2024/math/mat-203/00010/Whr2024Descriptive.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": 278,
"metadata": {},
"outputs": [],
"source": [
@@ -22,7 +22,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": 279,
"metadata": {},
"outputs": [],
"source": [
@@ -32,7 +32,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 280,
"metadata": {},
"outputs": [],
"source": [
@@ -49,7 +49,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 281,
"metadata": {},
"outputs": [],
"source": [
@@ -59,7 +59,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 282,
"metadata": {},
"outputs": [],
"source": [
@@ -70,7 +70,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": 283,
"metadata": {},
"outputs": [
{
@@ -79,7 +79,7 @@
"['Iceland', 'India', 'Indonesia', 'Iraq', 'Ireland', 'Israel', 'Italy']"
]
},
- "execution_count": 26,
+ "execution_count": 283,
"metadata": {},
"output_type": "execute_result"
}
@@ -92,7 +92,7 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": 284,
"metadata": {},
"outputs": [],
"source": [
@@ -106,7 +106,7 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": 285,
"metadata": {},
"outputs": [
{
@@ -283,7 +283,7 @@
"max 0.590000 0.948000 0.843000 0.516000 "
]
},
- "execution_count": 28,
+ "execution_count": 285,
"metadata": {},
"output_type": "execute_result"
}
@@ -294,7 +294,7 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": 286,
"metadata": {},
"outputs": [
{
@@ -571,7 +571,7 @@
"[121 rows x 13 columns]"
]
},
- "execution_count": 29,
+ "execution_count": 286,
"metadata": {},
"output_type": "execute_result"
}
@@ -582,7 +582,7 @@
},
{
"cell_type": "code",
- "execution_count": 40,
+ "execution_count": 287,
"metadata": {},
"outputs": [
{
@@ -623,18 +623,18 @@
" \n",
"
\n",
" \n",
- " 13 | \n",
+ " 0 | \n",
" Afghanistan | \n",
- " 2022 | \n",
- " 1.281 | \n",
+ " 2023 | \n",
+ " 1.446 | \n",
" NaN | \n",
- " 0.228 | \n",
- " 54.875 | \n",
" 0.368 | \n",
+ " 55.2 | \n",
+ " 0.228 | \n",
" NaN | \n",
- " 0.733 | \n",
- " 0.206 | \n",
- " 0.576 | \n",
+ " 0.738 | \n",
+ " 0.261 | \n",
+ " 0.46 | \n",
" Southern Asia | \n",
" Asia | \n",
"
\n",
@@ -643,31 +643,31 @@
""
],
"text/plain": [
- " Country name year Life Ladder Log GDP per capita Social support \\\n",
- "13 Afghanistan 2022 1.281 NaN 0.228 \n",
+ " Country name year Life Ladder Log GDP per capita Social support \\\n",
+ "0 Afghanistan 2023 1.446 NaN 0.368 \n",
"\n",
- " Healthy life expectancy at birth Freedom to make life choices \\\n",
- "13 54.875 0.368 \n",
+ " Healthy life expectancy at birth Freedom to make life choices Generosity \\\n",
+ "0 55.2 0.228 NaN \n",
"\n",
- " Generosity Perceptions of corruption Positive affect Negative affect \\\n",
- "13 NaN 0.733 0.206 0.576 \n",
+ " Perceptions of corruption Positive affect Negative affect Subregion \\\n",
+ "0 0.738 0.261 0.46 Southern Asia \n",
"\n",
- " Subregion Continent \n",
- "13 Southern Asia Asia "
+ " Continent \n",
+ "0 Asia "
]
},
- "execution_count": 40,
+ "execution_count": 287,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "Dat.loc[Dat[\"Life Ladder\"] == Dat[\"Life Ladder\"].min()]"
+ "Dat2023.loc[Dat2023[\"Life Ladder\"] == Dat2023[\"Life Ladder\"].min()]"
]
},
{
"cell_type": "code",
- "execution_count": 43,
+ "execution_count": 288,
"metadata": {},
"outputs": [
{
@@ -708,18 +708,18 @@
" \n",
" \n",
" \n",
- " 497 | \n",
- " Denmark | \n",
- " 2005 | \n",
- " 8.019 | \n",
- " 10.849 | \n",
- " 0.972 | \n",
- " 68.3 | \n",
- " 0.971 | \n",
- " NaN | \n",
- " 0.237 | \n",
- " 0.777 | \n",
- " 0.154 | \n",
+ " 35 | \n",
+ " Finland | \n",
+ " 2023 | \n",
+ " 7.699 | \n",
+ " 10.808 | \n",
+ " 0.947 | \n",
+ " 71.3 | \n",
+ " 0.943 | \n",
+ " -0.001 | \n",
+ " 0.185 | \n",
+ " 0.717 | \n",
+ " 0.173 | \n",
" Northern Europe | \n",
" Europe | \n",
"
\n",
@@ -728,47 +728,47 @@
""
],
"text/plain": [
- " Country name year Life Ladder Log GDP per capita Social support \\\n",
- "497 Denmark 2005 8.019 10.849 0.972 \n",
+ " Country name year Life Ladder Log GDP per capita Social support \\\n",
+ "35 Finland 2023 7.699 10.808 0.947 \n",
"\n",
- " Healthy life expectancy at birth Freedom to make life choices \\\n",
- "497 68.3 0.971 \n",
+ " Healthy life expectancy at birth Freedom to make life choices \\\n",
+ "35 71.3 0.943 \n",
"\n",
- " Generosity Perceptions of corruption Positive affect Negative affect \\\n",
- "497 NaN 0.237 0.777 0.154 \n",
+ " Generosity Perceptions of corruption Positive affect Negative affect \\\n",
+ "35 -0.001 0.185 0.717 0.173 \n",
"\n",
- " Subregion Continent \n",
- "497 Northern Europe Europe "
+ " Subregion Continent \n",
+ "35 Northern Europe Europe "
]
},
- "execution_count": 43,
+ "execution_count": 288,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "Dat.loc[Dat[\"Life Ladder\"] == Dat[\"Life Ladder\"].max()]"
+ "Dat2023.loc[Dat2023[\"Life Ladder\"] == Dat2023[\"Life Ladder\"].max()]"
]
},
{
"cell_type": "code",
- "execution_count": 48,
+ "execution_count": 289,
"metadata": {},
"outputs": [],
"source": [
- "avg_health = Dat[\"Healthy life expectancy at birth\"].median()"
+ "avg_health = Dat2023[\"Healthy life expectancy at birth\"].median()"
]
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": 290,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "65.22\n"
+ "66.3\n"
]
}
],
@@ -778,7 +778,7 @@
},
{
"cell_type": "code",
- "execution_count": 56,
+ "execution_count": 291,
"metadata": {},
"outputs": [
{
@@ -787,7 +787,7 @@
"np.float64(0.231)"
]
},
- "execution_count": 56,
+ "execution_count": 291,
"metadata": {},
"output_type": "execute_result"
}
@@ -801,7 +801,7 @@
},
{
"cell_type": "code",
- "execution_count": 57,
+ "execution_count": 292,
"metadata": {},
"outputs": [
{
@@ -810,7 +810,7 @@
"array([4.6125, 5.42 , 6.3215])"
]
},
- "execution_count": 57,
+ "execution_count": 292,
"metadata": {},
"output_type": "execute_result"
}
@@ -822,34 +822,373 @@
},
{
"cell_type": "code",
- "execution_count": 64,
+ "execution_count": 293,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "5.42\n",
- "5.4660082404265635\n",
- "5.3416056329049155\n",
- "5.207292342092034\n",
- "5.446561471442401\n",
- "1.7089999999999996\n",
- "5.4660082404265635\n"
+ "5.868\n",
+ "5.601454545454545\n",
+ "5.46003534802306\n",
+ "5.277807689332831\n",
+ "5.670474226804124\n",
+ "5.738901639344262\n",
+ "5.601454545454545\n"
]
}
],
"source": [
- "ll = Dat[\"Life Ladder\"]\n",
+ "ll = Dat2023[\"Life Ladder\"]\n",
+ "\n",
+ "Mean = ll.mean()\n",
"\n",
"print(ll.median())\n",
- "print(ll.mean())\n",
+ "print(Mean)\n",
"print(gmean(ll))\n",
"print(hmean(ll))\n",
+ "print(trim_mean(ll, 0.1))\n",
"print(trim_mean(ll, 0.25))\n",
- "print(iqr(ll).mean())\n",
"print(winsorize(ll).mean())"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 294,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1.1545804575939485\n",
+ "1.1593812286445444\n",
+ "6.253\n",
+ "1.8730000000000002\n",
+ "0.8130000000000006\n",
+ "0.9629526671675434\n"
+ ]
+ }
+ ],
+ "source": [
+ "S2Biased = np.var(ll)\n",
+ "S2Unbiased = np.var(ll, ddof=1)\n",
+ "\n",
+ "S1 = np.sqrt(S2Biased)\n",
+ "S2 = np.sqrt(S2Unbiased)\n",
+ "R = ll.max() - ll.min()\n",
+ "IQR = iqr(ll)\n",
+ "MAD = median_abs_deviation(ll)\n",
+ "AAD = abs(ll-ll.mean()).mean()\n",
+ "\n",
+ "print(S1)\n",
+ "print(S2)\n",
+ "print(R)\n",
+ "print(IQR)\n",
+ "print(MAD)\n",
+ "print(AAD)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 295,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def an(n):\n",
+ " return np.sqrt((n-1)/2) * gamma((n-1)/2) / gamma(n/2)\n",
+ "\n",
+ "def c4(n):\n",
+ " return 1/an(n)\n",
+ "\n",
+ "# d2 for n in 2,...,25\n",
+ "d2 = {2:1.128, 3:1.693, 4:2.059, 5:2.326, 6:2.534, 7:2.704, 8:2.847, 9:2.970, 10:3.078, 11:3.173, 12:3.258, 13:3.336, 14:3.407, 15:3.472, 16:3.532, 17:3.588, 18:3.640, 19:3.689, 20:3.735, 21:3.778, 22:3.819, 23:3.858, 24:3.895, 25:3.931}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 296,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "121\n",
+ "0.9979188593597667\n"
+ ]
+ }
+ ],
+ "source": [
+ "N = len(ll)\n",
+ "\n",
+ "print(N)\n",
+ "print(c4(N))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 297,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "1.1617990959589308\n",
+ "1.3884569776304965\n",
+ "1.2053556036450552\n",
+ "1.2068821913267496\n"
+ ]
+ }
+ ],
+ "source": [
+ "\n",
+ "\n",
+ "sigma_1 = S2 / c4(N)\n",
+ "#sigma_2 = R / d2[N]\n",
+ "sigma_3 = IQR / (2 * norm.ppf(0.75))\n",
+ "sigma_4 = MAD / norm.ppf(0.75)\n",
+ "sigma_5 = AAD * np.sqrt(np.pi/2)\n",
+ "\n",
+ "print(sigma_1)\n",
+ "#print(sigma_2)\n",
+ "print(sigma_3)\n",
+ "print(sigma_4)\n",
+ "print(sigma_5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 298,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "m2 = S2Biased\n",
+ "m3 = ((ll-Mean)**3).mean()\n",
+ "\n",
+ "k2 = S2Unbiased\n",
+ "k3 = N**2 / ((N-1)*(N-2))*m3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 299,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "g1_byhand = m3 / m2**(3/2)\n",
+ "g1 = skew(ll)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 300,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(-0.6037), np.float64(-0.6037))"
+ ]
+ },
+ "execution_count": 300,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "g1_byhand.round(4), g1.round(4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 301,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "G1_byhand = k3 / k2**(3/2)\n",
+ "G1 = skew(ll, bias=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 302,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(-0.6113), np.float64(-0.6113))"
+ ]
+ },
+ "execution_count": 302,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "G1_byhand.round(4), G1.round(4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "m4 = ((ll-Mean)**4).mean()\n",
+ "\n",
+ "k4 = N**2*((N+1)*m4 - 3*(N-1)*m2**2) / ((N-1)*(N-2)*(N-3))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Coefficient of kurtosis based on central moments"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "g2_byhand = m4/m2**2\n",
+ "g2 = kurtosis(ll, fisher=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(4.8753), np.float64(4.8753))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "g2_byhand.round(4), g2.round(4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 303,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'k4' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[303], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m G2_byhand \u001b[38;5;241m=\u001b[39m \u001b[43mk4\u001b[49m\u001b[38;5;241m/\u001b[39mk2\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m3\u001b[39m\n\u001b[1;32m 2\u001b[0m G2 \u001b[38;5;241m=\u001b[39m kurtosis(ll, fisher\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, bias\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'k4' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "G2_byhand = k4/k2**2 + 3\n",
+ "G2 = kurtosis(ll, fisher=False, bias=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(7.2795), np.float64(7.2795))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "G2_byhand.round(4), G2.round(4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "NameError",
+ "evalue": "name 'g2_byhand' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[251], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m g2_excess_byhand \u001b[38;5;241m=\u001b[39m \u001b[43mg2_byhand\u001b[49m \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m3\u001b[39m\n\u001b[1;32m 2\u001b[0m g2_excess \u001b[38;5;241m=\u001b[39m kurtosis(ll)\n",
+ "\u001b[0;31mNameError\u001b[0m: name 'g2_byhand' is not defined"
+ ]
+ }
+ ],
+ "source": [
+ "g2_excess_byhand = g2_byhand - 3\n",
+ "g2_excess = kurtosis(ll)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(1.8753), np.float64(1.8753))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "g2_excess_byhand.round(4), g2_excess.round(4)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "G2_excess_byhand = G2_byhand - 3\n",
+ "G2_excess = kurtosis(ll, bias=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(np.float64(4.2795), np.float64(4.2795))"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "G2_excess_byhand.round(4), G2_excess.round(4)"
+ ]
}
],
"metadata": {
@@ -868,7 +1207,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.12.6"
+ "version": "3.13.0"
}
},
"nbformat": 4,
diff --git a/fall-2024/math/mat-203/00010/mat-203-00010.odt b/fall-2024/math/mat-203/00010/mat-203-00010.odt
index df16b60..fa3be39 100644
Binary files a/fall-2024/math/mat-203/00010/mat-203-00010.odt and b/fall-2024/math/mat-203/00010/mat-203-00010.odt differ