####################################################################################### #################### Cvičení 7 - Základy statistiky ################################### ############### Adéla Vrtková, Martina Litschmannová ############################## ################# Katedra aplikované matematiky, FEI, VŠB-TUO ######################### ####################################################################################### # Zobrazuje-li se vám skript s chybným kódováním, využijte příkaz File / Reopen with Encoding # Náplň je inspirována online kurzy na https://www.datacamp.com/ ## Obsah skriptu - Závislost dvou kvantitativních proměnných # 0. Nutný začátek - import, preprocessing - ZNÁME A UMÍME! # 1. Korelační diagramy # 2. Korelační koeficienty ## EXTRA DŮLEŽITÁ POZNÁMKA 1 ##### # Korelace neznamená kauzalitu! # Analýza statistické závislosti neposoudí a ani nemůže posoudit kauzální vztah! ## EXTRA DŮLEŽITÁ POZNÁMKA 2 ##### # Korelační koeficient NIKDY nepoužíváme samostatně bez grafického posouzení! #///////////////////////////////////////////////////////////////////////////////////// ## 0. Nutný začátek - import, preprocessing - ZNÁME A UMÍME! ####################### # Načtení potřebných knihoven (příp. instalace) install.packages("dplyr", "ggplot2") # pokud jsou nainstalovány, není potřeba spouštět library(readxl) library(dplyr) library(ggplot2) getwd() setwd("C:/Users/Martina/Výuka/Základy statistiky") # V případě potřeby upravte odkaz na vlastní pracovní adresář dotaznik = read_excel("dotaznik_pp.xlsx") # Import dat, název souboru případně upravte. # Zjednodušme pojmenování proměnných. colnames(dotaznik)=c("ID","prace","koleje","naklady","prijmy","plat","pocitac_studium","soc_site", "os","leg_software","ikb_znalost","soc_inz","soc_inz_techniky","sexting","darknet", "hesla","piti","sport","pocitac_hry","student_typ","hry","odpocivarna","serialy", "prokrastinace","hobby","bez_stresu","bez_problemu") # Dříve než se pustíme do vlastní analýzy, je nutné se rozhodnout, # které statistické jednotky budou zařazeny do analýzy. # V případě, že analýza nebude prováděna pro všechny respondenty, kteří se zúčastnili # dotazníkového šetření, je toto nutné uvést ve "výzkumné zprávě". # Jelikož nyní se jako analytici rozhodneme, že chceme pracovat s maximální možnou informací, # tak primárně nebudeme odstraňovat žádné respondenty ze šetření (ano, i toto je vždy potřeba ve zprávě uvést). # Úkol A ------------------------------------------------------------------------------ # Nabízí se analýza závislosti mezi průměrnými měsíčními příjmy a náklady studenta. # Jakou závislost očekáváte? # Může být analýza zkreslena? #--- # Při analýze jedné kvantitativní proměnné jsme zjistili, že pravděpodobně nepřesně formulovanými otázkami # nejsou data o nákladech a příjmech úplně relevantní. # Nicméně, protože numerických proměnných není v datech mnoho a neradi bychom zde "vystříleli" ty nejlepší # (ty chceme nechat Vám na domácí úkoly), tak zde si korelační analýzu ukážeme právě na příjmech a nákladech. # Do analýzy ale vstupujeme s tím, že jsme si problému s těmito proměnnými vědomi, ale na chvíli na ně zapomeneme :). # Analýzu závislosti dvou kvantitativních proměnných si tedy ukážeme na proměnných prijem a naklady #///////////////////////////////////////////////////////////////////////////////////// ## 1. Korelační diagramy = Korelogramy = Bodové grafy ################################ # Na první rychlo-posouzení si vykresleme jednoduchý korelační diagram pomocí základního R. plot(dotaznik$prijmy, dotaznik$naklady) # Hmm... Část grafu vypadá krásně "přímkovitě", nemyslíte? # Zdá se, že nám dojem kazí dvě pozorování - dva studenti s dosti vysokými příjmy, ale poměrně nízkými náklady. # Tyto dva respondenty tedy vynecháme a podíváme se na korelogram znovu. plot(dotaznik$prijmy[dotaznik$prijmy<40000], dotaznik$naklady[dotaznik$prijmy<40000]) # Lepší? # V podstatě jsme nyní provedli velice primitivní detekci a odstranění odlehlých pozorování. # Jako odborníci jsme usoudili, že tito dva respondenti se natolik vymykají, že s nimi nadále # nebudeme pracovat. I toto zapisujeme do "výzkumné zprávy". # Proměnné bez odlehlých pozorování si budeme chtít uložit do nových proměnných. # Nikdy nepřepisujeme původní data! # Za tímto účelem pokračujte následujícícm úkolem. # Úkol B ------------------------------------------------------------------------------ # V datové matici dotaznik si definujte nové proměnné naklady_out a prijmy_out. # Nejprve si je definujte jednoduše jako kopii proměnných naklady a prijmy. # Poté vyberte respondenty s příjmy nad 40 000 Kč a jejich hodnotu naklady_out a prijmy_out # označte jako NA (chybějící). dotaznik$naklady_out = dotaznik$naklady dotaznik$prijmy_out = dotaznik$prijmy dotaznik$naklady_out[dotaznik$prijmy>40000] = NA dotaznik$prijmy_out[dotaznik$prijmy>40000] = NA #--- # Po odstranění odlehlých pozorování máme k dispozici kompletní informaci o příjmech a nákladech od sum(complete.cases(dotaznik[,c("naklady_out","prijmy_out")])) # respondentů. # Nyní už se zaměříme na tvorbu a vylepšování korelogramu s ggplot. # Základní nastavení pro vykreslení... ggplot(dotaznik, aes(x=prijmy_out, y=naklady_out))+ geom_point() # a s proložením bodů "lineárním trendem". ggplot(dotaznik, aes(x=prijmy_out, y=naklady_out))+ geom_point()+ geom_smooth(method=lm, # lm = linear model - proložení lin. trendem se=FALSE) # nastavujeme na FALSE, na TRUE si počkejte do navazujícího studia :) # Schválně s vykresleme korelogram s proloženým lineárním trendem pro původní data. ggplot(dotaznik, aes(x=prijmy, y=naklady))+ geom_point()+ geom_smooth(method=lm, # lm = linear model - proložení lin. trendem se=FALSE) # Už víte, proč je tak důležitá vizualizace? # Úkol C ------------------------------------------------------------------------------ # Zadání je snadné - vyšperkujte graf! ggplot(dotaznik, aes(x=prijmy_out, y=naklady_out))+ geom_point(size=3, shape = 3)+ geom_smooth(method=lm, se=FALSE, color = "forestgreen")+ labs(x = "Průměrné měsíční příjmy (Kč)", y = "Průměrné měsíční náklady (Kč)", title = "Analýza závislosti mezi průměrnými měsíčními příjmy\na náklady respondentů")+ theme_minimal()+ theme(axis.text = element_text(color = "black", size =11), axis.title = element_text(color = "black", size =11), plot.title = element_text(hjust = 0.5), plot.margin = unit(c(0.5,2,0.5,0.5), "cm"))+ scale_y_continuous() #--- # Na korelogramu posuzujeme, zda je možné, že by mezi analyzovanými proměnnými mohla být lineární závislost. # Sledujeme, zda se body "řadí" do přímky, nebo zda se náhodou nejedná o jinou - nelineární závislost (např. exponenciální, logaritmická...). # Z vykresleného korelačního diagramu to vypadá, že by příjmy a náklady mohly být lineárně závislé proměnné. # Dále vidíme zcela očekávaný rostoucí trend - s vyššími příjmy rostou i náklady. # Pokud by bodový graf naznačoval, že závislost není lineární, pak by nemělo smysl ten lineární trend vykreslovat. #///////////////////////////////////////////////////////////////////////////////////// ## 2. Korelační koeficient ########################################################## # Personův korelační koeficient - míra LINEÁRNÍ závislosti # Podívejme se na Personův korelační koeficient pro příjmy a náklady před a po odstraněním odl. pozorování cor(dotaznik$prijmy, dotaznik$naklady, method = "pearson", # Pearsonův korel. koeficient use = "complete.obs") # Pouze úplné dvojice (vynechá NA) cor(dotaznik$prijmy_out, dotaznik$naklady_out, method = "pearson", # Pearsonův korel. koeficient use = "complete.obs") # Pouze úplné dvojice (vynechá NA) # Vidíte ten rozdíl? Kdybychom odlehlé hodnoty vůbec neřešili, tak by nám ta pozorování "vychýlila" # korelační koeficient. Falešně bychom nabyli dojmu, že mezi příjmy a náklady je poměrně slabá lineární závislost, # přitom je lineární závislost silnější. Vzhledem ke znaménku Pearsonova korelačního koeficientu ještě říkáme, # že proměnné jsou pozitivně korelované. # Spearmanův korelační koeficient - míra MONOTÓNNÍ závislosti (ne nutně lineární) # Je robustní alternativou - odolný proti odlehlým pozorováním # Srovnejte! cor(dotaznik$prijmy, dotaznik$naklady, method = "spearman", # Spearmanův korel. koeficient use = "complete.obs") cor(dotaznik$prijmy_out, dotaznik$naklady_out, method = "spearman", # Spearmanův korel. koeficient use = "complete.obs") # Vidíte, že rozdíl ve Spearmanově korelačním koeficientu je minimální. # Zde tedy vidíte v praxi, co znamená robustní alternativa nějaké metody. # Daň za robustnost je ale interpretovatelnost. # Na základě hodnoty Spearmanova korel. koeficientu víme, že s příjmy rostou i náklady. # Ale nevíme jak - exponenciálně, logaritmicky,...? # Proto je u korelační analýzy klíčové nástroje kombinovat - vizualizace + koeficienty. #////////////////////////// ## Poznámky ############## # 1. U korelační analýzy diskutujeme povahu, sílu a "směr" závislosti. # 2. Povahou se rozumí lineární, příp. jiná závislost. # 3. Silou se rozumí absolutní hodnota korel. koeficientů. Blíží se v abs. hodnotě 1? Jsou blízko nule? Něco mezi? # 4. "Směrem" rozumíme znaménko - pozitivní/negativní závislost. Neboli s rostoucí jednou proměnnou roste či klesá ta druhá?