1 Hodnocení geologických dat pomocí matematické statistiky Petr Čoupek 740/742/ IT spec.
2 Témata přednášky – časová osnova Způsob uvažování ve statistice: práce s náhodou Pojmy - odhady parametrů, testování hypotéz, modelování Korelace a regrese, lineární modely (LM), analýza rozptylu (ANOVA, MANOVA) Analýza hlavních komponent (PCA) – příklady z geologie Shluková analýza (CLU) a diskriminační analýza (DA)– příklad z geologie Krigování – základní prostorové odhady – geologický příklad Kategoriální data: logistická regrese, kontingenční tabulky. Příprava dat pro statistické zpracování Symbolika grafických výstupů ve statistice
3 Čím se zabývá matematická statistika Testování hypotéz o datech: datové soubory jsou podrobeny statistickému testu, který posoudí jejich shodnost či odlišnost nebo jsou data klasifikována do skupin podle jejich podobnosti Odhady parametrů: daná data jsou popsána odvozeným parametrem – parametr je odhadnut i s intervalem spolehlivosti kolem něj Modelování: složené použití shora uvedeného Návrh experimetu – měření: schéma uspořádání experimetnu tak, aby mohl být co nejlépe analyzován shora uvedeným. Otázka, jakého původu data jsou je klíčová pro jejich analýzu
4 Způsob uvažování ve statistice
5 Experiment 100 hodů mincí - zcela náhodný experiment Případpočet HKolik případů v celé množině případ 0000H00000… případů … 0HHH00HHH00.HOH e+28 0H0H0HHH000…H0H e+29 případů … e+28 HHHH0HHHH….HHHH99100 případů HHHHHHHHHH..HHHH1001 případ Celkem: 2^100, t.j e+30 případů
6 Způsob uvažování ve statistice
7
8
9
10 Způsob uvažování ve statistice
11 Způsob uvažování ve statistice Centrální limitní věta: součet náhodných veličin (s konečným rozptylem, nezávislých, se společnou střední hodnotou,..) konverguje k normálnímu rozdělení (Gausova křivka) Zákon velkých čísel: aritmetický průměropakovaných realizací náhodné veličiny (nezávislých experimentů,..) konverguje ke střední hodnotě Obecně: souhrn (kombinace) náhod vede k deterministickému výsledku. Klasická statistika aproximuje náhodu pomocí limitních případů, ale vyžaduje dodržení řady podmínek, aby její závěry byly správné
12 Odhady parametrů, testování hypotéz 100 hodů=1 experiment=1 měření Odhad parametru počet Orlů Provedu několik experimentů (třeba n=300) a získám měření. Odhaduji teoretickou hodnotu, o které jsem teoreticky přesvědčen, že je 50. (nazývá se střední hodnota) Pro odhad střední hodnoty použiji průměr získaných měření. Interval spolehlivosti Jak je můj odhad přesný? Co když je moje mince nesymetrická a Orel padá více – jak to ověřím?
13 Odhady parametrů, testování hypotéz T-test: - podmínky: veličiny pochází z normálního rozdělení pravděpodobnosti Jsou vzájemně nezávislé Nulová hypotéza: Mince je ideální, t.j. sh=50. Test sh>50 sh<>50, sh<50 (jednostranné a oboustranné testy) Například pro n=300, při experimentálně získaném průměru se již zamítá nulová hypotéza pro symetrickou minci na hladině p-value = Metoda je velmi citlivá, ale musí být splněny určité podmínky (často je lze v praxi obtížně zaručit)
14 Odhady parametrů, testování hypotéz Náhrada t-testu neparametrickými testy: Neparametrické testy se osvobozují od závislosti na rozdělení pravděpodobnosti tím, že pracují s pořadovými statistikami – laicky řečeno, nezáleží na konkrétních hodnotách naměřených dat, ale jen na jejich vzájemném pořadí / hodnocení závodníků bez stopek a měření, jen jejich porovnáním. Mezi různými skupinami se hodnotí jak jsou pořadově promíchány a abstrahuje se od konkrétních hodnot. To zjednoduší vstupní podmínky, učiní testy hodně odolné vůči exptrémním pozorováním, na úkor citlivosti testu V éře před počítači bylo obtížné tabelovat nepar. testy Kolmogorov-Smirnov test: testuje celou distribuční fci Znaménkový Mann-Whitney test: testuje polohu středu
15 Závislost a nezávislost hodnot - kovariance Ve statistice se závislost popisuje pomocí kovariance (je to míra lineární závislosti) cov(X,Y)=EXY-EXEY Jedná se o (velmi) formální popis, abstrahuje od “funkční závislosti“ normovaná kovarinace se nazývá korelace. Nabývá hodnot (– 1,1), nezávislé jevy mají nulovou korelaci Naopak: nulová korelace ještě nezaručuje nějaký případ závislosti (např. y=x^2 na symetrick0m intervalu kolem 0) Máme-li náhodný vektor (sadu dat s několika parametry), lze sestavit kovarianční (korelační) matici závislostí jejích složek – formálně odpovídá vícerozměrnému rozptylu – viz např. PCA pojem korelace a autokorelace, prostorové korelace
16 Lineární modely, korelace, regrese, analýza rozptylu y=Xb +eps (eps náhodný vektor, s var. maticí V=I) Zkoumaná veličina y se vysvětluje jakou souhrn několika faktorů (zapsaných do matice X a sečtených s vahami b) +chyba Parametry se odhadnou (v Eukleidovském prostoru) metodou nejmenších čtverů (optimalizace, metrika) Testování modelů a podmodelů zahrnuje širokou škálu případů : Regresní modely (i třeba polynomická závislost je lineární v parametrech, Analýza rozptylu: snaha vysvětlit chování veličiny podle příslušnostike kategoriím. Kombinované modely, Pro netriviální varianční matici V jde pak o širokou škálu úloh (např. geoprostorové odhady)
17 Regrese – příklad data Meuse (Máza) Vzorová data – těžké kovy na břehu řeky Mázy coordinates cadmium copper lead zinc elev dist om ffreq soil lime landuse dist.m 1 (181072, ) Ah 50 2 (181025, ) Ah 30 3 (181165, ) Ah (181298, ) Ga (181307, ) Ah (181390, ) Ga (181165, ) Ah (181027, ) Ab (181060, ) Ab (181232, ) W (181191, ) Fh (181032, ) Ag (180874, ) W (180969, ) Ah (181011, ) Ah (180830, ) W (180763, ) W (180694, ) W (180625, ) W (180555, ) (180642, ) Am (180704, ) Am (180704, ) Ag (181153, ) Ah (181147, ) W (181167, ) W (181008, ) Ab 400
18 Regrese – příklad data Meuse (Máza)
19 Lineární modely: jednoduchá regrese (trend)
20 Lineární modely - shrnutí je důležitá následná analýza modelu nad daty analýza reziduí, QQplot, analýza odlehlých a vlivných (leverage) pozorování lze testovat významnost trendů model je „lineární“ jen ve odhadovaných svých parametrech – může pracovat i „nelineárními“ vztahy
21 Analýza hlavních komponent (PCA – Principal component analysis) Vycházíme ze souboru, ve kterém je každý vzorek popsán mnoha, obecně korelovanými parametry Smyslem analýzy hlavních komponent je snížit počet parametrů, které popisují zkoumaný soubor (jeho variabilitu). To se provede vhodnou lineární transformací a to tak, aby první parametr popisoval co možná nejvíce variability, další pak co největší zbytek, atd. Tyto parametry jsou navzájem nekorelované. Pokud jsme schopni variabilitu souboru vysvětlit z větší míry pomocí dvou komponent, můžeme si vzorky základního souboru graficky znázornit v rovině podobné vzorky leží poblíž sebe, nepodobné jsou daleko od sebe. Směry pohybu po rovině mají význam trendu odlišnosti
22 Analýza hlavních komponent Data: H. Gilíková
23 Analýza hlavních komponent Data: J. Franců
24 Shluková analýza (Cluster Analysis CLU, CA) Vstup - analogie k PCA – mnohorozměrná data, zjišťování jejich podobností: jde dále: zařadí pozorování do shluků Nazývaná též numerická taxonomie, úzce souvisí s diskriminační analýzou (archeologie, medicína,..) je několik algoritmů, jak data shlukovat : hierarchické (aglomerace, nejbližší soused, Wardova metoda, těžiště) a nehierarchické způsoby shlukování (K-means, PAM – zárodečné body) problémy: odlehlá pozorování, sjednocení měřítkové úrovně jednotlivých parametrů Výstup: dendrogam – rozptylový diagram – úzce souvisí s PCA
25 Shluková analýza
27 Diskriminační analýza Používá se např. v antropologii pro klasifikaci nových nálezů, ale její užití je obecnější Modelová situace: máme známé klasifikované předměty, které umíme popsat pomocí řady parametrů – v rámci skupiny je přirozená variabilita Nyní najdeme další předmět a ptáme se, zda patří do některé z existujících skupin a do které z nich, s jakou pravděpodobností,.. atd
28 Diskriminační analýza - shluková analýza Výchozí soubor : 502 horninových vzorků klasifikovaných do 7 skupin (A,A2,B.C,C2,D,E) 298 sedimentárních vzorků ze 6 lokalit. U obou skupin souborů známy veličiny."Almandine" "Andradite" "Grossular" "Pyrope" "Spessartine" "Uvarovite" Provedené analýzy – metodika: Byla použita linerární diskriminační analýza,. Nejprve byl na základě souboru 502 horninových vzorků vypočten model diskriminační analýzy a diskriminátory, následně byly 298 sedimentární vzorky z oblastí 1-6 začleněny ke skupinám A-E pomocí predikce na základě určených diskriminátorů. Ke klasifikaci byly použity všechny dostupné veličiny s vyjímkou "Uvarovite". Vzhledem k hodnám "Uvarovite" jeho začlenění vedlo na úlohu se singulární kovarianční maticí. Výsledné začlenění sedimentárních vzorků ke skupinám horninových vzorků popisuje následující tabulka, obsahující počty začleněných sedimentárních vzorků v každé skupině
29 Diskriminační analýza a shluková analýza
30 Diskriminační analýza
31 Diskriminační analýza
32 Diskriminační analýza d<<-read.table( file='sed.csv', header=TRUE, sep=";", na.strings=c("",'*','-')); dv<<-read.table( file='sed_vz.csv', header=TRUE, sep=";", na.strings=c("",'*','-')); library(cluster) x<-cbind(d$Almandine,d$Andradite,d$Grossular,d$Pyrope,d$Spessartine,d$Uvarovite) xv<-cbind(dv$Almandine,dv$Andradite,dv$Grossular,dv$Pyrope,dv$Spessartine,dv$Uvarovite) pamx <- pam(x, 5) summary(pamx) plot(pamx) cbind(d$skupina,pamx$clustering) pamxv <- pam(xv, 6) summary(pamxv) plot(pamxv) cbind(dv$Group,pamxv$clustering) par(ask=TRUE,mfcol=c(2,3)) #"Andradite" "Grossular" "Pyrope" "Spessartine" "Uvarovite" plot(d$Almandine~d$skupina,col="grey") plot(d$Grossular~d$skupina,col="grey") plot(d$Pyrope~d$skupina,col="grey") plot(d$Spessartine~d$skupina,col="grey") plot(d$Uvarovite~d$skupina,col="grey") tapply(dv$Almandine,dv$Group,mean) dv$Group<-as.factor(dv$Group); plot(dv$Almandine~dv$Group,col="grey") plot(dv$Grossular~dv$Group,col="grey") plot(dv$Pyrope~dv$Group,col="grey") plot(dv$Spessartine~dv$Group,col="grey") plot(dv$Uvarovite~dv$Group,col="grey")
33 Prostorově zaměřená analýza - krigování – základní prostorové odhady jde o interpolaci hodnot v celé oblasti na základě několika existujících měření z hlediska statistiky je důležitý výpočet odhadu přesnosti souvisí s lineráními modely (regresí) Z(s) = µ + eps(s) µ je konstantní stacionární funkce a eps(s) je prostorově korelovaná část rozptylu zislá na s (element zkoumaného pole). v(h)=1/2 E (z(s i )-z(s i +h)) 2
34 Variogram - ilustrace
35 Krigování – základní prostorové odhady modelování veličiny s prostorovou vazbou veličina je změřena pouze v určitých bodech (vzorek, vrt, nález) odhaduje se hodnota veličiny v celé ploše (prostoru) mezi naměřenými hodnotami 1. krok: výpočet odhadu variogramu (t.j. závislost diferencí hodnot na vzdálenosti od sebe ) 2. krok: interpolace hodnot (zpravidla se počítá v mřížce s určitým krokem)
36 Krigování – základní prostorové odhady par(ask=TRUE); library(sp) library(lattice) # required for trellis.par.set(): trellis.par.set(sp.theme()) # sets color ramp to bpy.colors() data(meuse) coordinates(meuse)=~x+y ## coloured points plot with legend in plotting area and scales: print(spplot(meuse, "zinc", do.log = TRUE, key.space=list(x=0.2,y=0.9,corner=c(0,1)), scales=list(draw=T)))
37 Krigování – základní prostorové odhady library(sp) library(lattice) # required for trellis.par.set(): trellis.par.set(sp.theme()) # sets color ramp to bpy.colors() data(meuse) coordinates(meuse)=~x+y data(meuse.riv) meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv))," meuse.riv"))) ## same plot; north arrow now inside panel, custom panel function instead of sp.layout print(spplot(meuse, "zinc", panel = function(x, y,...) { sp.polygons(meuse.sr, fill = "lightblue") SpatialPolygonsRescale(layout.scale.bar(), offset = c(179900,329600), scale = 500, fill=c("transparent","black")) sp.text(c(179900,329700), "0") sp.text(c(180400,329700), "500 m") SpatialPolygonsRescale(layout.north.arrow(), offset = c(178750,332500), scale = 400) panel.pointsplot(x, y,...) }, do.log = TRUE, cuts = 7, key.space = list(x = 0.1, y = 0.93, corner = c(0,1)), main = "Top soil zinc concentration (ppm)"))
38 Krigování – základní prostorové odhady library(sp) library(lattice) # required for trellis.par.set(): trellis.par.set(sp.theme()) # sets color ramp to bpy.colors() data(meuse) coordinates(meuse)=~x+y data(meuse.riv) meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse. riv"))) rv = list("sp.polygons", meuse.sr, fill = "lightblue") ## multi-panel plot, scales + north arrow only in last plot: ## using the "which" argument in a layout component ## (if which=4 was set as list component of sp.layout, the river ## would as well be drawn only in that (last) panel) scale = list("SpatialPolygonsRescale", layout.scale.bar(), offset = c(180500,329800), scale = 500, fill=c("transparent","black"), which = 4) text1 = list("sp.text", c(180500,329900), "0", cex =.5, which = 4) text2 = list("sp.text", c(181000,329900), "500 m", cex =.5, which = 4) arrow = list("SpatialPolygonsRescale", layout.north.arrow(), offset = c(181300,329800), scale = 400, which = 4) cuts = c(.2,.5,1,2,5,10,20,50,100,200,500,1000,2000) print(spplot(meuse, c("cadmium", "copper", "lead", "zinc"), do.log = TRUE, key.space = "right", as.table = TRUE, sp.layout=list(rv, scale, text1, text2, arrow), # note that rv is up front! main = "Heavy metals (top soil), ppm", cex =.7, cuts = cuts))
39 Krigování – základní prostorové odhady library(sp) library(lattice) # required for trellis.par.set(): trellis.par.set(sp.theme()) # sets color ramp to bpy.colors() alphaChannelSupported = function() { !is.na(match(names(dev.cur()), c("pdf"))) } data(meuse) coordinates(meuse)=~x+y data(meuse.riv) meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))) rv = list("sp.polygons", meuse.sr, fill = ifelse(alphaChannelSupported(), "blue", "transparent"), alpha = ifelse(alphaChannelSupported(), 0.1, 1)) pts = list("sp.points", meuse, pch = 3, col = "grey", alpha = ifelse(alphaChannelSupported(),.5, 1)) text1 = list("sp.text", c(180500,329900), "0", cex =.5, which = 4) text2 = list("sp.text", c(181000,329900), "500 m", cex =.5, which = 4) scale = list("SpatialPolygonsRescale", layout.scale.bar(), offset = c(180500,329800), scale = 500, fill=c("transparent","black"), which = 4) library(gstat, pos = match(paste("package", "sp", sep=":"), search()) + 1) data(meuse.grid) coordinates(meuse.grid) = ~x+y gridded(meuse.grid) = TRUE v.ok = variogram(log(zinc)~1, meuse) ok.model = fit.variogram(v.ok, vgm(1, "Exp", 500, 1)) v.uk = variogram(log(zinc)~sqrt(dist), meuse) uk.model = fit.variogram(v.uk, vgm(1, "Exp", 300, 1)) meuse[["ff"]] = factor(meuse[["ffreq"]]) meuse.grid[["ff"]] = factor(meuse.grid[["ffreq"]]) v.sk = variogram(log(zinc)~ff, meuse) sk.model = fit.variogram(v.sk, vgm(1, "Exp", 300, 1)) zn.ok = krige(log(zinc)~1, meuse, meuse.grid, model = ok.model) zn.uk = krige(log(zinc)~sqrt(dist), meuse, meuse.grid, model = uk.model) zn.sk = krige(log(zinc)~ff, meuse, meuse.grid, model = sk.model) zn.id = krige(log(zinc)~1, meuse, meuse.grid) zn = zn.ok zn[["a"]] = zn.ok[["var1.pred"]] zn[["b"]] = zn.uk[["var1.pred"]] zn[["c"]] = zn.sk[["var1.pred"]] zn[["d"]] = zn.id[["var1.pred"]] print(spplot(zn, c("a", "b", "c", "d"), names.attr = c("ordinary kriging", "universal kriging with dist to river", "stratified kriging with flood freq", "inverse distance"), as.table = TRUE, main = "log-zinc interpolation", sp.layout = list(rv, scale, text1, text2)) )
40 Krigování – základní prostorové odhady library(sp); library(lattice);trellis.par.set(sp.theme()) # sets color ramp to bpy.colors() alphaChannelSupported = function() { !is.na(match(names(dev.cur()), c("pdf")))} data(meuse) coordinates(meuse)=~x+y data(meuse.riv) meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)),"meuse.riv"))) rv = list("sp.polygons", meuse.sr, fill = "lightblue") scale = list("SpatialPolygonsRescale", layout.scale.bar(), offset = c(180500,329800), scale = 500, fill=c("transparent","black"), which = 4) text1 = list("sp.text", c(180500,329900), "0", cex =.5, which = 4) text2 = list("sp.text", c(181000,329900), "500 m", cex =.5, which = 4) arrow = list("SpatialPolygonsRescale", layout.north.arrow(), offset = c(181300,329800), scale = 400, which = 4) library(gstat, pos = match(paste("package", "sp", sep=":"), search()) + 1) data(meuse.grid) coordinates(meuse.grid) = ~x+y gridded(meuse.grid) = TRUE v.ok = variogram(log(zinc)~1, meuse) ok.model = fit.variogram(v.ok, vgm(1, "Exp", 500, 1)) v.uk = variogram(log(zinc)~sqrt(dist), meuse) uk.model = fit.variogram(v.uk, vgm(1, "Exp", 300, 1)) meuse[["ff"]] = factor(meuse[["ffreq"]]) meuse.grid[["ff"]] = factor(meuse.grid[["ffreq"]]) v.sk = variogram(log(zinc)~ff, meuse) sk.model = fit.variogram(v.sk, vgm(1, "Exp", 300, 1)) zn.ok = krige(log(zinc)~1, meuse, meuse.grid, model = ok.model) zn.uk = krige(log(zinc)~sqrt(dist), meuse, meuse.grid, model = uk.model) zn.sk = krige(log(zinc)~ff, meuse, meuse.grid, model = sk.model) zn.id = krige(log(zinc)~1, meuse, meuse.grid) rv = list("sp.polygons", meuse.sr, fill = ifelse(alphaChannelSupported(), "blue", "transparent"), alpha = ifelse(alphaChannelSupported(), 0.1, 1)) pts = list("sp.points", meuse, pch = 3, col = "grey", alpha = ifelse(alphaChannelSupported(),.5, 1)) print(spplot(zn.uk, "var1.pred", sp.layout = list(rv, scale, text1, text2, pts), main = "log(zinc); universal kriging using sqrt(dist to Meuse)")) zn.uk[["se"]] = sqrt(zn.uk[["var1.var"]]) ## Universal kriging standard errors; grid plot with point locations ## and polygon (river), pdf has transparency on points and river print(spplot(zn.uk, "se", sp.layout = list(rv, scale, text1, text2, pts), main = "log(zinc); universal kriging standard errors"))
41 Krigování – základní prostorové odhady
42 Krigování – základní prostorové odhady
43
44 Kategoriální data: logistická regrese, kontingenční tabulky
45
46 Příprava dat pro statistické zpracování Data se ve statistických SW vyskytují především v datových rámcích (data frame). Jde o tabulku se sloupcovými vektory. Každý vektor je na prvním řádku tabulky pojmenován jednoznačným názvem v rámci rámce. Název začíná písmenem, neobsahuje mezery, české znaky, atd. obsahuje pouze písmena a číslice anglické abecedy – pro označení platí ototéž co pro proměnné v progr. Jazycích Pokud měříme jednu hodnotu ve více kategoriích, je ideální mít hodnotu v jediném sloupci a kategorie je v jiném sloupci. Jde o analogii s databázovou tabulkou Často se tímto způsobem zadávají i matice dat
47 Příprava dat pro statistické zpracování VzorekParAParBparC VzorekParametrhodnota 1A15.4 1B8.1 1C4.5 2A15.0 2B7.9 Způsob 1 – lépe se vyplňuje a kontroluje Způsob 2 – ideální pro zpracování. méně přehledný
48 Příprava dat pro statistické zpracování Další poznámky: Lze pracovat s chybějícím hodnotami (missing values) Výběr metod může souviset se způsobem, jak byla data pořízena (podle jakého pravidla byl sběr dat ukončen, kromě měřených hodnot i další okolnosti sběru dat, jaká byla metodika sběru dat – jde o archivní data, či data cíleně sbíraná k tomuto zpracování, nejsou data autokorelovaná?) Čím více parametrů se na daném objektu naměří, tím více metod se dá použít při zpracování Nesourodé parametry lze porovnávat, kombinovat ve statistických modelech (lineární, logistické modely)
49 Symbolika grafických výstupů ve statistice Box plot (krabicový diagram „plošný histogram“) notched box plot – pokud se zářezy nepřekrývají, mediány se významně liší. Box může ést i symboliku rozsahu výběru Histogram Trendové grafy, scatterplot (roztylové zobrazení, korelace, regrese) Grafy souvislé s prostorovým rozmístěním zkoumaných dat --- Pie diagram, sunflower plot Grafy teorie spolehlivosti
50 Symbolika grafických výstupů ve statistice – box plot
51 Symbolika grafických výstupů ve statistice
52 Symbolika grafických výstupů ve statistice – box plot a notched box plot
53 Symbolika grafických výstupů ve statistice – scatter plot
54 Symbolika grafických výstupů ve statistice
55 Symbolika grafických výstupů ve statistice
56 Symbolika grafických výstupů ve statistice
57 Symbolika grafických výstupů ve statistice
58 Teorie spolehlivosti sleduje se a porovnává pravděpodobnost výskytu nějaké události v čase na daném objektu přístup cenzorování: některé objekty v čase přestaneme sledovat, ale informaci, že nenastal sledovaný jev v určité období, lze využít zpravidla jde o výskyt –recidivu nemoci, úmrtí pacienta, poruchu stroje, ale může jít i o jevy v neživé přírodě
59 Teorie spolehlivosti
60 Reference Milan Meloun, Jiří Militký: Statistická analýza experimentálních dat, Academia 2004 Hebák, Hustopecký Jarošová, Pecáková: Vícerozměrné statistické metody California soil resource lab Tomislav Hengl: A practical Guide to Geostatistical Mapping of Enviromental Variables, JRC Ispra, Italy 2007.
61 Děkuji za pozornost