Korrelatsioon R: Pearsoni ja Spearmani korrelatsioonimaatriksis

Kahe muutujaga korrelatsioon R-is

Kahe muutujaga seos kirjeldab seost vรตi korrelatsiooni kahe muutuja vahel R-s. Selles รตpetuses kรคsitleme korrelatsiooni mรตistet ja nรคitame, kuidas seda saab kasutada R-i mis tahes kahe muutuja vahelise seose mรตรตtmiseks.

Korrelatsioon R-programmeerimises

Kahe muutuja vahelise korrelatsiooni arvutamiseks R-programmeerimises on kaks peamist meetodit:

  • Pearson: Parameetriline korrelatsioon
  • Spearman: mitteparameetriline korrelatsioon

Pearsoni korrelatsioonimaatriks kirjas R

Pearsoni korrelatsioonimeetodit kasutatakse tavaliselt kahe muutuja vahelise seose esmase kontrollina.

. korrelatsioonikordaja, , on tugevuse mรตรตt sirgjooneline seos kahe muutuja ja . See arvutatakse jรคrgmiselt:

Pearsoni korrelatsioonimaatriks kirjas R

koos

  • Pearsoni korrelatsioonimaatriks kirjas R, st standardhรคlve
  • Pearsoni korrelatsioonimaatriks kirjas R, st standardhรคlve

Korrelatsioon jรครคb vahemikku -1 kuni 1.

  • Vรครคrtus, mis on nullilรคhedane vรตi sellega vรตrdne, tรคhendab, et ja vahel on lineaarne seos vรคike vรตi puudub รผldse.
  • Seevastu mida lรคhemal on 1 vรตi -1, seda tugevam on lineaarne seos.

Saame arvutada t-testi jรคrgmiselt ja kontrollida jaotustabelit vabadusastmega, mis on vรตrdne :

Pearsoni korrelatsioonimaatriks kirjas R

Spearmani astme korrelatsioon R

Auaste korrelatsioon sorteerib vaatlused auastme jรคrgi ja arvutab jรคrgu sarnasuse taseme. Astekorrelatsiooni eeliseks on see, et see on robustne kรตrvalekallete suhtes ja see ei ole seotud andmete jaotusega. Pange tรคhele, et jรคrjestusmuutuja jaoks sobib auaste korrelatsioon.

Spearmani astme korrelatsioon on alati vahemikus โ€“1 kuni 1, รครคrmuse lรคhedane vรครคrtus nรคitab tugevat seost. See arvutatakse jรคrgmiselt:

Spearmani astme korrelatsioon R

koos mรคrgitud kovariatsioonid vahel auaste ja . Nimetaja arvutab standardhรคlbed.

R-is 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 kasutatav valem. Kolm stringi vรครคrtust:
    • "Pearson"
    • "kendall"
    • "odamees"

Valikulise argumendi saab lisada, kui vektorid sisaldavad puuduvat vรครคrtust: use = โ€œcomplete.obsโ€

Kasutame BudgetUK andmestikku. See andmestik kajastab Briti majapidamiste eelarvejaotust aastatel 1980โ€“1982. Seal on 1519 vaatlust kรผmne tunnusega, nende hulgas:

  • wfood: jaga toitu jaga kuluta
  • wkรผtus: jagage kรผtusekulu
  • wcriie: eelarveosa riiete kulutamiseks
  • walc: jaga alkoholikulu
  • wtrans: jaga transpordikulusid
  • ema: muude kaupade osakaal
  • totexp: leibkonna kogukulutused naelades
  • tulu: leibkonna kogu netosissetulek
  • 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 dplyr teegi funktsiooni glimpse() abil.
  • Kolm punkti on รผle 500 XNUMX, seega otsustasime need vรคlja jรคtta.
  • Tavapรคrane on rahalise muutuja teisendamine logisse. See aitab vรคhendada kรตrvalekallete mรตju ja vรคhendab andmestiku viltu.

Vรคljund:

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

Korrelatsioonikordaja sissetulekute ja wfood muutujate vahel saame arvutada โ€œpearsoniโ€ ja โ€œspearmaniโ€ meetoditega.

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 R

Kahe muutujaga korrelatsioon on hea algus, kuid laiema pildi saame mitmemรตรตtmelise analรผรผsiga. Korrelatsioon paljude muutujatega on kujutatud a sees korrelatsioonimaatriks. Korrelatsioonimaatriks on maatriks, mis esindab kรตigi muutujate paarikorrelatsiooni.

Funktsioon cor() tagastab korrelatsioonimaatriksi. Ainus erinevus kahemรตรตtmelise korrelatsiooniga on see, et me ei pea mรครคrama, milliseid muutujaid. Vaikimisi arvutab R kรตigi muutujate vahelise korrelatsiooni.

