Analýza dat pomocí R a ArcGIS Pro - 2. část

28. 6. 2018
  • Desktopový GIS
  • ArcGIS Pro 2.1

V předchozím díle Analýza dat pomocí R a ArcGIS Pro - 1. část jsme v R provedli analýzu a nyní vytvoříme korelační matici, s jejíž pomocí zhodnotíme výsledky.

Pokusíme se zjistit, které jevy mohou ovlivnit míru kriminality. Použijeme pro to atributy, které jsme vytvořili při obohacování dat. Pro tuto analýzu využijeme nástroje pro exploratory data analysis.

Tvorba korelační matice pro výpočet vztahu mezi atributy

Prvním důležitým krokem pro porozumění vlivu jevů na míru kriminality je modelování vztahu mezi mírou kriminality a vybranými proměnnými. Nástroje pro exploratory data analysis obsažené v R nám umožní identifikovat nejpravděpodobnější statisticky relevantní prediktory pro případné další modely. Použijeme nástroj correlation matrix, který nám poskytne znázornění síly vztahu mezi hodnotou vybraného atributu a mírou kriminality.

  • Otevřeme náš projekt v ArcGIS Pro a zároveň otevřeme RStudio.
  • Pomocí funkce arc.open() otevřeme třídu prvků San_Francisco_Crime_Rates v geodatabázi projektu ArcGIS Pro:

rate_df <- arc.open('C:/<cesta>/Analýza kriminality.gdb/San_Francisco_Crime_Rates')

  • Příkazem arc.select() vybereme atributy z objektu rate_df, se kterými budeme dále pracovat, a uložíme je do objektu rate_select_df. Následně tento objekt převedeme na objekt typu spatial data frame pomocí funkce arc.data2sp(<vstupní proměnná pro převod>), se kterým můžeme v R pracovat.

rate_select_df <- arc.select(rate_df, fields = c("OBJECTID", "Crime_Counts", "Population", "Med_HomeIncome", "Renter_Count", "Med_HomeValue", "Grocery", "Restaurant", "Pct_Forest", "EB_Rate"))

rate_spdf <- arc.data2sp(rate_select_df)

Pro vylepšení zobrazení výsledné korelační matice načteme několik knihoven a několik vlastních funkcí. Z vlastních funkcí to budou:

Get upper triangle of the correlation matrix

Vrátí horní trojúhelníkový tvar korelační matice.

get_upper_tri <- function(cormat) {
     cormat[lower.tri(cormat)] <- NA
     return(cormat)
}

Reorder correlation coefficients

Změní pořadí prvků v korelační matici podle síly závislosti korelačního koeficientu.

reorder_cormat <- function(cormat) {
     dd <- as.dist((1-cormat) / 2)
     hc <- hclust(dd)
     cormat <- cormat [hc$order, hc$order]
}

Kód těchto funkcí vložíme do konzole R, a tím je přidáme do našeho projektu. Dále nainstalujeme a přidáme do projektu několik knihoven (pokud již jsou nainstalovány, stačí použít tu část kódu, která knihovny přidá – funkce library).

install.packages("reshape2")
install.packages("ggplot2")
install.packages("ggmap")
library (reshape2)
library (ggplot2)
library (ggmap)

Nejprve vytvoříme proměnnou corr_sub, které přiřadíme slot data (tabulku data z objektu typu spatial data frame) a vybereme pouze atributy, které zadáme pomocí vektoru vytvořeného funkcí c().

corr_sub <- rate_spdf@data [ c ("Grocery", "Restaurant", "Pct_Forest", "Med_HomeIncome", "Renter_Count", "Med_HomeValue", "EB_Rate")]

Vypočteme korelační matici, zaokrouhlíme její hodnoty na dvě desetinná místa a výsledek uložíme do proměnné cormax.

cormax <- round (cor(corr_sub), 2)

Pro lepší čitelnost provedeme seřazení funkcí Reorder correlation coefficients a výsledek přiřadíme do proměnné cormax <- reorder_cormat (cormax).

Korelační matici převedeme na horní trojúhelníkový tvar upper_tri <- get_upper_tri (cormax) a následně ji pomocí funkce melt převedeme na řádkovou kombinaci prvků matice, a tak lépe uvidíme jednotlivé vztahy mezi atributy.

melted_cormax <- melt (upper_tri, na.rm = TRUE)

Níže uvedeným blokem kódu provedeme vykreslení

ggheatmap <- ggplot (melted_cormax, aes (Var2, Var1, fill = value)) +
     geom_tile(color = "white") +
     scale_fill_gradient2 (low = "blue", high = "red", mid = "white", midpoint = 0, limit = c(-1,1), space = "Lab", name = "Pearsonova\nKorelace") +
     theme_minimal() + # minimal theme
     theme (axis.text.x = element_text(angle = 45, vjust = 1, size = 12, hjust = 1)) +
     coord_fixed()
print (ggheatmap)

Dále přidáme do grafu popisky a upravíme jeho celkový vzhled.

ggheatmap +
     geom_text (aes (Var2, Var1, label = value), color = "black", size = 4) +
     theme (
          axis.title.x = element_blank(),
          axis.title.y = element_blank(),
          panel.grid.major = element_blank(),
          panel.border = element_blank(),
          axis.ticks = element_blank(),
          legend.justification = c (1, 0),
          legend.position = c (0.6, 0.7),
          legend.direction = "horizontal") +
     guides (fill = guide_colorbar (barwidth = 7, barheight = 1, title.position = "top", title.hjust = 0.5))

Korelační matice

Korelační matice nám na základě závislosti jednotlivých parametrů umožní identifikovat atributy, které výrazně ovlivňují kriminalitu v daném místě a na které by se tak bezpečnostní analytici při plánování prediktivních modelů měli zaměřit.

Nabývá-li prediktor kladných hodnot, znamená to přímou úměru růstu (či poklesu) mezi těmito dvěma hodnotami. Čím je hodnota vyšší, tím je síla závislosti vyšší. Záporné hodnoty značí nepřímou úměru vazby parametrů.

Zhodnotíme-li náš výsledek, hodnoty odpovídající parametru EB_Rate (tedy vlastní míře kriminality) nemají nijak silnou závislost na ostatních parametrech, naopak je zde možné nalézt možnou mulikolinearitu parametrů Grocery a Restaurant. Mají totiž vůči sobě silnou závislost, což může mít vliv na přesnost celého modelu.

Závěrečné shrnutí

Na základě výsledků z korelační matice vyplývá, že by nás pro vyhledání závislých proměnných při predikci míry kriminality čekalo ještě mnoho práce při volbě správných atributů. Nejsilnějším ukazatelem hovořícím o vlivu na kriminalitu je parametr Med_HomeValue, což je medián hodnoty domu. Můžeme tedy říci, že se zvyšujícími se hodnotami domů existuje pravděpodobnost, že v daném okolí bude nižší kriminalita.

Nalézt správnou odpověď však nebylo cílem této ukázky. V rámci tohoto seriálu jste měli možnost se seznámit s instalací R, jeho propojením s platformou ArcGIS a se základními analytickými výpočty v obou prostředích. Snad vám tedy poslouží jako odrazový můstek pro další objevování možností v oblasti analýzy geodat.

Modelování je velmi složitá disciplína a zahrnuje mnoho různých technik. Více informací můžete nalézt například na stránkách https://www.r-bloggers.com/exploratory-data-analysis-useful-r-functions-for-exploring-a-data-frame.