You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
581 lines
18 KiB
581 lines
18 KiB
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Utangulizi wa Uwezekano na Takwimu\n",
|
|
"Katika daftari hili, tutacheza na baadhi ya dhana tulizozijadili awali. Dhana nyingi kutoka kwa uwezekano na takwimu zipo kwa uwakilishi mzuri katika maktaba kuu za usindikaji data katika Python, kama `numpy` na `pandas`.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import pandas as pd\n",
|
|
"import random\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Vigezo vya Nasibu na Mgawanyo\n",
|
|
"Tuanze kwa kuchora sampuli ya thamani 30 kutoka kwenye mgawanyo wa usawa kutoka 0 hadi 9. Pia tutahesabu wastani na utofauti.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"sample = [ random.randint(0,10) for _ in range(30) ]\n",
|
|
"print(f\"Sample: {sample}\")\n",
|
|
"print(f\"Mean = {np.mean(sample)}\")\n",
|
|
"print(f\"Variance = {np.var(sample)}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Ili kutathmini kitaalamu ni thamani ngapi tofauti zipo katika sampuli, tunaweza kuchora **histogramu**:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.hist(sample)\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Kuchambua Takwimu Halisi\n",
|
|
"\n",
|
|
"Wastani na utofauti ni muhimu sana wakati wa kuchambua data za dunia halisi. Hebu tupakue data kuhusu wachezaji wa baseball kutoka [SOCR MLB Height/Weight Data](http://wiki.stat.ucla.edu/socr/index.php/SOCR_Data_MLB_HeightsWeights)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df = pd.read_csv(\"../../data/SOCR_MLB.tsv\",sep='\\t', header=None, names=['Name','Team','Role','Weight','Height','Age'])\n",
|
|
"df\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> Tunatumia kifurushi kinachoitwa [**Pandas**](https://pandas.pydata.org/) hapa kwa uchambuzi wa data. Tutazungumzia zaidi kuhusu Pandas na kazi na data katika Python baadaye katika kozi hii.\n",
|
|
"\n",
|
|
"Hebu tukokotoe wastani wa umri, urefu na uzito:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df[['Age','Height','Weight']].mean()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Sasa tutilie maanani urefu, na kuhesabu utofauti wa kawaida na utofauti wa mwelekeo:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"print(list(df['Height'])[:20])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"mean = df['Height'].mean()\n",
|
|
"var = df['Height'].var()\n",
|
|
"std = df['Height'].std()\n",
|
|
"print(f\"Mean = {mean}\\nVariance = {var}\\nStandard Deviation = {std}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Mbali na wastani, ni maana pia kuangalia thamani ya kati na robo. Hizi zinaweza kuonyeshwa kwa kutumia **box plot**:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,2))\n",
|
|
"plt.boxplot(df['Height'].ffill(), vert=False, showmeans=True)\n",
|
|
"plt.grid(color='gray', linestyle='dotted')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Tunaweza pia kutengeneza michoro ya sanduku ya vijumuiko vya seti yetu ya data, kwa mfano, imegawanywa kwa nafasi ya mchezaji.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.boxplot(column='Height', by='Role', figsize=(10,8))\n",
|
|
"plt.xticks(rotation='vertical')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> **Kumbuka**: Mchoro huu unaonyesha, kuwa kwa wastani, urefu wa wachezaji wa msingi wa kwanza ni mrefu zaidi kuliko urefu wa wachezaji wa msingi wa pili. Baadaye tutajifunza jinsi tunavyoweza kupima nadharia hii kwa njia rasmi zaidi, na jinsi ya kuonyesha kwamba data yetu ina umuhimu wa takwimu kuonyesha hivyo.\n",
|
|
"\n",
|
|
"Umri, urefu na uzito ni vigezo vyote vya nasibu vinavyendelea. Unaonaje mgawanyo wake? Njia nzuri ya kugundua ni kuchora histogramu ya thamani:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df['Weight'].hist(bins=15, figsize=(10,6))\n",
|
|
"plt.suptitle('Weight distribution of MLB Players')\n",
|
|
"plt.xlabel('Weight')\n",
|
|
"plt.ylabel('Count')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Mgawanyo wa Kawaida\n",
|
|
"\n",
|
|
"Tuvumbue sampuli bandia ya uzito inayofuata mgawanyo wa kawaida na wastani na utofauti sawa na data yetu halisi:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"generated = np.random.normal(mean, std, 1000)\n",
|
|
"generated[:20]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(generated, bins=15)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(np.random.normal(0,1,50000), bins=300)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Kwa kuwa thamani nyingi katika maisha halisi husambazwa kawaida, hatupaswi kutumia kizalishaji cha namba za bahati nasibu zenye usambazaji wa sawa kutengeneza data za sampuli. Hapa ni kile kinachotokea ikiwa tutajaribu kuzalisha uzito kwa usambazaji wa sawa (ulizalishwa na `np.random.rand`):\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"wrong_sample = np.random.rand(1000)*2*std+mean-std\n",
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(wrong_sample)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Intervalli za Kuwa na Hakika\n",
|
|
"\n",
|
|
"Sasa hebu tukokotoe intervalli za kuwa na hakika kwa uzito na urefu wa wachezaji baseball. Tutatumia msimbo [kutoka kwenye mjadala huu wa stackoverflow](https://stackoverflow.com/questions/15033511/compute-a-confidence-interval-from-sample-data):\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import scipy.stats\n",
|
|
"\n",
|
|
"def mean_confidence_interval(data, confidence=0.95):\n",
|
|
" a = 1.0 * np.array(data)\n",
|
|
" n = len(a)\n",
|
|
" m, se = np.mean(a), scipy.stats.sem(a)\n",
|
|
" h = se * scipy.stats.t.ppf((1 + confidence) / 2., n-1)\n",
|
|
" return m, h\n",
|
|
"\n",
|
|
"for p in [0.85, 0.9, 0.95]:\n",
|
|
" m, h = mean_confidence_interval(df['Weight'].fillna(method='pad'),p)\n",
|
|
" print(f\"p={p:.2f}, mean = {m:.2f} ± {h:.2f}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Upimaji wa Nadharia\n",
|
|
"\n",
|
|
"Hebu chunguza majukumu tofauti katika seti yetu ya data ya wachezaji wa baseball:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.groupby('Role').agg({ 'Weight' : 'mean', 'Height' : 'mean', 'Age' : 'count'}).rename(columns={ 'Age' : 'Count'})"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Hebu tuchunguze dhana kwamba Wachezaji wa Msingi wa Kwanza ni warefu zaidi kuliko Wachezaji wa Msingi wa Pili. Njia rahisi kabisa ya kufanya hivyo ni kupima tofauti za kujiamini:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"for p in [0.85,0.9,0.95]:\n",
|
|
" m1, h1 = mean_confidence_interval(df.loc[df['Role']=='First_Baseman',['Height']],p)\n",
|
|
" m2, h2 = mean_confidence_interval(df.loc[df['Role']=='Second_Baseman',['Height']],p)\n",
|
|
" print(f'Conf={p:.2f}, 1st basemen height: {m1-h1[0]:.2f}..{m1+h1[0]:.2f}, 2nd basemen height: {m2-h2[0]:.2f}..{m2+h2[0]:.2f}')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Tunaweza kuona kuwa vipindi havivuki.\n",
|
|
"\n",
|
|
"Njia ya takwimu sahihi zaidi ya kuthibitisha nadharia ni kutumia **Mtihani wa Student t**:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from scipy.stats import ttest_ind\n",
|
|
"\n",
|
|
"tval, pval = ttest_ind(df.loc[df['Role']=='First_Baseman',['Height']], df.loc[df['Role']=='Second_Baseman',['Height']],equal_var=False)\n",
|
|
"print(f\"T-value = {tval[0]:.2f}\\nP-value: {pval[0]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Thamani mbili zinazorejeshwa na kazi ya `ttest_ind` ni:\n",
|
|
"* thamani ya p inaweza kuchukuliwa kuwa uwezekano wa mgawanyo miwili kuwa na wastani mmoja. Katika kesi yetu, ni ndogo sana, ikimaanisha kwamba kuna ushahidi thabiti unaoonyesha kuwa wachezaji wa kwanza wa msingi ni warefu zaidi.\n",
|
|
"* thamani ya t ni thamani ya wastani wa tofauti iliyosanifiwa inayotumiwa katika jaribio la t, na inalinganishwa na thamani ya kikomo kwa thamani fulani ya kuaminika.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Kuiga Usambazaji wa Kawaida kwa Kanuni ya Mipaka ya Kati\n",
|
|
"\n",
|
|
"Kizalishaji cha nasibu kinachotumiwa katika Python kimeundwa kutupatia usambazaji wa usawa. Ikiwa tunataka kuunda kizalishaji cha usambazaji wa kawaida, tunaweza kutumia kanuni ya mipaka ya kati. Ili kupata thamani iliyosambazwa kwa kawaida, tutahesabu tu wastani wa sampuli iliyozalishwa kwa usambazaji wa usawa.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def normal_random(sample_size=100):\n",
|
|
" sample = [random.uniform(0,1) for _ in range(sample_size) ]\n",
|
|
" return sum(sample)/sample_size\n",
|
|
"\n",
|
|
"sample = [normal_random() for _ in range(100)]\n",
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.hist(sample)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Uhusiano na Evil Baseball Corp\n",
|
|
"\n",
|
|
"Uhusiano unaturuhusu kupata uhusiano kati ya mfululizo wa data. Katika mfano wetu wa toy, nduguudhare kuwa kuna kampuni ya mpira wa kikapu ya uovu ambayo hualipa wachezaji wake kulingana na urefu wao - mchezaji mrefu zaidi, ndivyo anavyopata pesa nyingi zaidi. Fikiria kuwa kuna mshahara wa msingi wa $1000, na bonasi ya ziada kutoka $0 hadi $100, kulingana na urefu. Tutachukua wachezaji halisi kutoka MLB, na kuhesabu mishahara yao ya kufikirika:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"heights = df['Height'].fillna(method='pad')\n",
|
|
"salaries = 1000+(heights-heights.min())/(heights.max()-heights.mean())*100\n",
|
|
"print(list(zip(heights, salaries))[:10])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Sasa hebu tuhesabu kovarians na uhusiano wa mfuatano huo. `np.cov` itatupa kile kinachoitwa **matrix ya kovarians**, ambayo ni upanuzi wa kovarians kwa vigezo vingi. Kipengele $M_{ij}$ cha matrix ya kovarians $M$ ni uhusiano kati ya vigezo vya ingizo $X_i$ na $X_j$, na thamani za mwinuko $M_{ii}$ ni variansi ya $X_{i}$. Vivyo hivyo, `np.corrcoef` itatupa **matrix ya uhusiano**.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"print(f\"Covariance matrix:\\n{np.cov(heights, salaries)}\")\n",
|
|
"print(f\"Covariance = {np.cov(heights, salaries)[0,1]}\")\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Uhusiano sawa na 1 unamaanisha kwamba kuna **uhusiano wa mstari** imara kati ya vigezo viwili. Tunaweza kuiona kwa macho uhusiano wa mstari kwa kuchora thamani moja dhidi ya nyingine:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(heights,salaries)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Tuchunguze ni nini kitakachotokea ikiwa uhusiano sio wa mstari. Tuseme kampuni yetu iliamua kuficha utegemezi wa mstari wazi kati ya urefu na mishahara, na kuanzisha aina ya isiyo ya mstari katika fomula, kama vile `sin`:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"salaries = 1000+np.sin((heights-heights.min())/(heights.max()-heights.mean()))*100\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Katika kesi hii, uhusiano ni kidogo zaidi, lakini bado uko juu sana. Sasa, ili kufanya uhusiano usiwe wazi sana, tunaweza kutaka kuongeza mzunguko wa ziada kwa kuongeza kigezo chochote kisichotarajiwa kwenye mshahara. Tujaribu kuona kinachotokea:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"salaries = 1000+np.sin((heights-heights.min())/(heights.max()-heights.mean()))*100+np.random.random(size=len(heights))*20-10\n",
|
|
"print(f\"Correlation = {np.corrcoef(heights, salaries)[0,1]}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(heights, salaries)\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"> Je, unaweza kubahatisha kwa nini nukta zinaungana kwenye mistari wima kama hii?\n",
|
|
"\n",
|
|
"Tumegundua uhusiano kati ya dhana iliyoundwa kiutengo kama mshahara na kipimo kinachoangaliwa *refu*. Tuwe pia tuone kama vipimo viwili vinavyoonekana, kama vilerefu na uzito, vina uhusiano pia:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.corrcoef(df['Height'].ffill(),df['Weight'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Kwa bahati mbaya, hatukupata matokeo yoyote - tu baadhi ya thamani za ajabu za `nan`. Hii ni kwa sababu baadhi ya thamani katika mfululizo wetu hazijafafanuliwa, zinazoonyeshwa kama `nan`, ambayo husababisha matokeo ya operesheni pia yasifafanuliwe. Kwa kuangalia matriki tunaweza kuona kuwa `Weight` ndiye safu inayosumbua, kwa sababu uhusiano wa ndani kati ya thamani za `Height` umekuwa umehesabiwa.\n",
|
|
"\n",
|
|
"> Mfano huu unaonyesha umuhimu wa **kuandaa data** na **kusafisha**. Bila data sahihi hata chembechembe haiwezi kuhesabiwa.\n",
|
|
"\n",
|
|
"Tuchukue njia ya `fillna` kujaza thamani zilizokosekana, na kuhesabu uhusiano:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"np.corrcoef(df['Height'].fillna(method='pad'), df['Weight'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Kuna uhusiano kweli, lakini si ule wenye nguvu kama katika mfano wetu wa bandia. Hakika, tukitazama mchoro wa makusanyo wa thamani moja dhidi ya nyingine, uhusiano huo usingeonekana kwa urahisi sana:\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plt.figure(figsize=(10,6))\n",
|
|
"plt.scatter(df['Weight'],df['Height'])\n",
|
|
"plt.xlabel('Weight')\n",
|
|
"plt.ylabel('Height')\n",
|
|
"plt.tight_layout()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Hitimisho\n",
|
|
"\n",
|
|
"Katika daftari hili tumejifunza jinsi ya kufanya shughuli za msingi kwenye data ili kuhesabu kazi za takwimu. Sasa tunajua jinsi ya kutumia vifaa vyenye sauti vya hisabati na takwimu ili kuthibitisha baadhi ya nadharia, na jinsi ya kuhesabu viwango vya kujiamini kwa vigezo mbalimbali ikitolewa sampuli ya data.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Kiondoa Hukumu**:\nNyaraka hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kwamba tafsiri za moja kwa moja zinaweza kuwa na makosa au upungufu wa usahihi. Nyaraka asilia katika lugha yake ya asili inapaswa kuzingatiwa kama chanzo cha uhakika. Kwa taarifa muhimu, tafsiri ya kitaalamu ya binadamu inashauriwa. Hatubeba dhamana kwa kutoelewana au tafsiri potofu zozote zitakazotokea kutokana na matumizi ya tafsiri hii.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"interpreter": {
|
|
"hash": "86193a1ab0ba47eac1c69c1756090baa3b420b3eea7d4aafab8b85f8b312f0c5"
|
|
},
|
|
"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.9.6"
|
|
},
|
|
"coopTranslator": {
|
|
"original_hash": "0f899e3c5019f948e7c787b22f3b2304",
|
|
"translation_date": "2026-01-16T18:32:06+00:00",
|
|
"source_file": "1-Introduction/04-stats-and-probability/notebook.ipynb",
|
|
"language_code": "sw"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
} |