Pange tรคhele, et tegurimuutuja puhul ei saa korrelatsiooni arvutada. Peame veenduma, et loobume kategoorilisest funktsioonist, enne kui edastame andmeraami sees cor().

Korrelatsioonimaatriks on sรผmmeetriline, mis tรคhendab, et diagonaalist kรตrgematel vรครคrtustel on samad vรครคrtused, mis allpool. Visuaalsem on nรคidata poolt maatriksist.

Vรคlistame children_fac, kuna see on teguritaseme muutuja. cor ei teosta korrelatsiooni kategoorilise muutujaga.

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

Koodi selgitus

  • cor (andmed): kuvab korrelatsioonimaatriksi
  • รผmmargune (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

Olulisuse tase

Olulisuse tase on kasulik mรตnes olukorras, kui kasutame pearsoni vรตi spearmani meetodit. Funktsioon rcorr() teegist Hmisc arvutab meie jaoks vรคlja p-vรครคrtuse. Saame raamatukogu alla laadida aadressilt konda ja kopeerige kood, et see terminali kleepida:

conda install -c r r-hmisc

Rcorr() nรตuab andmeraami salvestamist maatriksina. Enne p-vรครคrtusega korrelatsioonimaatriksi arvutamist saame oma andmed teisendada maatriksiks.

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. Tavaliselt nรคidatakse korrelatsioonimaatriksit 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
  • round(mat_2[["P"]], 3): elemendid รผmardatakse kolme numbriga

Vรคljund:

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

Korrelatsioonimaatriksi visualiseerimine R-is

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

install.packages("GGally")

Korrelatsioonimaatriksi visualiseerimine

Teek sisaldab erinevaid funktsioone kokkuvรตtliku statistika kuvamiseks, nรคiteks kรตigi muutujate korrelatsiooni ja jaotust. maatriks.

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 andmestik
  • meetod: korrelatsiooni arvutamise valem. Vaikimisi arvutatakse paaris ja Pearson
  • nbreaks: tagastab koefitsientide vรคrvimise kategoorilise vahemiku. Vaikimisi katkestusi pole ja vรคrvigradient on pidev
  • numbrit: korrelatsioonikordaja รผmardamine. Vaikimisi mรครคrake vรครคrtuseks 2
  • madal: kontrollige vรคrvi alumist taset
  • keskel: kontrollige vรคrvuse keskmist taset
  • suur: kontrollige vรคrvi kรตrget taset
  • geom: kontrollige geomeetrilise argumendi kuju. Vaikimisi "plaat"
  • etikett: Boole'i โ€‹โ€‹vรครคrtus. Nรคita vรตi mitte. Vaikimisi mรครคrake olekuks FALSE

Pรตhiline soojuskaart

Paketi kรตige elementaarsem sรผลพee on soojuskaart. Graafiku legend nรคitab gradiendi vรคrvi vahemikus โ€“ 1 kuni 1, kusjuures kuum vรคrv nรคitab tugevat positiivset korrelatsiooni ja kรผlm vรคrv negatiivset korrelatsiooni.

library(GGally)
ggcorr(data)

Koodi selgitus

  • ggcorr(andmed): vaja on ainult รผhte argumenti, mis on andmeraami nimi. Teguritaseme muutujaid graafikusse ei kaasata.

Vรคljund:

Pรตhiline soojuskaart

Juhtimise lisamine soojuskaardile

Saame graafikule lisada rohkem juhtelemente:

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

Koodi selgitus

  • nbreaks=6: murda legend 6 auastmega.
  • madal = "terassinine": Kasutage negatiivse korrelatsiooni jaoks heledamaid vรคrve
  • keskmine = "valge": kasutage keskmiste vahemike korrelatsiooniks valgeid vรคrve
  • kรตrge = "tumepunane": Positiivse korrelatsiooni jaoks kasutage tumedaid vรคrve
  • geom = "ring": Kasutage soojuskaardil akende kujuna ringi. Ringi suurus on vรตrdeline korrelatsiooni absoluutvรครคrtusega.

Vรคljund:

Juhtimise lisamine soojuskaardile

Sildi lisamine soojuskaardile

GGally vรตimaldab meil lisada akende sisse sildi:

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

Koodi selgitus

  • silt = TRUE: lisage soojuskaardi sees olevate korrelatsioonikordajate vรครคrtused.
  • vรคrv = "grey50": Valige vรคrv, st hall
  • sildi_suurus = 3: mรครคrake sildi suuruseks 3

Vรคljund:

Sildi lisamine soojuskaardile

Funktsioon ggpairs

Lรตpuks tutvustame veel รผhte funktsiooni GGaly teegist. Ggpair. See loob maatriksvormingus graafiku. รœhes graafikus saame kuvada kolme tรผรผpi arvutusi. Maatriks on mรตรตde, mis vรตrdub vaatluste arvuga. รœlemine/alumine osa kuvab aknad ja diagonaalis. Saame kontrollida, millist teavet tahame maatriksi igas osas nรคidata. ggpairi valem on jรคrgmine:

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

Argumendid:

  • df: kasutatud andmestik
  • veerud: valige graafiku joonistamiseks veerud
  • pealkiri: lisage pealkiri
  • รผlemine: juhtige joonise diagonaali kohal olevaid kaste. Taastamiseks tuleb esitada arvutuste tรผรผp vรตi graafik. Kui pidev = "cor", palume R-l korrelatsiooni arvutada. Pange tรคhele, et argument peab olema loend. Kasutada saab ka muid argumente, lisateabe saamiseks vaadake [vinjetti](โ€œhttp://ggobi.github.io/ggally/#custom_functionsโ€).
  • Langetage: juhtige diagonaali all olevaid kaste.
  • Kaardistamine: nรคitab graafiku esteetilisust. Nรคiteks saame arvutada graafiku erinevate rรผhmade jaoks.

Kahe muutujaga analรผรผs ggpairiga koos rรผhmitamisega

Jรคrgmisel graafikul on kolm teavet:

  • Korrelatsioonimaatriks log_totexp, log_income, vanuse ja wtrans muutuja vahel, mis on rรผhmitatud selle jรคrgi, kas leibkonnas on laps vรตi mitte.
  • Joonistage iga muutuja jaotus rรผhmade kaupa
  • Kuvage hajuvusdiagramm koos trendiga rรผhmade 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 = "Briti leibkonna tulukulude kahemรตรตtmeline analรผรผs": lisage pealkiri
  • รผlemine = list(): juhtige graafiku รผlemist osa. St diagonaali kohal
  • pidev = pakkimine ("kork", suurus = 3)): Arvutage korrelatsioonikordaja. Me murrame argumendi pidevalt funktsiooni wrap() sees, et kontrollida graafiku esteetikat (st suurus = 3) -lower = list(): Kontrollige graafiku alumist osa. St allpool diagonaali.
  • pidev = mรคhis ("sile", alfa = 0.3, suurus = 0.1): lisage lineaarse trendiga hajuvusdiagramm. Me murrame argumendi pidevalt funktsiooni wrap() sees, et kontrollida graafiku esteetikat (st suurus = 0.1, alfa = 0.3)
  • kaardistamine = aes(vรคrv = laste_fac): soovime, et graafiku kรตik osad oleksid virnastatud muutujaga children_fac, mis on kategooriline muutuja, mille vรครคrtus on 1, kui leibkonnal ei ole lapsi ja 2 muul juhul.

Vรคljund:

Kahe muutujaga analรผรผs ggpairiga koos rรผhmitusega

Kahe muutuja analรผรผs ggpairiga osalise rรผhmitusega

Allolev graafik on veidi erinev. Muudame kaardistuse asukohta รผ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:
  • mapping = aes(color = children_fac): Liigutage loendit รผlemises = list(). Soovime, et arvutus oleks virnastatud rรผhmade kaupa graafiku รผlemisse ossa.

Vรคljund:

Kahe muutujaga analรผรผs ggpairiga osalise rรผhmitusega

kokkuvรตte

  • Kahe muutujaga seos kirjeldab suhet vรตi korrelatsiooni kahe muutuja vahel R-s.
  • Kahe muutuja vahelise korrelatsiooni arvutamiseks on kaks peamist meetodit R programmeerimine: Pearson & Spearman.
  • Pearsoni korrelatsioonimeetodit kasutatakse tavaliselt kahe muutuja vahelise seose esmase kontrollina.
  • Auaste korrelatsioon sorteerib vaatlused auastme jรคrgi ja arvutab jรคrgu sarnasuse taseme.
  • Spearmani astme korrelatsioon on alati vahemikus โ€“1 kuni 1, รครคrmuse lรคhedane vรครคrtus nรคitab tugevat seost.
  • Korrelatsioonimaatriks on maatriks, mis esindab kรตigi muutujate paarikorrelatsiooni.
  • Olulisuse tase on kasulik mรตnes olukorras, kui kasutame pearsoni vรตi spearmani meetodit.

Allolevas tabelis saame kokku vรตtta kรตik R-i korrelatsioonifunktsioonid:

Raamatukogu Eesmรคrk Meetod kood
alus kaheosaline korrelatsioon Pearson
cor(dfx2, method = "pearson")
alus kaheosaline korrelatsioon Spearman
cor(dfx2, method = "spearman")
alus Mitmemรตรตtmeline korrelatsioon Pearson
cor(df, method = "pearson")
alus Mitmemรตรตtmeline korrelatsioon Spearman
cor(df, method = "spearman")
Hmisc P vรครคrtus
rcorr(as.matrix(data[,1:9]))[["P"]]
Ggally soojuskaart
ggcorr(df)
Mitme muutujaga graafikud
cf code below

Vรตta see postitus kokku jรคrgmiselt: