Grafická prezentace a numerické modelování geochemických dat Jednoduché geochemické přepočty a grafy 3.1 Geochemické indexy a binární diagramy Vybrané citace: ALBARÈDE F. 1995. Introduction to the Geochemical Modeling. Cambridge University Press, pp. 1 543. BOYNTON, W. V., 1984. Cosmochemistry of the rare earth elements: meteoritic studies. In: Henderson, P. (ed.) Rare Earth Elements Geochemistry. Amsterdam: Elsevier, pp. 63 114. ROLLINSON H.R. 1993. Using geochemical data: Evaluation, presentation, interpretation. Longman, London, pp 1 35. Cvičení 3.1 R je skvělý nástroj pro jednoduché geochemické přepočty. Na ukázku použijeme data pro granitoidy sázavské suity (sazava.data). přepočtěte všechno železo na FeO T FeO T FeO + 0.89981* Fe O = (3.1) napište funkci pro výpočet mg čísla: MgO mg# = 100 [mol. %] (3.) FeO + MgO 3 navrhněte funkci pro výpočet indexů A/CNK a A/NK: AlO3 A/ CNK = CaO + Na O + K O [mol. %] (3.3) A / NK AlO3 = [mol. %] (3.4) Na O + K O vyneste graf A/CNK A/NK, zobrazte v něm linie A/CNK=1, A/NK = 1 a A/CNK=A/NK Tab 3.1. Molekulové hmotnosti použité ve Cvičení 3.1 Al O 3 Fe O 3 FeO MgO CaO Na O K O 101.96 159.69 71.85 40.31 56.08 61.98 94.0 Varování: dělení matice vektorem probíhá podél sloupců, ne podle řádků! > WR<-read.table("sazava.data",sep="\t") > WR<-as.matrix(WR) > FeOt<-WR[,"FeO"]+WR[,"FeO3"]*0.89981 > WR<-cbind(WR,FeOt) > WR[,"FeOt"]
3/ Sa-1 Sa- Sa-3 Sa-4 Sa-7 SaD-1 Gbs-1 Gbs-0 6.674743 7.653495 7.76595 9.60584 6.39810 8.5671 8.587388 8.65536 Gbs- Gbs-3 Po-1 Po-3 Po-4 Po-5 5.691377 8.730470.5873.47994.46198.83911 > MW<-c(101.96,159.69,71.85,40.31,56.08,61.98,94.0) > oxidy<-c("alo3","feo3","feo,"mgo","cao","nao","ko") > names(mw)<-oxidy > mgno<-function(x){ mol<-t(x[,oxidy])/mw[oxidy] mg<-100 * mol["mgo",]/(mol["feo",] + mol["mgo",]) return(mg) > mgno(wr) Sa-1 Sa- Sa-3 Sa-4 Sa-7 SaD-1 Gbs-1 Gbs-0 51.16987 55.4955 51.9059 54.6880 48.07043 48.91939 7.9061 67.43446 Gbs- Gbs-3 Po-1 Po-3 Po-4 Po-5 76.874 47.5161 37.7046 59.80976 30.4033 7.77656 ank<-function(x){ mol<-t(x[,oxidy])/mw[oxidy] ANK<-mol["AlO3",]/(mol["NaO",] + mol["ko",]) return(ank) acnk<-function(x){ mol<-t(x[,oxidy])/mw[oxidy] ACNK<-mol["AlO3",]/(mol["NaO",] + mol["ko",]+mol["cao",]) return(acnk) > x<-cbind(acnk(wr),ank(wr)) > colnames(x)<-c("a/cnk","a/nk") > x A/CNK A/NK Sa-1 0.8355806.396569 Sa- 0.7619109.307463 Sa-3 0.8079150.5680 Sa-4 0.7194036.750777 Sa-7 0.9618076 3.144008 SaD-1 0.8418505.98374 Gbs-1 0.4370531 3.415807 Gbs-0 0.5549533.99973 Gbs- 0.7507199 5.65514 Gbs-3 0.859897.565055 Po-1 0.9716646.331685 Po-3 1.049173 1.8918 Po-4 1.0130401 1.868079 Po-5 1.1700486.43997 > plot(x[,1],x[,],xlab="a/cnk", ylab="a/nk",ylim=c(0.4,6), xlim=c(0.4,1.),pch=wr[,"symbol"]) > abline(0,1); abline(v=1); abline(h=1) # Obr. 3.1 A/NK 1 3 4 5 6 Obr. 3.1 0.4 0.6 0.8 1.0 1. A/CNK Diagram A/CNK A/NK pro horniny sázavské suity
3/3 3. Další užitečné grafické funkce points (x, y) funkce points() zobrazí body o souřadnicích [x, y]. Používá se pro přidávání dat na již vynesené grafy (funkce plot() vždy smaže předchozí a začne nový diagram) lines (x, y) vykreslí přímky; x, y jsou vektory příslušných souřadnic axis (side, at, labels) funkce plot() může být volána mj. s parametrem axes=false, který znamená, že nebudou zobrazeny osy. Ty pak lze vyvolat příkazem axis(), s parametry: side = 1 pro x, pro y. at = vektor popisovaných hodnot labels = textový vektor s jejich popisy custom Y I II III A B C D custom X > plot(1,1,xlim=c(0,3),ylim=c(- 1,1),axes=F,xlab="iks",ylab="ypsilon") > axis(1,0:3,c("a","b","c","d")) > axis(,-1:1,c("i","ii","iii")) Obr. 3. Uživatelské osy vytvořené funkcí axis 3.3 Spiderdiagramy Běžně používanými grafy jsou spiderdiagramy, tedy diagramy koncentrací ve vzorku normalizovaných nějakým standardem. Nejčastěji se tento přístup aplikuje na prvky vzácných zemin, které se normalizují chondritickými obsahy. Tab. 3.. Obsahy prvků vzácných zemin (REE) v chondritech (Boynton 1984) La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu 0.31 0.808 0.1 0.6 NA 0.195 0.0735 0.59 0.0474 0.3 0.0718 0.1 0.034 0.09 0.03 Cvičení 3. napište funkci pro normalizaci koncentrací REE chondritickými obsahy podle Boyntona (1984 soubor boynton.data; oddělovač je čárka) spočtěte normalizované hodnoty REE koncentrací pro analýzy sázavské suity a vyneste pomocí funkcí plot(), axis(), points() a lines() spiderdiagramy vzorků Po-1 a Po-4 > WR<-read.table("sazava.data",sep="\t") > WR<-as.matrix(WR[,-1]) > x<-read.table("boynton.data",sep=",") > chondrit<-as.numeric(x) # konverze na num. vektor
3/4 REE/chondrite 0.1 0.5 1.0 5.0 10.0 50.0 100.0 La Ce Pr Nd Sm Eu Gd Tb Dy Ho Er Tm Yb Lu Obr. 3.3. Chondritem normalizované vzory vzácných zemin pro dva trondhjemity sázavské suity (Cvičení 3.) > names(chondrit)<-names(x) normalizace<-function(x,chon){ norm<-t(x[,names(chon)])/chon return(norm) > y<-normalizace(wr,chondrit) > plot(y[,"po-1"],type="o",log="y", axes=f,xlab="",ylab="ree/chondrit",ylim=c(0.1,100)) > axis(1, 1:length(chondrit),labels=names(chondrit)) > axis(,) > points(y[,"po-4"]); lines(y[,"po-4"]) # Obr. 3.3 3.4 Ternární diagramy Dalším užitečným nástrojem jsou ternární diagramy (Obr. 3.4). Kardinálním problémem je transformace ternárních souřadnic [a, b, c] na binární [x, y], aby je bylo možno vynést standardními funkcemi jazyka R. Pokud předpokládáme, že trojúhelník je rovnostranný, se stranou jednotkové délky, potom jeho vrcholy (spodní levý, horní, a spodní pravý) mají [x, y] souřadnice A[0, 0], B[0.5, 3 /] and C[1, 0]. Ternární koordináty [a, b, c] datového bodu X pak mohou být transformovány na binární [x, y] pomocí (Obr. 3.4): b x = 1 a (3.5) 3 y = b (3.6) Obr. 3.4 Ternární diagram vynášení bodů [a, b, c] v binárních [x, y] souřadnicích
3/5 Cvičení 3.3 navrhněte funkci na kreslení ternárních diagramů vyneste ternární diagram Rb Sr Ba pro sázavskou suitu triplot<-function(alab,blab,clab){ suma<-wr[,alab]+wr[,blab]+wr[,clab] a<-wr[,alab]/suma b<-wr[,blab]/suma plot(1-a-b/,sqrt(3)*b/,xlab="",ylab="",axes=f,xlim=c(0,1), ylim=c(0,1)) # axes=f nebudou se vůbec vykreslovat osy # xlab="", ylab="" a nebudou ani popsány x1<-c(0,1,.5,0) y1<-c(0,0,sqrt(3)/,0) lines(x1,y1) text(0,0,alab) text(1,0,clab) text(0.5,sqrt(3)/,blab) triplot("ba","rb","sr") 3.5 Směsi několika komponent Násobení matic (pomocí operátoru %*% ) se nechá využít pro výpočet složení směsi, pokud známe složení jejích složek a jejich vzájemné proporce. Takto lze získat třeba složení celkové horniny, pokud známe chemismus jednotlivých minerálů a jejich modální zastoupení. Cvičení 3.4 Soubor gabro.data obsahuje složení tří minerálů olivínického gabra (Albarède 1995 str. 7): Tab. 3.3. Složení hlavních minerálních fází olivinického gabra SiO Al O 3 FeO MgO CaO Na O Olivín 40.01 0 14.35 45.64 0 0 Diopsid 54.69 0 3.7 16.51 5.5 0 Plagioklas 48.07 33.37 0 0 16.31.5 spočtěte složení gabra, obsahuje-li 40 % olivínu, 30 % diopsidu a 30 % plagioklasu > mins<-read.table("gabro.data",sep="\t") > mins<-as.matrix(mins) > mins SiO AlO3 FeO MgO CaO NaO ol 40.01 0.00 14.35 45.64 0.00 0.00 di 54.69 0.00 3.7 16.51 5.5 0.00 plg 48.07 33.37 0.00 0.00 16.31.5 > f<-c(0.4,0.3,0.3) > f%*%mins SiO AlO3 FeO MgO CaO NaO [1,] 46.83 10.011 6.71 3.09 1.549 0.675
3.6 Statistická analýza velkých a složitých datových souborů 3/6 Statická analýza velkých a složitých souborů geochemických dat, které například zahrnují složení vzorků hornin několika intruzí, může být velmi únavné a časově náročné. Pokud není třeba rozlišovat mezi složením jednotlivých skupin analýz (např. intruzí), běžné je použití funkce apply. Mnohem složitější je však případ, pokud potřebujeme počítat s každou skupinou zvlášť. Naštěstí faktory, v kombinaci s funkcí tapply, představují elegantní řešení takového problému. Navíc, v jazyce R existují ještě další efektivní nástroje: aggregate (x, by, FUN,...) Aplikuje funkci FUN na každou proměnnou (= sloupec) numerické matice nebo data framu x, přičemž je respektováno rozdělení do skupin na základě faktoru (nebo listu obsahujícího několik faktorů) by. Každá proměnná v x je tak rozdělena na podmnožiny vzorků (řádků) s určitými kombinacemi faktoru/ů by. Následně je spočtena hodnota funkce FUN pro každou takovou podmnožinu, přičemž lze specifikovat další parametry funkce (...). by (x, INDICES, FUN,...) Data frame x je rozdělen na podmnožiny řádků na základě argumentu INDICES (což je faktor nebo jejich list). Funkce FUN je aplikována na každou takovou podmnožinu (v principu také data frame), přičemž lze specifikovat další parametry funkce (...). Cvičení 3.5 Spočtěte průměry pro všechny sloupce (proměnné) souboru sazava.data Pomocí funkce summary určete základní statistické parametry charakterizující distribuci SiO v celém souboru Jaké jsou průměrné obsahy oxidů hlavních prvků a vybraných stopových prvků (Ba, Rb, Sr, Zr) v jednotlivých intruzích? Za použití funkce by spočtěte základní statistické parametry distribuce oxidů hlavních prvků, a to v každé intruzí zvlášť. > x<-read.table("sazava.data",sep="\t") > WR<-as.matrix(x[,-1]) > result<-apply(wr[,-1],,mean,na.rm=t) > round(result,) SiO TiO AlO3 FeO FeO3 MnO MgO CaO 57.95 0.64 16.94 4.73 1.75 0.14 3.57 8.16 NaO KO PO5 CO F S HO.PLUS HO..80 1.66 0.15 0.16 0.08 0.09 1.1 0.06 Ba Rb Sr Zr Nb Ni Co Zn 883.5 51.50 443.00 94.67 6.67 11.17 18.80 61.08 Cr La Ce Pr Nd Sm Eu Gd 67.33 0.05 4.69 4.39 16.01 3.9 1.40 3.08 Tb Dy Ho Er Tm Yb Lu 0.44.49 0.46 1.33 0.0 1.38 0.1 > labels<-as.matrix(x[,1]) > labels<-factor(labels)
3/7 > tapply(wr[,"sio"],labels,summary) $basic Min. 1st Qu. Median Mean 3rd Qu. Max. 48.84 49.63 51.7 51.78 5.90 55.80 $Pozary Min. 1st Qu. Median Mean 3rd Qu. Max. 6.95 66.96 69.69 68.44 71.17 71.4 $Sazava Min. 1st Qu. Median Mean 3rd Qu. Max. 50.7 55.09 55.17 55.74 57.73 59.98 > aggregate(wr[,:11],list(rock=labels),mean) Rock SiO TiO AlO3 FeO FeO3 MnO MgO CaO NaO KO 1 basic 51.778 0.784 16.87 5.664.640 0.174 5.644 11.100.50 1.36 Pozary 68.440 0.90 16.360.075 0.480 0.050 0.840 4.4475 3.450 1.900 3 Sazava 55.738 0.774 17.480 5.9 1.866 0.17 3.680 8.1700.816 1.90 > trace<-c("rb","sr","ba","zr") > aggregate(wr[,trace],list(rock=labels),mean,na.rm=t) Rock Rb Sr Ba Zr 1 basic 34.5 346.5 676.5 65.75 Pozary 59.5 460.75 191.5 157.5 3 Sazava 60.5 5.00 68.5 61.00 > by(wr[,:11],list(rock=labels),summary) Rock: basic SiO TiO AlO3 FeO FeO3 Min. :48.84 Min. :0.340 Min. :13.34 Min. :.740 Min. :1.47 1st Qu.:49.63 1st Qu.:0.670 1st Qu.:14.17 1st Qu.:5.690 1st Qu.:.44 Median :51.7 Median :0.760 Median :16.98 Median :6.0 Median :.79 Mean :51.78 Mean :0.784 Mean :16.87 Mean :5.664 Mean :.64 3rd Qu.:5.90 3rd Qu.:0.800 3rd Qu.:18.3 3rd Qu.:6.430 3rd Qu.:3. Max. :55.80 Max. :1.350 Max. :1.64 Max. :7.40 Max. :3.8 MnO MgO CaO NaO KO Min. :0.130 Min. :3.160 Min. : 7. Min. :1.67 etc