##########################################################################################################
###########################################    CA, NMDS    ###############################################
##########################################################################################################

# ordinacni metody pro vyhodnoceni nelinearnich dat - napr. abundance druhu (neocekavame linearni vztahy mezi parametry)

##########################################################################################################
###########################################       CA       ###############################################
##########################################################################################################

# nacteni balicku

install.packages("FactoMineR")
library(FactoMineR)

# nacteni dat

# 1 724 zen vyplnilo dotaznik:

# Jak vypada podle Vas idealni rodina?
# 	pracuji oba - muz i zena ("oba.pracuji")
# 	muz pracuje vice nez zena ("muz.pracuje.vice")
# 	pouze muze pracuje ("pouze.muz.pracuje")
# Co je nejlepsi pro matku, jejiz deti zacaly chodit do skoly?
# 	zustat doma ("zena.v.domacnosti")
# 	prace na castecny uvazek ("zena.castecny.uvazek")
# 	prace na cely uvazek ("zena.cely.uvazek")
# Jaky nazor máte na nasledujici tvrzeni: Nezamestnane zeny se citi "vyrazeny" ze spolecnosti?
# 	naprosto souhlasim ("zena.vyrazena.ze.spolecnosti.souhlasim")
# 	spise souhlasim ("zena.vyrazena.ze.spolecnosti.spise.souhlasim")
# 	spise nesouhlasim ("zena.vyrazena.ze.spolecnosti.spise.nesouhlasim")
# 	zcela nesouhlasim ("zena.vyrazena.ze.spolecnosti.nesouhlasim")
# Data byla sbirana v podobe kontingencni tabulky, kde prvni parametr definuje radky a dalsi dva parametry sloupce tabulky.
# Kazda hodnota v tabulce odkazuje na pocet zen, které zapadaji do uvedenych kategorii.

setwd("c:/Users/brozova/Desktop/4. cviceni/")
women_work<-read.table("dotaznik_zeny_francie1974.csv", header=TRUE, row.names=1, sep=";",dec=".")
women_work

row.names(women_work)
colnames(women_work)

# prvni 3 sloupce vyuzijeme pro vypocet CA, dalsi 4 sloupce budou v pozici vysvetlujicich promennych ("supplementary variables").

?CA
CAwomen<-CA(women_work,col.sup=4:7)
summary(CAwomen) 

CAwomen$eig			# % inercie popsane danou osou (prvni osa popisuje 86% celkove inercie)
CAwomen$row			# vysledky CA defaultne pro prvnich 10 radku z puvodni matice
CAwomen$row$coord		# souradnice na novych osach
CAwomen$row$contrib	# prispevek radku k definici nove osy (v sloupecku soucet dava 100%)
CAwomen$row$cos2		# mezi 0-1, blizke jedne pokud je dobre popsano na dane ose 

CAwomen$col			# vysledky CA pro sloupce vstupujici do analyzy
CAwomen$col$coord		# souradnice na novych osach
CAwomen$col$contrib	# prispevek sloupce k definici nove osy (v sloupecku soucet dava 100%)
CAwomen$col$cos2		# mezi 0-1, blizke jedne pokud je dobre popsano na dane ose 

# stejne vystupy pro dodatecne promenne (bez $contrib, protoze tyto neprispivaly k definici novych os)
CAwomen$col.sup
CAwomen$row.sup

summary(CAwomen,nbelements=Inf,file="CA results.csv") # vypise vysledky pro vsechny radky/sloupce vstupujici do analyzy,
# ulozi soubor "CA results.csv" do slozky, kam je pomoci setwd nastavena cesta

# vykresleni vysledku CA
plot(CAwomen,invisible=c("col.sup","row.sup"),cex=0.8) # pomoci select.row/select.col muzeme vykreslit jen vybrane klategorie
?plot.CA

