Корелација у Р: Пеарсон & амп; Пример копљаника са матрицом

Биваријантни однос описује однос или корелацију између две променљиве и. У овом упутству ћемо размотрити концепт корелације и показати како се он може користити за мерење односа између било које две променљиве.

Постоје две примарне методе за израчунавање корелације између две променљиве.

  • Пеарсон: Параметријска корелација
  • Спеарман: Непараметарска корелација

У овом упутству ћете научити

  • Пеарсонова корелација
  • Корелација Спеарман Ранга
  • Матрица корелације
  • Визуелизујте матрицу корелације

Пеарсонова корелација

Пеарсонова метода корелације обично се користи као примарна провера повезаности две променљиве.

Коефицијент корелације , је мера снаге линеарне везе између две променљиве и. Израчунава се на следећи начин:

са

  • , односно стандардна девијација од
  • , односно стандардна девијација од

Корелација се креће између -1 и 1.

  • Вредност близу или једнака 0 подразумева мали или никакав линеарни однос између и.
  • Насупрот томе, што је ближе 1 или -1, то је линеарни однос јачи.

Т-тест можемо израчунати како следи и проверити табелу расподеле са степеном слободе једнаким:

Корелација Спеарман Ранга

Корелација ранга сортира запажања према рангу и израчунава ниво сличности између ранга. Предност корелације ранга је у томе што је робусна у односу на оутлиерс и није повезана са дистрибуцијом података. Имајте на уму да је корелација ранга погодна за редну променљиву.

Корелација Спеарман-овог ранга, увек је између -1 и 1, а вредност близу екстремитета указује на јаку везу. Израчунава се на следећи начин:

са наведеним коваријанцијама између ранга и. У именику се израчунавају стандардна одступања.

У Р можемо користити функцију цор (). Потребна су три аргумента, и метода.

cor(x, y, method)

Аргументи :

  • к: први вектор
  • и: Други вектор
  • метода: Формула коришћена за израчунавање корелације. Три вредности низа:
    • "пеарсон"
    • "кендалл"
    • "копљаник"

Опционални аргумент се може додати ако вектори садрже вредност која недостаје: усе = "цомплете.обс"

Користићемо скуп података БудгетУК. Овај скуп података извештава о буџетској расподели британских домаћинстава између 1980. и 1982. Постоји 1519 запажања са десет карактеристика, међу којима су:

  • вфоод: делите храну делите трошите
  • вфуел: поделите потрошњу горива
  • тканина: удео у буџету за потрошњу одеће
  • валц: поделите алкохол
  • втранс: поделите трошкове превоза
  • вотхер: удео потрошње друге робе
  • тотекп: укупна потрошња домаћинства у фунти
  • доходак укупан нето приход домаћинства
  • старост: старост домаћинства
  • деца: број деце
Пример
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)

Објашњење кода

  • Прво увозимо податке и погледамо их функцијом глимпсе () из библиотеке дплир.
  • Три бода су изнад 500К, па смо одлучили да их изузмемо.
  • Уобичајена је пракса претварања новчане променљиве у дневник. Помаже у смањењу утицаја одступања и смањује искривљеност у скупу података.

Излаз:

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

Коефицијент корелације између променљивих прихода и хране можемо израчунати помоћу метода „пеарсон“ и „спеарман“.

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

излаз:

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

Излаз:

## [1] -0.2501252 

Матрица корелације

Биваријантна корелација је добар почетак, али ширу слику можемо добити мултиваријантном анализом. Корелација са многим променљивим је приказана унутар матрице корелације . Корелациона матрица је матрица која представља парну корелацију свих променљивих.

Функција цор () враћа матрицу корелације. Једина разлика са биваријантном корелацијом је у томе што не треба да прецизирамо које променљиве. Подразумевано, Р израчунава корелацију између свих променљивих.

Имајте на уму да се корелација не може израчунати за варијаблу фактора. Морамо бити сигурни да ћемо испустити категоријску карактеристику пре него што проследимо оквир података унутар цор ().

