Korrelaatio ryhmässä R: Pearson & Spearman matriisiesimerkillä

Kaksimuuttujasuhde kuvaa suhdetta - tai korrelaatiota - kahden muuttujan välillä ja. Tässä opetusohjelmassa keskustellaan korrelaation käsitteestä ja näytetään, miten sitä voidaan käyttää kahden muuttujan välisen suhteen mittaamiseen.

Kahden muuttujan välisen korrelaation laskemiseksi on kaksi ensisijaista menetelmää.

  • Pearson: Parametrinen korrelaatio
  • Spearman: Ei-parametrinen korrelaatio

Tässä opetusohjelmassa opit

  • Pearsonin korrelaatio
  • Spearman Rank -korrelaatio
  • Korrelaatiomatriisi
  • Visualisoi korrelaatiomatriisi

Pearsonin korrelaatio

Pearsonin korrelaatiomenetelmää käytetään yleensä kahden muuttujan välisen suhteen ensisijaisena tarkastuksena.

Korrelaatiokerroin , on mitta vahvuus lineaarinen suhde kahden muuttujan ja. Se lasketaan seuraavasti:

kanssa

  • eli keskihajonta
  • eli keskihajonta

Korrelaatio vaihtelee välillä -1 ja 1.

  • Arvo lähellä tai yhtä suuri kuin 0 tarkoittaa vain vähän tai ei lainkaan lineaarista suhdetta ja välillä.
  • Sen sijaan, mitä lähempänä 1 tai -1, sitä vahvempi lineaarinen suhde.

Voimme laskea t-testin seuraavasti ja tarkistaa jakelutaulukon vapausaste:

Spearman Rank -korrelaatio

Rank-korrelaatio lajittelee havainnot rankin mukaan ja laskee sijoituksen samankaltaisuuden tason. Sijoituskorrelaation etuna on se, että se on vahva ulkopuolisille, eikä se ole yhteydessä tietojen jakeluun. Huomaa, että järjestysmuuttujalle sopii sijoituskorrelaatio.

Spearmanin sijoituskorrelaatio, on aina välillä -1 ja 1, arvo lähellä ääripäätä osoittaa vahvaa suhdetta. Se lasketaan seuraavasti:

kanssa ilmoitettu kovarianssit välillä. Nimittäjä laskee keskihajonnat.

R: ssä voimme käyttää cor () -funktiota. Se vie kolme argumenttia, ja menetelmän.

cor(x, y, method)

Väitteet :

  • x: Ensimmäinen vektori
  • y: Toinen vektori
  • menetelmä: Korrelaation laskemiseen käytetty kaava. Kolme merkkijonoa:
    • "Pearson"
    • "kendall"
    • "keihäsmies"

Valinnainen argumentti voidaan lisätä, jos vektorit sisältävät puuttuvan arvon: use = "complete.obs"

Käytämme BudgetUK-tietojoukkoa. Tämä tietojoukko raportoi brittiläisten kotitalouksien budjettivarat vuosien 1980 ja 1982 välillä. Niiden joukossa on 1519 havaintoa, joilla on kymmenen ominaisuutta:

  • wfood: jaa ruoan osuus
  • wfuel: jaa polttoainekulut
  • wcloth: budjettiosuus vaatekuluista
  • walc: jaa alkoholikulut
  • wtrans: jaa kuljetuskulut
  • vaimo: osuus muista tavaroista
  • totexp: kotitalouden kokonaiskustannukset puntaa
  • tulot kotitalouksien nettotulot yhteensä
  • ikä: kotitalouden ikä
  • lapset: lasten lukumäärä
Esimerkki
library(dplyr)PATH <-"https://raw.githubusercontent.com/guru99-edu/R-Programming/master/british_household.csv"data <-read.csv(PATH)filter(income < 500)mutate(log_income = log(income),log_totexp = log(totexp),children_fac = factor(children, order = TRUE, labels = c("No", "Yes")))select(-c(X,X.1, children, totexp, income))glimpse(data)

Koodin selitys

  • Tuomme ensin tiedot ja katsomme glimpse () -toimintoa dplyr-kirjastosta.
  • Kolme pistettä on yli 500 000, joten päätimme sulkea ne pois.
  • Rahamuuttujan muuntaminen lokissa on yleinen käytäntö. Se auttaa vähentämään poikkeamien vaikutusta ja vähentää aineiston vinoutta.

Tuotos:

## Observations: 1,516## Variables: 10## $ wfood  0.4272, 0.3739, 0.1941, 0.4438, 0.3331, 0.3752, 0… ## $ wfuel  0.1342, 0.1686, 0.4056, 0.1258, 0.0824, 0.0481, 0… ## $ wcloth  0.0000, 0.0091, 0.0012, 0.0539, 0.0399, 0.1170, 0… ## $ walc  0.0106, 0.0825, 0.0513, 0.0397, 0.1571, 0.0210, 0… ## $ wtrans  0.1458, 0.1215, 0.2063, 0.0652, 0.2403, 0.0955, 0… ## $ wother  0.2822, 0.2444, 0.1415, 0.2716, 0.1473, 0.3431, 0… ## $ age  25, 39, 47, 33, 31, 24, 46, 25, 30, 41, 48, 24, 2… ## $ log_income  4.867534, 5.010635, 5.438079, 4.605170, 4.605170,… ## $ log_totexp  3.912023, 4.499810, 5.192957, 4.382027, 4.499810,… ## $ children_fac  Yes, Yes, Yes, Yes, No, No, No, No, No, No, Yes,… 

Voimme laskea tulo- ja wfood-muuttujien välisen korrelaatiokertoimen "pearson" - ja "spearman" -menetelmillä.

cor(data$log_income, data$wfood, method = "pearson")

lähtö:

## [1] -0.2466986
cor(data$log_income, data$wfood, method = "spearman")

Tuotos:

## [1] -0.2501252 

Korrelaatiomatriisi

Kaksimuuttujakorrelaatio on hyvä alku, mutta monimuuttujaanalyysillä voimme saada laajemman kuvan. Korrelaatio monien muuttujien kanssa on esitetty korrelaatiomatriisin sisällä . Korrelaatiomatriisi on matriisi, joka edustaa kaikkien muuttujien parikorrelaatiota.

Cor () -funktio palauttaa korrelaatiomatriisin. Ainoa ero kaksimuuttujakorrelaatiossa on, että meidän ei tarvitse määrittää mitkä muuttujat. Oletusarvoisesti R laskee kaikkien muuttujien välisen korrelaation.

Huomaa, että korrelaatiota ei voida laskea tekijämuuttujalle. Meidän on varmistettava, että pudotamme kategorisen ominaisuuden, ennen kuin välitämme datakehyksen cor (): n sisällä.

Korrelaatiomatriisi on symmetrinen, mikä tarkoittaa, että diagonaalin yläpuolella olevilla arvoilla on samat arvot kuin alla olevalla. On visuaalisempaa näyttää puolet matriisista.

Poissuljetaan children_fac, koska se on tekijätason muuttuja. cor ei suorita korrelaatiota kategoriallisella muuttujalla.

# the last column of data is a factor level. We don't include it in the codemat_1 <-as.dist(round(cor(data[,1:9]),2))mat_1

Koodin selitys

  • cor (data): Näytä korrelaatiomatriisi
  • pyöreä (data, 2): Pyöristetään korrelaatiomatriisi kahdella desimaalilla
  • as.dist (): näyttää vain toisen puoliskon

Tuotos:

## wfood wfuel wcloth walc wtrans wother age log_income## wfuel 0.11## wcloth -0.33 -0.25## walc -0.12 -0.13 -0.09## wtrans -0.34 -0.16 -0.19 -0.22## wother -0.35 -0.14 -0.22 -0.12 -0.29## age 0.02 -0.05 0.04 -0.14 0.03 0.02## log_income -0.25 -0.12 0.10 0.04 0.06 0.13 0.23## log_totexp -0.50 -0.36 0.34 0.12 0.15 0.15 0.21 0.49

Merkitsevyystaso

Merkitsevyystaso on hyödyllinen joissakin tilanteissa, kun käytämme pearson- tai spearman-menetelmää. Hmisc-kirjaston funktio rcorr () laskee meille p-arvon. Voimme ladata kirjaston condasta ja kopioida koodin liittääksesi sen päätelaitteeseen:

conda install -c r r-hmisc 

Rcorr () edellyttää, että datakehys tallennetaan matriisina. Voimme muuntaa tietomme matriisiksi ennen laskea korrelaatiomatriisi p-arvolla.

library("Hmisc")data_rcorr <-as.matrix(data[, 1: 9])mat_2 <-rcorr(data_rcorr)# mat_2 <-rcorr(as.matrix(data)) returns the same output

Listaobjekti mat_2 sisältää kolme elementtiä:

  • r: Korrelaatiomatriisin tulos
  • n: havainnon määrä
  • P: p-arvo

Olemme kiinnostuneita kolmannesta elementistä, p-arvosta. Korrelaatiomatriisi on yleistä näyttää p-arvolla korrelaatiokertoimen sijaan.

p_value <-round(mat_2[["P"]], 3)p_value

Koodin selitys

  • mat_2 [["P"]]: p-arvot tallennetaan elementtiin nimeltä P
  • pyöreä (mat_2 [["P"]], 3): Pyöristä elementit kolmella numerolla

Tuotos:

wfood wfuel wcloth walc wtrans wother age log_income log_totexpwfood NA 0.000 0.000 0.000 0.000 0.000 0.365 0.000 0wfuel 0.000 NA 0.000 0.000 0.000 0.000 0.076 0.000 0wcloth 0.000 0.000 NA 0.001 0.000 0.000 0.160 0.000 0walc 0.000 0.000 0.001 NA 0.000 0.000 0.000 0.105 0wtrans 0.000 0.000 0.000 0.000 NA 0.000 0.259 0.020 0wother 0.000 0.000 0.000 0.000 0.000 NA 0.355 0.000 0age 0.365 0.076 0.160 0.000 0.259 0.355 NA 0.000 0log_income 0.000 0.000 0.000 0.105 0.020 0.000 0.000 NA 0log_totexp 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 NA

Visualisoi korrelaatiomatriisi

Lämpökartta on toinen tapa näyttää korrelaatiomatriisi. GGally-kirjasto on ggplot2: n laajennus. Tällä hetkellä sitä ei ole saatavana huoneistokirjastossa. Voimme asentaa suoraan konsoliin.

install.packages("GGally")

Kirjasto sisältää erilaisia ​​toimintoja näyttämään yhteenvetotilastot, kuten kaikkien matriisien muuttujien korrelaatio ja jakauma.

Funktiolla ggcorr () on paljon argumentteja. Esittelemme vain argumentit, joita käytämme opetusohjelmassa:

Funktio ggcorr

ggcorr(df, method = c("pairwise", "pearson"),nbreaks = NULL, digits = 2, low = "#3B9AB2",mid = "#EEEEEE", high = "#F21A00",geom = "tile", label = FALSE,label_alpha = FALSE)

Väitteet:

  • df : käytetty datajoukko
  • menetelmä : Kaava korrelaation laskemiseksi. Oletusarvoisesti pariliitos ja Pearson lasketaan
  • nbreaks : Palauttaa luokkien alueen kertoimien värille . Oletuksena ei taukoa ja värigradientti on jatkuva
  • numerot : Pyöristetään korrelaatiokerroin. Oletusasetuksena on 2
  • matala : Säädä värin alempaa tasoa
  • keski : Säädä värin keskitasoa
  • korkea : Säädä värin korkeaa tasoa
  • geom : Hallitse geometrisen argumentin muotoa. Oletusarvoisesti "ruutu"
  • tunniste : Boolen arvo. Näytä tai ei tarra. Oletusasetuksena on FALSE

Peruslämpökartta

Paketin perustavin juoni on lämpökartta. Kaavion selitys osoittaa gradienttivärin välillä - 1 - 1, kuuma väri osoittaa vahvaa positiivista korrelaatiota ja kylmä väri, negatiivinen korrelaatio.

library(GGally)ggcorr(data)

Koodin selitys

  • ggcorr (data): Tarvitaan vain yksi argumentti, joka on datakehyksen nimi. Tekijätason muuttujia ei sisälly käyrään.

Tuotos:

Lisää ohjaus lämpökarttaan

Voimme lisätä kaavioon lisää ohjaimia.

ggcorr(data,nbreaks = 6,low = "steelblue",mid = "white",high = "darkred",geom = "circle")

Koodin selitys

  • nbreaks = 6: hajota legenda 6 rivillä.
  • low = "steelblue": Käytä negatiivisia korrelaatioita vaaleammilla väreillä
  • mid = "valkoinen": Käytä valkoisia värejä keskialueen korrelaatioon
  • high = "darkred": Käytä positiivisia korrelaatioita tummilla väreillä
  • geom = "ympyrä": Käytä ympyrää lämpökartan ikkunoiden muotona. Ympyrän koko on verrannollinen korrelaation absoluuttiseen arvoon.

Tuotos:

Lisää etiketti lämpökarttaan

GGally antaa meille mahdollisuuden lisätä tarra ikkunoiden sisään.

ggcorr(data,nbreaks = 6,label = TRUE,label_size = 3,color = "grey50")

Koodin selitys

  • label = TRUE: Lisää korrelaatiokertoimien arvot lämpökartan sisään.
  • color = "grey50": Valitse väri, ts. harmaa
  • label_size = 3: Aseta tarran kooksi 3

Tuotos:

ggpairs

Lopuksi esitellään toinen toiminto GGaly-kirjastosta. Ggpair. Se tuottaa kaavion matriisimuodossa. Yhdessä kuvaajassa voidaan näyttää kolmenlaisia ​​laskutoimituksia. Matriisi on ulottuvuus, joka on yhtä suuri kuin havaintojen määrä. Ylä- / alaosassa näytetään ikkunat ja lävistäjä. Voimme hallita mitä tietoja haluamme näyttää matriisin kussakin osassa. Ggpair-kaava on:

ggpair(df, columns = 1: ncol(df), title = NULL,upper = list(continuous = "cor"),lower = list(continuous = "smooth"),mapping = NULL)

Väitteet :

  • df : käytetty datajoukko
  • sarakkeet : Piirrä juoni valitsemalla sarakkeet
  • otsikko : Sisällytä otsikko
  • ylempi : Ohjaa ruutuja viivan yläpuolella. Palautettavaksi on annettava laskutyyppi tai kaavio. Jos jatkuva = "cor", pyydämme R: tä laskemaan korrelaation. Huomaa, että argumentin on oltava luettelo. Muita argumentteja voidaan käyttää, katso lisätietoja [vinjettistä] ("http://ggobi.github.io/ggally/#custom_functions").
  • Ala : Ohjaa diagonaalin alapuolisia laatikoita.
  • Kartoitus : Ilmaisee graafin esteettisyyden. Voimme esimerkiksi laskea kaavion eri ryhmille.

Kaksimuuttuja-analyysi ggpair-ryhmällä

Seuraava kaavio kuvaa kolme tietoa:

  • Log_totexp, log_income, age ja wtrans -muuttujan korrelaatiomatriisi ryhmitelty sen mukaan, onko kotitaloudessa lapsi vai ei.
  • Piirrä kunkin muuttujan jakauma ryhmittäin
  • Näytä sirontakaavio trendillä ryhmittäin
library(ggplot2)ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"), title = "Bivariate analysis of revenue expenditure by the British household", upper = list(continuous = wrap("cor",size = 3)),lower = list(continuous = wrap("smooth",alpha = 0.3,size = 0.1)),mapping = aes(color = children_fac))

Koodin selitys

  • sarakkeet = c ("log_totexp", "log_income", "ikä", "wtrans"): Valitse muuttujat, jotka näytetään kaaviossa
  • title = "Ison-Britannian kotitalouden kaksimuuttujaanalyysi tulomenoista": Lisää otsikko
  • upper = list (): Ohjaa kuvaajan yläosaa. Eli diagonaalin yläpuolella
  • jatkuva = rivitys ("cor", koko = 3)): Laske korrelaatiokerroin. Kääritämme jatkuvan argumentin wrap () -funktion sisään kontrolloidaksemme kaavion esteettisyyttä (eli koko = 3) -alempi = luettelo (): Ohjaa kuvaajan alaosaa. Eli diagonaalin alapuolella.
  • jatkuva = rivitys ("sileä", alfa = 0,3, koko = 0,1): Lisää sirontakaavio, jolla on lineaarinen suuntaus. Kääritämme jatkuvan argumentin wrap () -funktion sisään kontrolloidaksemme kaavion esteettisyyttä (eli koko = 0,1, alfa = 0,3)
  • kartoitus = aes (väri = lapset_fac): Haluamme, että kaavion jokainen osa pinotaan muuttujalla children_fac, joka on kategorinen muuttuja, jonka arvo on 1, jos kotitaloudessa ei ole lapsia, ja 2 muuten

Tuotos:

Kaksimuuttuja-analyysi ggpairilla osittaisella ryhmittelyllä

Alla oleva kaavio on hieman erilainen. Muutamme kartoituksen sijaintia ylemmän argumentin sisällä.

ggpairs(data, columns = c("log_totexp", "log_income", "age", "wtrans"),title = "Bivariate analysis of revenue expenditure by the British household",upper = list(continuous = wrap("cor",size = 3),mapping = aes(color = children_fac)),lower = list(continuous = wrap("smooth",alpha = 0.3,size = 0.1)))

Koodin selitys

  • Täsmälleen sama koodi kuin edellisessä esimerkissä paitsi:
  • kartoitus = aes (väri = lapset_fac): Siirrä luetteloa ylemmässä = luettelossa (). Haluamme vain, että laskenta on pinottu ryhmittäin kaavion yläosaan.

Tuotos:

Yhteenveto

Voimme tiivistää toiminnon alla olevassa taulukossa:

kirjasto

Tavoite

menetelmä

koodi

Pohja

kaksimuuttuja korrelaatio

Pearson

cor(dfx2, method = "pearson")

Pohja

kaksimuuttuja korrelaatio

Keihäsmies

cor(dfx2, method = "spearman")

Pohja

Monimuuttuja korrelaatio

Pearson

cor(df, method = "pearson")

Pohja

Monimuuttuja korrelaatio

Keihäsmies

cor(df, method = "spearman")

Hmisc

P-arvo

rcorr(as.matrix(data[,1:9]))[["P"]]

Ggally

lämpökartta

ggcorr(df)

Monimuuttujat tontit

cf code below

Mielenkiintoisia artikkeleita...