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:
koos
, st standardhรคlve
, 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 :
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:
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")
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:
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:
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:
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 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:
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 |









