Odată ce ați înțeles taxonomia datelor, ar trebui să învățați să aplicați câteva concepte fundamentale esențiale care ajută la descrierea datelor folosind un set de metode statistice.

Înainte de a ne arunca cu capul în date și distribuția acestora, ar trebui să înțelegem diferența dintre două cuvinte cheie foarte importante – probă și populației.

A probă este un instantaneu al datelor dintr-un set de date mai mare. Acest set de date mai mare, care reprezintă toate datele care ar putea fi colectate, este numit populației.

În statistici, populația este un set larg, definit și adesea teoretic al tuturor observațiilor posibile generate de un experiment sau dintr-un domeniu.

Observațiile dintr-un eșantion de date se potrivesc adesea unui anumit tip de distribuție, care este denumită în mod obișnuit distributie normala, și numit formal Gaussian distribuție. Aceasta este cea mai studiată distribuție și există un întreg sub-domeniu de statistici dedicat datelor Gaussiene.

Ce vom acoperi

În acest post, ne vom concentra asupra înțelegerii:

  • mai multe despre distribuția Guassian și modul în care poate fi utilizată pentru a descrie datele și observațiile dintr-un model de învățare automată.
  • estimări ale locației – tendința centrală a unei distribuții.
  • estimări ale variabilității – dispersia datelor din media din distribuție.
  • fragmentele de cod pentru generarea de date distribuite în mod normal și calcularea estimărilor folosind diferite pachete Python, cum ar fi neclintit, scipy, matplotlib, și așa mai departe.

Și cu asta, să începem.

Ce este distribuția normală sau guassiană?

Când trasăm un set de date cum ar fi o histogramă, forma acelui grafic este ceea ce numim distribuția acestuia. Cea mai frecvent observată formă a valorilor continue este curba clopotului, care se mai numește distribuție gaussiană sau normală.

Este numit după matematicianul german, Carl Friedrich Gauss. Câteva exemple de seturi de date obișnuite care urmează distribuției gaussiene sunt:

  • Temperatura corpului
  • Înălțimile oamenilor
  • Kilometrajul mașinii
  • Scoruri IQ

Să încercăm să generăm distribuția normală ideală și să o trasăm folosind Python.

Cum se trasează distribuția Gaussiană în Python

Avem biblioteci precum Numpy, scipy și matplotlib pentru a ne ajuta să trasăm o curbă normală ideală.

import numpy as np
import scipy as sp
from scipy import stats
import matplotlib.pyplot as plt 

## generate the data and plot it for an ideal normal curve

## x-axis for the plot
x_data = np.arange(-5, 5, 0.001)

## y-axis as the gaussian
y_data = stats.norm.pdf(x_axis, 0, 1)

## plot data
plt.plot(x_data, y_data)plt.show()

Ieșire:

Cum se explica datele folosind distributia Gaussiana si statistici sumare

Punctele de pe axa x sunt observațiile, iar axa y este probabilitatea fiecărei observații.

Am generat observații spațiate în mod regulat în intervalul (-5, 5) folosind np.arange(). Apoi l-am parcurs prin norm.pdf() funcție cu o medie de 0,0 și o deviație standard de 1, care a redat probabilitatea acelei observații.

Observațiile în jurul valorii de 0 sunt cele mai frecvente, iar cele în jurul valorii de -5,0 și 5,0 sunt rare. Termenul tehnic pentru pdf() funcția este funcția densității probabilității.

Cum se testează pentru distribuția Gaussian

Este important de reținut că nu toate datele se potrivesc cu distribuția Gaussiană și trebuie să descoperim distribuția fie prin revizuirea graficelor histograme ale datelor, fie prin implementarea unor teste statistice.

Câteva exemple de observații care nu se potrivesc cu o distribuție gaussiană și se pot potrivi în schimb cu o exponențială (formă de băț de hochei) includ:

  • Veniturile oamenilor
  • Populația țărilor
  • Vânzări de mașini.

