Kovarians og korrelasjon

Det å finne kovarians og korrelasjon er veldig enkelt med Pandas. Vi trenger både Series og DataFrame. X-verdier og Y-verdier lagrer vi i hver sin serie, og så kobler vi dem sammen til en DataFrame.

In [1]:
from pandas import Series, DataFrame

xs = Series([-4, 0, 4, 3], name='X-verdier')
ys = Series([1, 3, 7, 8], name='Y-verdier')

# Bruker .T for å transponere / snu DataFramen slik at vi får X-er og Y-er nedover, istedenfor bortover.
df = DataFrame([xs, ys]).T

df
Out[1]:
X-verdier Y-verdier
0 -4 1
1 0 3
2 4 7
3 3 8

Vi lager to serier. Dette gjør vi ved å sende inn to lister med tall, og så gir vi begge seriene passende navn, med "name"-parameteren. Vi kan finne kovarians og korrelasjon bare med to enkle serier, men det kan være fint å se dataen i en tabell før vi går videre. Dessuten trenger vi en DataFrame for å lage et diagram.

Som i frekvenstabell-kapittelet, lager vi en DataFrame av seriene våre. Jupyter viser automatisk DataFrames på tabellform, slik at vi får ut tabellen over.

Plotting av verdier

Pandas har innebygget støtte for såkalte "scatter plots", hvor datapunkter markeres med sirkler. Vi setter, som tidligere, matplotlib i "inline"-modus, slik at vi får figurene rett på skjermen, og så plotter vi direkte.

Vi bruker DataFramen sitt "plot"-objekt, og kaller "scatter"-metoden her. Scatter plot krever at vi angir tekst på X- og Y-aksen, så dette spesifiserer vi med hhv. x- og y-parameterne. Det er alt! En liten linje, så har vi et flott diagram.

In [2]:
%matplotlib inline

df.plot.scatter(x='X-verdier', y='Y-verdier')
Out[2]:
<matplotlib.axes._subplots.AxesSubplot at 0x1070595f8>

Finne kovarians og korrelasjon mellom x og y

Nå som vi har fått et visuelt inntrykk av verdiene våre, ser vi at de ligger nokså fint, stigende oppover mot høyre. La oss se hva Pandas sier. For å regne kovariansen mellom to serier, tar vi den første serien, og bruker metoden "cov" på denne. Den tar en parameter, og det er den andre serien. Resultatet er at vi får kovariansen mellom disse to.

Korrelasjon (corr) fungerer på samme måte:

In [3]:
print('Kovarians mellom x og y:', xs.cov(ys)) # Kovarians mellom xs-serien og ys-serien
print('Korrelasjon mellom x og y:', xs.corr(ys)) # Tilsvarende for korrelasjon
Kovarians mellom x og y: 11.25
Korrelasjon mellom x og y: 0.947397581168


Laget våren 2016, som prosjektoppgave i MA-155 Statistikk ved UiA av Olav Andreas Lindekleiv