# Interpretace
# Zeny, ktere uvedly, ze idealni aktivita po tom, co deti zacnou chodit do skoly, je prace na plny uvazek, uvedly take, ze
# v rodine by meli idealne oba rodice pracovat. Zeny, ktere uvedly, ze idealni aktivita po tom, co deti zacnou chodit do skoly, 
# je zustat doma, nejcasteji take uvedli, ze v rodine by mel pracovat pouze muz (s nizkou frekvenci uvedli, ze maji pracovat oba rodice).

plot(CAwomen,axes=c(1,2),cex=0.8) # vykresleni grafu s doplnkovymi promennymi

# Interpretace
# Zeny, ktere si mysli, ze v domacnosti by mel pracovat pouze muz, nesouhlasi s tim, ze pokud zena nepracuje, je "vytrzena" ze spolecnosti.
# Zeny, ktere si mysli, ze v idealni domacnosti by mela zena pracovat na castecny uvazek, souhlasi s tim, ze pokud zena nepracuje, 
# je "vytrzena" ze spolecnosti.

############## samostatny ukol

# 1) nactete soubor "domaci_povinnosti.csv". Radky odkazuji na domaci cinnosti, sloupecky popisuji, kdo tyto cinnosti nejcasteji vykonava, jednotlive bunky
#    odkazuji na pocet respondentu, kteri spadaji do uvedenych kategorii

# vykresleni - "balonkovy" graf
library("gplots")
dt <- as.table(as.matrix(domaci_povinnosti)) # pro vykresleni je nutne matici ulozit v podobe tabulky
balloonplot(t(dt), main ="domaci povinnosti", xlab ="", ylab="", label = FALSE, show.margins = FALSE)

# 2) spocitejte CA
# 3) vykreslete a interpretujte biplot:
		a) ktere cinnosti casteji provadi pouze zeny?
		b) ktere cinnosti casteji provadi pouze muz?
		c) ktere cinnosti casto provadi muz a zena spolecne?
		d) ktere cinnosti neprovadi muz a zena spolecne?

##########################################################################################################
###########################################       NMDS     ###############################################
##########################################################################################################

# NMDS - Non-Metric Dimensional Scaling
# aplikuje iterativni proces, pri kterem hleda takove osy, ktere maximalizuji korelaci mezi poradim vzdalenosti v puvodnim
# prostoru a poradim vzdalenosti na predem urcenem poctu novych os.
# Pomoci stresu (odchylek vzdalenosti v puvodnim a novem prostoru) hodnotime, zda nove osy dobre popisuji puvodni vicerozmerny prostor.

# nacteni balicku

install.packages("vegan")
library(vegan)

?metaMDS
NMDSwomen<-metaMDS(women_work[,1:3], distance="bray",k=2) #spocita osy a pocita tak dlouho dokud nenajde minimum
# metaMDS provede PCA na novych osach z NMDS - ve vysledku muzeme rici, ze nove osy popisuji max rozptylu v novem prostoru

NMDSwomen$stress	# hodnoty stresu: idealne pod 0.1 (do 0.2 lze interpretovat, nad 0.3 nelze interpretovat)
plot(NMDSwomen, type="t", main=paste("NMDS stress =", round(NMDSwomen$stress,3))) # vychazi podobne jako v CA

#Shepard diagram
?stressplot
stressplot(NMDSwomen, main="Shepard plot")

############## samostatny ukol

# 1) aplikujte NMDS na data "domaci_povinnosti.csv".
# 2)spocitejte a interpretujte hodnotu stresu.
# 3)vykreslete a interpretujte biplot.
		a) ktere cinnosti casteji provadi pouze zeny?
		b) ktere cinnosti casteji provadi pouze muz?
		c) ktere cinnosti casto provadi muz a zena spolecne?
		d) ktere cinnosti neprovadi muz a zena spolecne?

# domaci ukol: doma se podivejte na video: https://www.youtube.com/watch?v=Kl49qI3XJKY. 