Până acum, tocmai am vorbit despre curba ideală în formă de clopot a distribuției, dar dacă ar trebui să lucrăm cu date aleatorii și să ne dăm seama de distribuția acesteia.

Așa vom proceda:

  • Creați câteva date aleatorii pentru acest exemplu folosind numpy’s randn() funcţie.
  • Trasați datele folosind o histogramă și analizați graficul returnat pentru forma așteptată.

În realitate, datele sunt rareori perfect gaussiene, dar vor avea o distribuție de tip gaussian. Dacă dimensiunea eșantionului este suficient de mare, o tratăm ca pe Gauss.

Rețineți că este posibil să trebuiască să modificați configurația graficului (scara, numărul de coșuri și așa mai departe) pentru a căuta modelul dorit.

Să aruncăm o privire la câteva coduri:

## setting the seed for the random generation
np.random.seed(1)

## generating univariate data
data = 10 * np.random.randn(1000) + 100

## plotting the data
plt.hist(data)plt.show()

Ieșire:

Iată ieșirea codului de mai sus cu graficul histogramei datelor:

Imagine pentru postare

Intriga arată mai mult ca un set simplu de blocuri. Dar schimbăm scala, care în acest caz este numărul arbitrar de pubele din histogramă.

Să specificăm numărul de coșuri și să-l trasăm din nou:

plt.hist(data, bins=100)
plt.show()
Imagine pentru postare

Acum putem vedea că curba arată mai aproape de o curbă gaussiană în formă de clopot.

Deși, observați că avem câteva observații care ies din limite și pot fi văzute ca zgomot.

Acest lucru indică o altă plată importantă atunci când lucrați cu un eșantion de date – ar trebui să vă așteptați întotdeauna la un zgomot sau la valori anormale.

Estimări de locație

Un pas fundamental în explorarea unui set de date este obținerea unei valori rezumate pentru fiecare caracteristică sau variabilă. Aceasta este în mod obișnuit o estimare a locului în care se află majoritatea datelor sau, cu alte cuvinte, fișierul tendinta centrala.

La început, rezumarea datelor ar putea suna ca o bucată de tort – luați doar media datelor. În realitate, deși media este foarte ușor de calculat și de utilizat, este posibil să nu fie întotdeauna cea mai bună măsură pentru valoarea centrală.

Pentru a rezolva această problemă, statisticienii au dezvoltat estimări alternative.

Vom folosi setul de date Boston din pachetul sklearn.

Rețineți că am renunțat la câteva coloane și așa arată cadrul de date acum:

Imagine pentru postare

Să analizăm estimările de locație utilizate în mod obișnuit cu ajutorul unui eșantion de date reale, mai degrabă decât cu simboluri grecești:

Rău

Suma tuturor valorilor împărțită la numărul de valori, cunoscută și sub numele de medie

Iată cum se calculează media Age variabil:

df['Age'].mean()

## output: 68.57490118577076

Media ponderată

Suma tuturor valorilor de o greutate împărțită la suma greutăților. Acest lucru este, de asemenea, cunoscut sub numele de media ponderată.

Iată două motivații principale pentru utilizarea unei medii ponderate:

  • Unele observații sunt intrinsec mai variabile (deviație standard ridicată) decât altele, iar observațiile foarte variabile au o greutate mai mică.
  • Datele colectate nu reprezintă în mod egal diferitele grupuri pe care ne interesează să le măsurăm.

Median

Valoarea care separă o jumătate a datelor de cealaltă, împărțindu-le astfel într-o jumătate superioară și inferioară. Aceasta se mai numește și percentila 50.

Iată cum se calculează mediana Age variabil:

df['Age'].median()

## output: 77.5

Percentilă

Valoarea astfel încât P procentul datelor se află mai jos, cunoscut și sub denumirea de cuantil.

describe metoda simplifică găsirea percentilei:

