Korrelatsioon R-s: Pearson & Spearman koos maatriksi näitega

Kahemõõtmeline suhe kirjeldab kahe muutuja vahelist suhet või korrelatsiooni ja. Selles õpetuses käsitleme korrelatsiooni mõistet ja näitame, kuidas seda saab kasutada kahe muutuja vahelise seose mõõtmiseks.

Kahe muutuja vahelise korrelatsiooni arvutamiseks on kaks peamist meetodit.

  • Pearson: Parameetriline korrelatsioon
  • Spearman: mitteparameetriline korrelatsioon

Selles õpetuses saate teada

  • Pearsoni korrelatsioon
  • Spearman Rank korrelatsioon
  • Korrelatsioonimaatriks
  • Visualiseerige korrelatsioonimaatriks

Pearsoni korrelatsioon

Pearsoni korrelatsioonimeetodit kasutatakse tavaliselt kahe muutuja vahelise seose esmase kontrollina.

Korrelatsioonikoefitsiendiga , on mõõt tugevust lineaarne seos kahe muutujate ja. See arvutatakse järgmiselt:

koos

  • , st standardhälve
  • , st standardhälve

Korrelatsioon jääb vahemikku -1 kuni 1.

  • Väärtus, mis on lähedane või võrdne 0-ga, tähendab lineaarset suhet ja selle vahel vähe või üldse mitte.
  • Seevastu mida lähemale jõuab 1 või -1, seda tugevam on lineaarne suhe.

Saame t-testi arvutada järgmiselt ja kontrollida jaotustabelit, mille vabadusaste võrdub järgmisega:

Spearman Rank korrelatsioon

Auastmekorrelatsioon sordib vaatlused auastmete järgi ja arvutab auastme sarnasuse taseme. Auastmekorrelatsiooni eeliseks on see, et see on tugev kõrvalseisjate suhtes ja see ei ole seotud andmete levitamisega. Pange tähele, et astmeline korrelatsioon sobib järjestusmuutuja jaoks.

Spearmani auastmekorrelatsioon, on alati vahemikus -1 kuni 1, äärmusele lähedase väärtusega näitab tugev suhe. See arvutatakse järgmiselt:

koos märkis kovariandid auastme ja. Nimetaja arvutab standardhälbed.

R-s saame kasutada funktsiooni cor (). Selleks on vaja kolme argumenti ja meetodit.

cor(x, y, method)

Argumendid :

  • x: esimene vektor
  • y: teine ​​vektor
  • meetod: korrelatsiooni arvutamiseks kasutatud valem. Kolm stringiväärtust:
    • "pirn"
    • "kendall"
    • "odamees"

Valikulise argumendi saab lisada, kui vektorites on puuduv väärtus: use = "complete.obs"

Kasutame BudgetUK andmekogumit. See andmekogum kajastab Suurbritannia leibkondade eelarvelist jaotust aastatel 1980-1982. Nende hulgas on 1519 kümne tunnusega vaatlust:

  • wfood: jagage toidu jagamise kulutusi
  • wfuel: jagage kütusekulusid
  • wcloth: eelarveosa rõivaste kulutamiseks
  • walc: jagage alkoholikulu
  • wtrans: jagage transpordikulusid
  • wother: osa muudest kaupadest
  • totexp: leibkonna kogukulud naelades
  • sissetulek leibkonna netosissetulek kokku
  • vanus: leibkonna vanus
  • lapsed: laste arv
Näide
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)

Koodi selgitus

  • Esmalt impordime andmed ja vaatame funktsiooni glimpse () abil dplyri teegist.
  • Kolm punkti on üle 500 000, seega otsustasime need välja jätta.
  • Rahalise muutuja logis teisendamine on tavaline tava. See aitab vähendada kõrvalekallete mõju ja vähendab andmekogumi viltu.

Väljund:

## 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,… 

Sissetuleku ja wwoodi muutujate korrelatsioonikordaja saame arvutada meetoditega "pearson" ja "spearman".

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

väljund:

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

Väljund:

## [1] -0.2501252 

Korrelatsioonimaatriks

Kahemõõtmeline korrelatsioon on hea algus, kuid laiema pildi saame mitmemõõtmelise analüüsiga. Paljude muutujatega korrelatsioon on kujutatud korrelatsioonimaatriksi sees . Korrelatsioonimaatriks on maatriks, mis tähistab kõigi muutujate paarikorrelatsiooni.

Funktsioon cor () tagastab korrelatsioonimaatriksi. Ainus erinevus kahemõõtmelises korrelatsioonis on see, et me ei pea täpsustama, millised muutujad. Vaikimisi arvutab R kõigi muutujate vahelise korrelatsiooni.