Матрица корелације је симетрична, што значи да вредности изнад дијагонале имају исте вредности као и она доле. Визуелније је приказати половину матрице.

Изузимамо цхилдрен_фац јер је то променљива нивоа фактора. цор не врши корелацију на категоријалној променљивој.

# 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

Објашњење кода

  • цор (подаци): Приказати матрицу корелације
  • округло (подаци, 2): заокружити матрицу корелације са два децимала
  • ас.дист (): Приказује само друго полувреме

Излаз:

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

Ниво значајности

Ниво значајности је користан у неким ситуацијама када користимо бисер или копљаник. Функција рцорр () из библиотеке Хмисц израчунава за нас п-вредност. Можемо преузети библиотеку из цонда и копирати код да бисмо је залепили у терминал:

conda install -c r r-hmisc 

Рцорр () захтева да се оквир података чува као матрица. Наше податке можемо претворити у матрицу пре израчунавања корелационе матрице са п-вредношћу.

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

Објекат листе мат_2 садржи три елемента:

  • р: Излаз матрице корелације
  • н: Број посматрања
  • П: п-вредност

Занима нас трећи елемент, п-вредност. Уобичајено је да се матрица корелације приказује са п-вредношћу уместо са коефицијентом корелације.

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

Објашњење кода

  • мат_2 [["П"]]: п-вредности се чувају у елементу званом П
  • округли (мат_2 [["" П "]], 3): Заокружите елементе са три цифре

Излаз:

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

Визуелизујте матрицу корелације

Мапа топлоте је још један начин за приказ матрице корелације. ГГалли библиотека је продужетак ггплот2. Тренутно није доступан у библиотеци цонда. Можемо инсталирати директно у конзолу.

install.packages("GGally")

Библиотека укључује различите функције за приказ збирних статистика као што су корелација и дистрибуција свих променљивих у матрици.

Функција ггцорр () има пуно аргумената. Увешћемо само аргументе које ћемо користити у водичу:

Функција ггцорр

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

Аргументи:

  • дф : Коришћен скуп података
  • метода : Формула за израчунавање корелације. Подразумевано се рачунају упарени и Пеарсон
  • нбреакс : Врати категорички опсег за бојење коефицијената. Подразумевано нема прекида и градијент боје је непрекидан
  • цифре : заокружити коефицијент корелације. Подразумевано постављено на 2
  • низак : Контролишите доњи ниво боје
  • средина : Контролишите средњи ниво бојења
  • високо : контролише висок ниво обојености
  • геом : Контролишите облик геометријског аргумента. Подразумевано, „плочица“
  • ознака : логичка вредност. Прикажите или не налепницу. Подразумевано је постављено на `ФАЛСЕ`

Основна мапа топлоте

Најосновнија парцела пакета је мапа топлоте. Легенда графикона приказује градијентну боју од - 1 до 1, са врућом бојом која указује на снажну позитивну корелацију, а хладном бојом, негативну корелацију.

library(GGally)ggcorr(data)

Објашњење кода

  • ггцорр (подаци): Потребан је само један аргумент, а то је име оквира података. Варијабле нивоа фактора нису укључене у графикон.

Излаз:

Додајте контролу на мапу топлоте

На графикон можемо додати још контрола.

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

Објашњење кода

  • нбреакс = 6: преломи легенду са 6 редова.
  • лов = "стеелблуе": Користите светлије боје за негативну корелацију
  • мид = "бела": Користите беле боје за корелацију средњег опсега
  • хигх = "даркред": Користите тамне боје за позитивну корелацију
  • геом = "круг": Користите круг као облик прозора на топлотној мапи. Величина круга је пропорционална апсолутној вредности корелације.

Излаз:

Додајте ознаку на мапу топлоте

ГГалли нам омогућава да додамо ознаку унутар прозора.

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

Објашњење кода

  • лабел = ТРУЕ: Додајте вредности коефицијената корелације унутар мапе топлоте.
  • цолор = "греи50": Изаберите боју, односно сиву
  • лабел_сизе = 3: Подесите величину налепнице на 3

Излаз:

ггпаирс

На крају, представљамо још једну функцију из ГГали библиотеке. Ггпаир. Израђује графикон у матричном формату. У оквиру једног графа можемо приказати три врсте прорачуна. Матрица је димензија, са једнаким бројем посматрања. Горњи / доњи део приказује прозоре и у дијагонали. Можемо да контролишемо које информације желимо да прикажемо у сваком делу матрице. Формула за ггпаир је:

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

Аргументи :

  • дф : Коришћен скуп података
  • колоне : Изаберите колоне за цртање парцеле
  • наслов : Укључите наслов
  • горњи : Контролишите оквире изнад дијагонале цртежа. Потребно је навести врсту израчунавања или графикон који се враћа. Ако је континуирано = "цор", тражимо од Р да израчуна корелацију. Имајте на уму да аргумент мора бити листа. Могу се користити и други аргументи, погледајте [вињета] ("хттп://ггоби.гитхуб.ио/ггалли/#цустом_фунцтионс") за више информација.
  • Доњи : Контролишите оквире испод дијагонале.
  • Мапирање : Означава естетику графикона. На пример, можемо израчунати графикон за различите групе.

Двострука анализа са ггпаром са груписањем

Следећи графикон приказује три информације:

  • Матрица корелације између променљиве лог_тотекп, лог_инцоме, аге и втранс груписана према томе да ли домаћинство има дете или не.
  • Нацртајте расподелу сваке променљиве по групама
  • Прикажите дијаграм расејања са трендом по групама
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))

Објашњење кода

  • колоне = ц ("лог_тотекп", "лог_инцоме", "аге", "втранс"): Изаберите променљиве које ће се приказивати на графикону
  • титле = "Двострука анализа прихода британског домаћинства": додајте наслов
  • уппер = лист (): Контролишите горњи део графикона. Тј. Изнад дијагонале
  • континуирано = премотавање ("цор", величина = 3)): Израчунајте коефицијент корелације. Аргумент непрекидно умотавамо у функцију врап () да бисмо контролисали естетику графа (тј. Величина = 3) -ловер = лист (): Контролишите доњи део графикона. Тј. Испод дијагонале.
  • континуирано = премотавање („глатко“, алфа = 0,3, величина = 0,1): Додајте графикон расејања са линеарним трендом. Аргумент непрекидно умотавамо у функцију врап () да бисмо контролисали естетику графа (тј. Величина = 0,1, алфа = 0,3)
  • маппинг = аес (цолор = цхилдрен_фац): Желимо да сваки део графикона буде слаган променљивом цхилдрен_фац, која је категорична променљива која узима вредност 1 ако домаћинство нема децу, а 2 иначе

Излаз:

Двострука анализа са ггпаром са делимичним груписањем

Графикон испод је мало другачији. Мењамо положај мапирања унутар горњег аргумента.

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

Објашњење кода

  • Тачно исти код као претходни пример, осим за:
  • пресликавање = аес (боја = деца_фац): Преместите листу у горњи = списак (). Желимо само рачунање сложено по групама у горњем делу графикона.

Излаз:

Резиме

Можемо резимирати функцију у доњој табели:

библиотека

објективан

метода

код

База

биваријантна корелација

Пеарсон

cor(dfx2, method = "pearson")

База

биваријантна корелација

Спеарман

cor(dfx2, method = "spearman")

База

Мултиваријантна корелација

пеарсон

cor(df, method = "pearson")

База

Мултиваријантна корелација

Спеарман

cor(df, method = "spearman")

Хмисц

П вредност

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

Ггалли

Топлотна мапа

ggcorr(df)

Мултиваријантне парцеле

cf code below

Занимљиви Чланци...