df.describe()
Imagine pentru postare

Aceasta oferă statistici sumare ale tuturor variabilelor numerice. Rețineți că valorile sunt diferite pentru variabilele categorice.

Mediană ponderată

Valoarea astfel încât jumătate din suma ponderilor se află deasupra și sub datele sortate.

Medie tăiată

Media tuturor valorilor după scăderea unui număr fix de valori extreme.

O medie redusă elimină influența valorilor extreme. De exemplu, în timp ce judecăm un eveniment, putem calcula scorul final folosind media tăiată a tuturor scorurilor, astfel încât niciun judecător să nu poată manipula rezultatul.

Acest lucru este, de asemenea, cunoscut sub numele de medie trunchiată.

Pentru aceasta, vom folosi modulul de statistici din scipy bibliotecă:

## trim = 0.1 drops 10% from each end

stats.trim_mean(df['Age'], 0.1)

## output: 71.19605911330049

Outlier

O valoare anterioară, sau valoare extremă, este o valoare a datelor care este foarte diferită de majoritatea datelor. Mediana este denumită a robust estimarea locației, deoarece nu este influențată de valori aberante, adică cazuri extreme, în timp ce media este sensibilă la valori aberante.

Estimări ale variabilității

Imagine pentru postare

Pe lângă locație, avem o altă metodă de rezumare a unei caracteristici. Variabilitate, denumită și dispersie, ne spune cât de răspândite sau grupate sunt datele.

Calculul măsurilor de variabilitate pentru același cadru de date utilizând biblioteci precum panda, numpy și scipy.

Abateri

Diferența dintre valorile observate și estimarea locației. Abaterile sunt uneori numite erori sau reziduuri.

Varianța

Suma abaterilor pătrate de la medie împărțită la n – 1 unde n este numărul de valori ale datelor. Aceasta este, de asemenea, numită eroare medie-pătrat.

df['Age'].var()

Deviație standard

Rădăcina pătrată a varianței.

df['Age'].std()

## output: 28.148861406903617

Deviația absolută medie

Media valorilor absolute ale abaterilor de la medie. Aceasta este denumită și norma l1 sau norma Manhattan.

Am tratat acest lucru în detaliu împreună cu o explicație matematică aici: Calculul vectorilor P-Norme – Algebră liniară pentru știința datelor -IV

Abaterea absolută mediană față de mediana

Mediana valorilor absolute ale abaterilor de la mediană.

df['Age'].mad()

## output: 24.610885188020433

Gamă

Diferența dintre cea mai mare și cea mai mică valoare dintr-un set de date.

Putem calcula intervalul unei variabile folosind min și max din statisticile rezumative ale cadrului de date:

df['Age'].iloc[df['Age'].idxmax] - df['Age'].iloc[df['Age'].idxmin()]

## output: 97.1

Statistici de comandă

Statisticile comenzilor sau rangurile sunt valori bazate pe valorile datelor sortate de la cel mai mic la cel mai mare.

Percentilă

Valoarea astfel încât P procentul valorilor ia această valoare sau mai puțin și (100 – P) procente ia această valoare sau mai mult. Aceasta se numește uneori cuantilă.

Gama intercuartilă

Intervalul interquartilei, sau IQR, este diferența dintre percentila 75 și percentila 25.

Q1 = df['Age'].quantile(0.25)
Q3 = df['Age'].quantile(0.75)
IQR = Q3 - Q1

## Output: 49.04999999999999

Acum că aveți o înțelegere clară a distribuției gaussiene și a estimărilor comune ale localizării și variabilității, puteți rezuma și interpreta datele cu ușurință folosind aceste metode statistice.

Știința datelor cu Harshit

Cu acest canal, intenționez să lansez câteva serie care acoperă întregul spațiu al științei datelor. Iată de ce ar trebui să vă abonați la canal:

Simțiți-vă liber să vă conectați cu mine pe Stare de nervozitate sau LinkedIn.