Pange tähele, et teguri muutuja jaoks ei saa korrelatsiooni arvutada. Enne andmeraami edastamist cor () sees peame veenduma, et kategooriline funktsioon loobutakse.

Korrelatsioonimaatriks on sümmeetriline, mis tähendab, et diagonaali kohal olevatel väärtustel on samad väärtused kui allpool. Visuaalsem on näidata pool maatriksist.

Me välistame children_fac, kuna see on teguri taseme muutuja. cor ei tee kategoorilise muutujaga korrelatsiooni.

# 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

Koodi selgitus

  • cor (andmed): kuvab korrelatsioonimaatriksi
  • ring (andmed, 2): ümardage korrelatsioonimaatriks kahe kümnendkohaga
  • as.dist (): näitab ainult teist poolaega

Väljund:

## 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

Tähtsuse tase

Olulisuse tase on mõnes olukorras kasulik, kui kasutame Pearsoni või Spearmani meetodit. Funktsioon rcorr () raamatukogust Hmisc arvutab meie jaoks p-väärtuse. Saame raamatukogu Condast alla laadida ja terminali kleepimiseks koodi kopeerida:

conda install -c r r-hmisc 

Rcorr () nõuab, et andmeraam salvestataks maatriksina. Korrelatsioonimaatriksi arvutamiseks p-väärtusega saame oma andmed enne maatriksiks teisendada.

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

Loendiobjekt mat_2 sisaldab kolme elementi:

  • r: korrelatsioonimaatriksi väljund
  • n: vaatluste arv
  • P: p-väärtus

Meid huvitab kolmas element, p-väärtus. On tavaline, et korrelatsioonikordajat näidatakse korrelatsioonikordaja asemel p-väärtusega.

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

Koodi selgitus

  • mat_2 [["P"]]: p-väärtused salvestatakse elemendis nimega P
  • ümmargune (mat_2 [["P"]], 3): ümardage elemendid kolme numbriga

Väljund:

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

Visualiseerige korrelatsioonimaatriks

Soojuskaart on veel üks viis korrelatsioonimaatriksi kuvamiseks. GGally teek on ggplot2 laiendus. Praegu pole see konda raamatukogus saadaval. Saame installida otse konsooli.

install.packages("GGally")

Raamatukogu sisaldab erinevaid funktsioone, et näidata kokkuvõtlikku statistikat, näiteks kõigi maatriksis olevate muutujate korrelatsioon ja jaotus.

Funktsioonil ggcorr () on palju argumente. Tutvustame ainult neid argumente, mida õpetuses kasutame:

Funktsioon ggcorr

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

Argumendid:

  • df : kasutatud andmekogum
  • meetod : valem korrelatsiooni arvutamiseks. Vaikimisi arvutatakse paarikaupa ja Pearson
  • nbreaks : tagastab koefitsientide värvuse kategoorilise vahemiku. Vaikimisi pole pausi ja värvigradient on pidev
  • numbrid : ümardage korrelatsioonikordaja. Vaikimisi seadistatud väärtuseks 2
  • madal : värvuse alumise taseme juhtimine
  • keskel : juhtige värvi keskmist taset
  • kõrge : värvuse kõrge taseme kontrollimine
  • geom : kontrollige geomeetrilise argumendi kuju. Vaikimisi on "paan"
  • silt : Boole'i ​​väärtus. Kuva silt või mitte. Vaikimisi seadistatakse väärtusele „FALSE“

Põhiline soojakaart

Pakendi kõige põhilisem proovitükk on kuumakaart. Graafiku legend näitab gradiendi värvi vahemikus - 1 kuni 1, kuum värv näitab tugevat positiivset korrelatsiooni ja külm värv, negatiivne korrelatsioon.

library(GGally)ggcorr(data)

Koodi selgitus

  • ggcorr (andmed): vaja on ainult ühte argumenti, milleks on andmeraami nimi. Teguritaseme muutujaid graafikusse ei lisata.

Väljund:

Lisage kuumakaardile kontroll

Saame graafikule lisada rohkem juhtelemente.

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

Koodi selgitus

  • nbreaks = 6: murra legend 6 astmega.
  • low = "steelblue": negatiivse korrelatsiooni saamiseks kasutage heledamaid värve
  • mid = "white": keskmiste korrelatsioonide jaoks kasutage valgeid värve
  • high = "darkred": positiivse korrelatsiooni saamiseks kasutage tumedaid värve
  • geom = "ring": kasutage kuumakaardil akende kuju kujul ringi. Ringi suurus on proportsionaalne korrelatsiooni absoluutväärtusega.

