install.packages(c('vegan', 'gclus', 'cluster', 'vegan', 'ade4')) library(gclus) library(cluster) library(vegan) library(ade4) # nastaveni cesty getwd() setwd("f:/Prace/Vyuka/FSTA_2015/03_cviceni") dir() mesta<-read.table('HraniceCR_point.csv', sep=";", header=TRUE, dec=".") ryby<-read.table('ryby.csv', sep=";", header=TRUE, dec=".") lokality<-read.table('lokality.csv', sep=";", header=TRUE, dec=".") # ------------------------------------------------------------------------ # Asociacni matice -------------------------------------------------------- # ------------------------------------------------------------------------ # Priklad 1: Vytvorte asociacni matici pro 10 ceskych mest na zaklade # euklidovske vzdalenosti names(mesta) plot(mesta$X_JTSK, mesta$města) # graf mest v CR plot(mesta$X_JTSK, mesta$Y_JTSK) # mapa CR points(mesta$X_JTSK, mesta$města, col="red") ?dist dist.mesta<-dist(mesta[1:10,c(2,4)],method='euclidean') # matice vzdalenosti, pouzita funkce dist dist.mesta dist.mesta<-as.data.frame(as.matrix(dist.mesta)) # doplneni na ctvercovou matici a pak prevedeni na tabulku rownames(dist.mesta)<-mesta[1:10,1] # pridani nazvu radku colnames(dist.mesta)<-t(mesta[1:10,1]) #pridani nazvu sloupcu dist.mesta write.table(dist.mesta, file="dist.mesta.csv", sep=";") # ulozeni matice # Priklad 2: Vytvorte asociacni matici pro datovy soubor lokality, v pripade potreby pouzijte vhodnou transformaci class(lokality) # jaky typ objektu lokality jsou lokality<-as.data.frame(lokality) #prevedni na datovou tabulku, aby bylo moyne s tabulkou dale pracovat data.entry(lokality) summary(lokality) dist.lokality<-dist(lokality,method='euclidean') # vypocet asociacni matice ?decostand lokality.stan<-decostand(lokality, "standardize") #standardizace souboru summary(lokality.stan) dist.lokality.stan<-dist(lokality.stan,method='euclidean') # vypocet asociacni matice na standardizovanych datech write.table(as.data.frame(as.matrix(dist.lokality.stan)), file="ryby.csv", sep=";") # ulozeni matice # Ukol 1: Vytvorte asociacni matici pro prvnich deset lokalit ze souboru lokality zalozenou na promennych pH, nit, amm, oxy, dbo, # na zaklade euklidovske vzdalenosti. # Reseni # Priklad 3: Vytvorte asociacni matici nadruhovych datech ryby, pozijte vhodny asociacni koeficient ?vegdist #jedna z mnoha funkci jenz se da vyuzit na vypocet asociacni matice dist.ryby<-vegdist(ryby, "jac") # vypocet asociacni matice na abundancich druhu, poctech dist.ryby.b<-vegdist(ryby, "jac", binary=T) #vypocet asociacni matice na pritomnosti druhu, pocty byly prevdeny na binarky write.table(as.data.frame(as.matrix(dist.ryby.b)), file="ryby.csv", sep=";") # ulozeni matice # Priklad 4: Definujte podobna mesta z matice dist.mesta. # Reseni: Graficky vykreslime asociacni matici dist.mesta dist.mesta<-dist(mesta[1:10,c(2,4)],method='euclidean') # vypocet asociacni matice mesta[1:10,] coldiss (dist.mesta, diag=TRUE) # Dalsi funkce pro vypocet asociacnich matic ------------------------------ ?dist.binary ?daisy # Vypocet Mantelova testu ------------------------------------------------ # Ukol 2: Zjistete zda matice v ve slozce mantel test spolu koreluji. # Reseni: setwd("f:/Prace/Vyuka/FSTA_2015/03_cviceni/mantel test") # nastaveni cesty getwd() listMatice<-list() # vytvoreni objektu list listMatice[[1]] <- list(m1=as.dist(read.table("m1.txt"))) #nacteni matic do objektu, primo ze slozky listMatice[[2]] <- list(m1=as.dist(read.table("m2.txt"))) listMatice[[3]] <- list(m1=as.dist(read.table("m3.txt"))) listMatice[[4]] <- list(m1=as.dist(read.table("m4.txt"))) listMatice[[5]] <- list(m1=as.dist(read.table("m5.txt"))) listMatice[[6]] <- list(m1=as.dist(read.table("m6.txt"))) listMatice[[7]] <- list(m1=as.dist(read.table("m7.txt"))) ?mantel xxx<-mantel(listMatice[[1]]$m1, listMatice[[2]]$m1, method="spearman", permutations=1000) # ukazka vypoctu pro dve matice, # nastaven Spearmanuv korelacni koeficient xxx # podle hodnoty korelacniho indexu a statisticke vyznanosti, lze videt, ze matice spolu nesouviseji # Ukazka vypoctu pro vsechny uvedene matice -------------------------------- listMatice corelace <- array(0, dim=c(7,7)) p <- array(0, dim=c(7,7)) for (i in 1:7){ for (j in 1:7) { listMatice[[i]]$m1 xxx<-mantel(listMatice[[i]]$m1, listMatice[[j]]$m1, method="spearman", permutations=1000) corelace[i,j]<-xxx$statistic p[i,j]<-xxx$signif } } corelace p # Ukol: Zjistete zda spolu souvisi podobnost loklait a slozeni spolecenstev na lokalitach. # Reseni: Zavislost matic lokality.stan a dist.ryby.b testujeme poci mantel testu mantel(dist.lokality.stan,dist.ryby.b, method="spearman", permutations=1000) #Matice spolu souviseji, exisuje vztah mezi spolecenstvy a lokalitami # ------------------------------------------------------------------------ # Shlukova analyza -------------------------------------------------------- # ------------------------------------------------------------------------ # Priklad 5: Provedte shlukovou analyzu na datech lokality.csv. ?hclust dist.lokality.single<-hclust(dist.lokality, method="single") # provede shlukovou analyzu pomoci algoritmu single linkage/metoda nejblisiho souseda plot(dist.lokality.single) # vykresli dendrogram, zde je otazka do kolika shluku dana data rozdelit(moznosti jsou 2 x 4 ) dist.lokality.com<-hclust(dist.lokality, method="complete") # provede shlukovou analyzu pomoci algoritmu complete linkage/metoda nejvzdalenejsiho souseda plot(dist.lokality.com) # vykresli dendrogram, zde je otazka do kolika shluku dana data rozdelit(moznosti jsou 2 x 4 x 5 x .... ) ?cutree # funkce ktera nam vztvori sloupecek prirazeni objektu do shluku # Algoritmus nejblizsiho souseda dist.lokality.single.cut<-cutree(dist.lokality.single, k=4) # ziskame vektor prirazeni objektu do shluku lokality$single.4<-cutree(dist.lokality.single, k=4) #vlozime si ho k datum, dale jiz muzeme postupovat pomoci kasicke statistiky a pouzivat testy # Algoritmus nejvzdalenejsiho souseda dist.lokality.com.cut<-cutree(dist.lokality.com, k=5) # ziskame vektor prirazeni objektu do shluku lokality$complete.5<-cutree(dist.lokality.com, k=5) #vlozime si ho k datum, dale jiz muzeme postupovat pomoci kasicke statistiky a pouzivat testy ## Vytvoreni hezciho grafu ?reorder.hclust dist.lokality.single.reor<-reorder.hclust(dist.lokality.single,dist.lokality) # seradi lokality plot(dist.lokality.single.reor) # vykresli serazeny dendrogram plot(dist.lokality.single.reor, hang=-1) # uprava dendrogramu rect.hclust(dist.lokality.single.reor, k=4) # rozdeli dentdrogram do k shluku # ------------------------------------------------------------------------ # Validace shlukove analyzy ----------------------------------------------- # 1)Pomoci kofenetickeho indexu - korelce mezi puvodni matici vzdalenosti a kofenetickou matici, ktra predstavuje matici vzdalenosti # objektu v okamziku, kdy byl objekt poprve zarazen do shluku. dist.lokality.single.cop<-cophenetic(dist.lokality.single) # vypocet kofeneticke matice cor (dist.lokality.single.cop,dist.lokality) #vypocet korelacniho indexu. Neni uvedena p-hondota #-> nelze interpretovat statistickou vyznamnost -> matice jsou na sobe zavisle