A statisztikai jellemzők definíciói egy számokból álló minta, más néven adatsokaság esetén:
Terjedelem: a legnagyobb és a legkisebb elem különbsége.
Egy adott elem gyakorisága: az elem hányszor fordul elő a mintában. Pl. pénzdobáláskor a fej gyakorisága azt jelenti, hány fej jött ki.
Egy adott elem relatív gyakorisága: az elem előfordulása / elemek száma. Pl. ha 100 kockadobálásból 20-szor lett kettes, akkor a kettes relatív gyakorisága 20/100 = 0,2 vagy 20%.
Gyakorisági táblázat: minden előforduló elemhez megadja, hányszor fordul elő az adatok között. Pl. kockadobáláskor hány darab egyes, hány darab kettes… fordul elő.
Átlag, más néven számtani közép: számok összege / darabszám.
Módusz: a leggyakoribb elem.
Medián: a nagyság szerint rendezett mintában páratlan elemszám esetén a középső szám, páros elemszám esetén a két középső átlaga.
Szórás: az adatok átlagtól való ingadozását méri, képlete: $\sigma=\sqrt{\frac{(\overline x-x_1)^2+(\overline x-x_2)^2+…+(\overline x-x_n)^2+}{n}}$
ahol $\overline x$ a minta átlaga, $n$ az elemek száma, $x_1,\ x2,\ …\ x_n$ az adatsokaság elemei. Pl. az 1, 2, 6 minta esetén az átlag $\overline x=4$, a szórás pedig $\sigma=\sqrt{\frac{(1-4)^2+(2-4)^2+…+(6-4)^2+}{3}}=$$\sqrt{\frac{9+4+4}{3}}=\sqrt{\frac{17}{3}}\approx2,38$
A négyzetgyökvonás számításánál felhasználhatod, hogy egy szám négyzetgyöke egyenlő a 0,5-ödik hatványával, pl. $\sqrt{3}=3^{0,5}$
Készíts statisztikát egy véletlen számokból álló adatsokaságra! Az adatok bekérésénél és megjelenítésénél a minta alapján dolgozz! A kerekítéseknél mindenhol legfeljebb két tizedes jegy értékre kerekíts! A feladatok számát is írd ki a megoldások előtt! Azt se felejtsd el, hogy a programnak akkor is működnie kell, ha alacsony a darabszám és nagy intervallumból jöhetnek a számok.
Feladatok:
Kérd be a felhasználótól, hogy a minta hány számból álljon, és mi legyen a legnagyobb pozitív egész szám (n) az adatsokaságban!
Készítsd el és tárold el a mintát! A minta számai az [1;n] intervallumból kerüljenek ki véletlenszerűen, és legyenek egész számok (pl. ha a felhasználó 5-öt adott meg, akkor az 1, 2, 3, 4, 5 halmazból lehetnek a számok a mintában). A továbbiakban figyelj arra, hogy nem biztos, hogy minden szám előfordul a mintában.
Írasd ki a képernyőre a minta terjedelmét, legnagyobb és legkisebb elemét, átlagát! Az átlag legfeljebb két tizedes jegyre kerekítve szerepeljen. A legnagyobb és legkisebb elem kiírásának tagolásához használj tabulátort!
Határozd meg a minta mediánját és írasd ki a képernyőre! Add meg, hogy az adatok hány százaléka kisebb, mint a medián!
Írd ki a gyak.txt fájlba a gyakorisági táblázatot!
Írasd ki a képernyőre a második legkisebb elem relatív gyakoriságát!
Szemléltesd a gyakorisági táblázatot csillagokkal a minta alapján! A leghosszabb csillagsor kb. 50 csillagból álljon, és a csillagok száma az egyes elemek gyakoriságával legyen egyenes arányban.
Határozd meg az adatok szórását és írja ki a képernyőre! A számítás minél pontosabb legyen, de a kiírás csak két tizedes jegyre történjen.
Minta:
1.feladat
Add meg az elemek darabszámát: 10000
Add meg a legnagyobb elemet: 10
3. feladat
A minta terjedelme: 9
A legkisebb elem: 1 a legnagyobb elem: 10
A minta átlaga: 5.49
4. feladat
A medián: 5.0
Az adatok 40.0%-a kisebb a mediánnál.
6. feladat
A második legkisebb elem: 2, relatív gyakorisága: 10.04%.
A gyak.txt fájl mintája:
1: 1005 darab
2: 1004 darab
3: 1006 darab
4: 1012 darab
5: 990 darab
6: 1027 darab
7: 965 darab
8: 1008 darab
9: 988 darab
10: 995 darab
import random
print('1. feladat')
darab = int(input('Add meg az elemek darabszámát: '))
hatar = int(input('Add meg a legnagyobb elemet: '))
# 2. feladat
adatok = [random.randint(1,hatar) for i1 in range(darab)]
print('\n3. feladat')
print('A minta terjedelme:',max(adatok)-min(adatok))
print('A legkisebb elem:',min(adatok),’\ta legnagyobb elem:’,max(adatok))
print('A minta átlaga:',round(sum(adatok)/darab,2))
print('\n4. feladat')
adatok.sort() # a mediánhoz rendezni kell a mintát
if darab%2==1: # ha páratlan számú a minta, a középső elemre van szükség median = adatok[(darab//2)+1] # pl. 7 elemnél 7//2=3, és a 4. elem a középső
else: median = (adatok[int(darab/2)]+adatok[int(darab/2)+1])/2 # pl. 4 elemnél a 2.(=4/2) és 3.(=4/2 + 1) összegének a fele
print('A medián:',round(median,2))
kisebb = [szam for szam in adatok if szam
print('Az adatok',str(100*round(len(kisebb)/darab,2))+'%-a kisebb a mediánnál.')
# 5. feladat
szamok = set(adatok) # minden szám csak egyszer lesz benne
fajl = open('gyak-vg.txt','w')
for szam in szamok: print(str(szam)+':', adatok.count(szam),'darab',file=fajl)
fajl.close()
print('\n6. feladat')
szamok = list(szamok) # rendezni nem lehet halmazt, ezért listává kell alakítani
szamok.sort()
print('A második legkisebb elem:',str(szamok[1])+', relatív gyakorisága:',str(round(adatok.count(szamok[1])/darab*100,2))+'%.')
print('\n7. feladat')
gyakorisag = [round(100*adatok.count(szam)/darab,2) for szam in szamok] # a számok relatív gyakorisága %-ban, kerekítve
arany = 50/max(gyakorisag)
print('Szám\trelatív gyakoriság')
for i1 in range(len(szamok)): print(str(szamok[i1])+'\t'+str(gyakorisag[i1])+'%\t','*'*round(arany*gyakorisag[i1]))
print('\n8. feladat')
atlag = sum(adatok)/darab # nincs kerekítve, így pontos a számítás
szoras = (sum([(adat-atlag)**2 for adat in adatok])/darab)**0.5
print('A szórás:',round(szoras,2))