Väljund:

Lisage kuumakaardile silt

GGally võimaldab meil lisada akende sisse sildi.

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

Koodi selgitus

  • silt = TÕENE: lisage kuumakaardile korrelatsioonikordajate väärtused.
  • color = "grey50": valige värv, st hall
  • label_size = 3: määrake sildi suurus 3

Väljund:

ggpairs

Lõpuks tutvustame veel ühte funktsiooni GGaly raamatukogust. Ggpair. See loob graafiku maatriksvormingus. Ühes graafikus saame kuvada kolme tüüpi arvutust. Maatriks on mõõde, võrdub vaatluste arvuga. Ülemises / alumises osas kuvatakse aknad ja diagonaal. Saame kontrollida, millist teavet me tahame maatriksi igas osas näidata. Ggpairi valem on:

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

Argumendid :

  • df : kasutatud andmekogum
  • veerud : graafiku joonistamiseks valige veerud
  • pealkiri : lisage pealkiri
  • ülemine : juhtige kasti diagonaali kohal asuvaid kaste. Tagastamiseks on vaja esitada arvutustüüp või graafik. Kui pidev = "cor", palume R-l korrelatsioon välja arvutada. Pange tähele, et argument peab olema loend. Võib kasutada ka muid argumente, lisateabe saamiseks vaadake [vinjet] ("http://ggobi.github.io/ggally/#custom_functions").
  • Alumine : juhtige diagonaali all asuvaid kaste.
  • Kaardistamine : näitab graafiku esteetikat. Näiteks saame arvutada graafiku erinevate rühmade jaoks.

Kahemõõtmeline analüüs koos rühmitusega ggpairiga

Järgmisel graafikul on esitatud kolm teavet:

  • Korrelatsioonimaatriks log_totexp, log_income, vanus ja wtransi muutuja vahel rühmitatuna selle järgi, kas leibkonnas on laps või mitte.
  • Joonistage iga muutuja jaotumine rühmade kaupa
  • Kuvage hajuvusdiagramm koos trendiga gruppide kaupa
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))

Koodi selgitus

  • veerud = c ("log_totexp", "log_income", "vanus", "wtrans"): valige graafikul kuvatavad muutujad
  • pealkiri = "Suurbritannia leibkonna tulude kahemõõtmeline analüüs": lisage pealkiri
  • upper = list (): juhtige graafiku ülemist osa. St diagonaali kohal
  • pidev = mähis ("cor", suurus = 3)): arvutage korrelatsioonikordaja. Funktsiooni wrap () sees keerame argumendi pidevalt, et kontrollida graafiku esteetikat (st suurus = 3) - madalam = loend (): juhtige graafiku alumist osa. St diagonaali all.
  • pidev = mähis ("sile", alfa = 0,3, suurus = 0,1): lisage sirgjoonelise hajumisgraafik. Graafi esteetika kontrollimiseks mähime argumendi funktsiooni wrap () sees pidevalt (st suurus = 0,1, alfa = 0,3)
  • kaardistamine = aes (värv = lapsed_fac): me tahame, et graafiku iga osa oleks virnastatud muutujaga children_fac, mis on kategooriline muutuja, mis võtab väärtuse 1, kui leibkonnas pole lapsi ja 2 muul juhul

Väljund:

Kahemõõtmeline analüüs osalise grupeerimisega ggpairiga

Allolev graafik on veidi erinev. Muudame kaardistamise positsiooni ülemise argumendi sees.

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)))

Koodi selgitus

  • Täpselt sama kood nagu eelmises näites, välja arvatud:
  • kaardistamine = aes (värv = lapsed_fac): teisaldage loend ülemisse = nimekirja (). Me tahame, et arvutamine oleks grupi kaupa virnastatud graafiku ülemisse ossa.

Väljund:

Kokkuvõte

Funktsiooni võime kokku võtta allolevas tabelis:

raamatukogu

Eesmärk

meetod

kood

Alus

kahemõõtmeline korrelatsioon

Pearson

cor(dfx2, method = "pearson")

Alus

kahemõõtmeline korrelatsioon

Odamees

cor(dfx2, method = "spearman")

Alus

Mitmemõõtmeline korrelatsioon

pirn

cor(df, method = "pearson")

Alus

Mitmemõõtmeline korrelatsioon

Odamees

cor(df, method = "spearman")

Hmisc

P väärtus

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

Ggally

soojuskaart

ggcorr(df)

Mitmemõõtmelised krundid

cf code below

Huvitavad Artiklid...