Statistické metody v ekonomii Ing. Michael Rost, Ph.D. Jihočeská univerzita v Českých Budějovicích
Shluková analýza Shluková analýza je souhrnným názvem pro celou řadu výpočetních algoritmů, jejichž cílem je rozklad daného souboru dat na několik relativně homogenních podmnožin, shluků. Rozklad množiny dat by měl být proveden takovým způsobem, aby si objekty uvnitř jednotlivých shluků byly co nejvíce podobné. Objekty patřící do různých shluků by si naopak měly být podobné co nejméně.
Pojem shluk Jednou z definic, která pojem shluk vymezuje je Van Rijsbergenova definice. Lze ji vyslovit následovně: Je-li dána množina objektů X = { x 1, x 2,, x n } a libovolný koeficient D nepodobnosti objektů, pak shlukem nazveme takovou podmnožinu A množiny objektů X, pro niž platí: max D( x i ; x j ) < min D( x k, x l ), (10) kde objekty x i ; x j ; x l A a objekt x k A.
Východiska Uvědomme si, že hodláme-li rozdělit n sledovaných p- rozměrných objektů do c shluků, pak zřejmě musí platit: 1 c n. (11) Pro úplnost dodejme, že pokud označíme symbolem S množinu shluků, S = {S 1, S 2,, S c }, pro které platí, že S i X pro i = 1, 2,, c a symbolem n i počet objektů obsažených ve shluku S i, pak c i=1 S i = X ; c i=1 n i = n ; S i S j = { } pro i j a i, j = 1, 2,, c. (12)
Přístupy ke zhlukování - tradiční Tradičně lze rozlišit dvě základní skupiny shlukové analýzy: hierarchické nehierarchické. Existuje však i jiné dělení, např. lze rozlišovat metody shlukové analýzy na polythetické monothetické.
Hierarchické metody Pro hierarchické algoritmy je společné to, že shlukovací proces má charakter posloupnosti rozkladů množiny objektů. Dle postupu algoritmu lze dělit hierarchické metody na aglomerativní divizivní. Hierarchických algoritmů existuje celá řada, přičemž se mezi sebou liší především stanovením vzdálenosti mezi jednotlivými shluky v daném p-rozměrném prostoru.
Problém shlukové analýzy Je třeba upozornit na skutečnost, že s ohledem na různě definovanou vzdálenost mezi shluky mohou různé algoritmy vést k naprosto rozdílným výsledkům i v případě, že jsou aplikovány na stejnou množinu dat. Jeden základní rys je však pro hierarchické shlukovací algoritmy stejný.
Postup shlukování aglomerativní vs. divizivní Aglomeratiní charakter V případě aglomerativního přístupu je na počátku shlukovacího procesu každý shluk tvořen právě jedním objektem. Počáteční stav, resp. rozklad množiny objektů na n jednoprvkových shluků, se nazývá nultý rozklad. Označme si jej S 0. V následujícím kroku aglomerativního algoritmu jsou vybrány dva jednoprvkové shluky, které jsou si z jistého pohledu nejpodobnější. Tyto objekty sloučíme do nového shluku. Takto vzniklý shluk, spolu s ostatními jednoprvkovými shluky, tvoří rozklad S 1. Uvedený postup se opakuje. V pořadí s-tý rozklad je tedy tvořen sloučením dvou nejpodobnějších si shluků předcházejícího s 1
Postup shlukování aglomerativní vs. divizivní rozkladu a ostatních nezměněných shluků s 1 rozkladu. Postup je ukončen při dosažení n 1 rozkladu, kdy shlukované objekty tvoří jediný shluk. Divizivní charakter Naopak, vycházíme-li z jediného shluku sestávajícího ze všech objektů a postupně shluk rozkládáme na vzájemně disjunktní podmnožiny, hovoříme o divizivním přístupu.
Metoda nejbližšího souseda Metoda nejbližšího souseda je v anglické literatuře nazývána Simple linkage. Lze ji definovat následovně: Jestliže D je libovolný koeficient nepodobnosti, symboly A, B jsou dva různé shluky, které náleží do rozkladu S k, objekt x i patří do shluku A a objekt x j do shluku B, pak je D SL (A, B) = min {D( x i ; x j )} (13) předpisem určujícím vzdálenost shluků A a B v metodě nejbližšího souseda.
Metoda nejbližšího souseda Pozor na zápornou vlastnost této metody. Jsou-li v matici dat obsaženy objekty, které jsou ve stejné vzdálenosti od již existujících shluků, může dojít ke sloučení jednotlivých shluků s těmito objekty, čímž dochází k formování jediného,,dlouhého a protáhlého shluku. Efekt tohoto spojení je popisován jako zřetězení. V anglosaské literatuře se pro tento jev používá označení chaining effect.
Příklad - pokračování Předpokládejme, že máme k dispozici stále tyto data: X 1 X 2 X 3 X 4 x 1 8,30 7,50 7,50 8,00 x 2 7,10 7,20 7,60 7,20 x 3 6,70 7,40 7,10 7,40 x 4 4,10 4,20 4,30 4,80 x 5 5,90 6,70 6,60 6,60 x 6 8,80 8,20 9,30 8,10 x 7 6,10 6,50 6,40 6,60 x 8 6,30 6,10 6,50 6,60 x 9 18,00 18,30 10,60 12,50 V R je máme uloženy v objektu data.
Shluková analýza v R vzdalenost<-round(dist(data),2) model1<-hclust(vzdalenost,method="single") plot(model1,xlab="objekty",sub="",main="")
Výsledný dendrogram - Metoda nejbližšího souseda 8 5 7 2 3 1 Height 0 5 10 15 9 4 6 objekty
Rozklad Výsledný rozklad do tří shluků získáme jednoduše pomocí funkce cutree() s parametrem k=3: cutree(model1,k=3); rect.hclust(model1, k=3, border="red") [1] 1 1 1 2 1 1 1 1 3
Rozklad pro k = 3 8 5 7 2 3 1 Height 0 5 10 15 9 4 6 objekty
Metoda nejvzdálenějšího souseda Další, velmi známou a hojně používanou aglomerativní shlukovací metodou je metoda nejvzdálenějšího souseda. V anglické literatuře je nazývána Complete linkage. Metoda nejvzdálenějšího souseda je v podstatě opakem metody nejbližšího souseda. Lze ji zavést tímto způsobem: Jestliže D je libovolný koeficient nepodobnosti, symboly A, B jsou dva různé shluky, které náleží do rozkladu S k, objekt x i patří do shluku A a objekt x j do shluku B, pak je D CL (A, B) = max {D( x i ; x j )} (14) předpisem určujícím vzdálenost shluků pro metodu nejvzdálenějšího souseda.
příklad pokračování model2<-hclust(vzdalenost,method="complete") plot(model2,xlab="objekty",sub="",main="",lwd=2) rect.hclust(model2, k=3, border="red") cutree(model2,k=3) [1] 1 1 1 2 1 1 1 1 3
Dendrogram - metoda nejvzdálenějšího souseda 8 5 7 2 3 1 Height 0 5 10 15 20 9 4 6 objekty
Metoda průměrné vazby V anglické literatuře nazývaná jako Average linkage method. Vzdálenost mezi dvěma shluky lze v případě metody průměrné vazby definovat následovně: Jestliže D je libovolný koeficient nepodobnosti, n A a n B jsou počty objektů ve shlucích A a B, objekt x i patří do A a objekt x j patří do B, pak D AL (A, B) = 1 n A n B x i A x j B D( x i ; x j ) (15) je předpisem určujícím vzdálenost shluků A a B pro metodu průměrné vazby. Jinými slovy, vzdálenost mezi jednotlivými dvěma shluky je definována jako průměrná vzdálenost mezi všemi dvojicemi objektů, které náleží do dvou různých shluků.
příklad pokračování model3<-hclust(vzdalenost,method="average") plot(model3,xlab="objekty",sub="",main="",lwd=2) rect.hclust(model3, k=3, border="red") cutree(model3,k=3) [1] 1 1 1 2 1 1 1 1 3
Dendrogram - metoda průměrné vazby 8 5 7 2 3 1 Height 0 5 10 15 9 4 6 objekty
Příklad Existuje celá řada jiných hierarchických metod, např. Wardova metoda, mediánová metoda,... Podívejme se na následující příklad. Níže uvedená tabulka zachycuje spotřebu proteinů v 25 zemích Evropy prostřednictvím spotřeby devíti druhů potravin. Jedná se o naší X. Sledovanými statistickými znaky jsou tedy: Červené - červené maso; Bílé - bílé maso, atd... Sledovanými statistickými jednotkami pak jednotlivé evropské země. Proved me tedy shlukovou analýzu prostřednictvím metody průměrné vazby a výsledek se pokusme interpretovat.
Příklad Země Červené Bílé Vejce Mléko Ryby Obilniny Škrob Ořechy Ovoce Albania 10,10 1,40 0,50 8,90 0,20 42,30 0,60 5,50 1,70 Austria 8,90 14,00 4,30 19,90 2,10 28,00 3,60 1,30 4,30 Belgium 13,50 9,30 4,10 17,50 4,50 26,60 5,70 2,10 4,00 Bulgaria 7,80 6,00 1,60 8,30 1,20 56,70 1,10 3,70 4,20 Czechoslovakia 9,70 11,40 2,80 12,50 2,00 34,30 5,00 1,10 4,00 Denmark 10,60 10,80 3,70 25,00 9,90 21,90 4,80 0,70 2,40 EGermany 8,40 11,60 3,70 11,10 5,40 24,60 6,50 0,80 3,60 Finland 9,50 4,90 2,70 33,70 5,80 26,30 5,10 1,00 1,40 France 18,00 9,90 3,30 19,50 5,70 28,10 4,80 2,40 6,50 Greece 10,20 3,00 2,80 17,60 5,90 41,70 2,20 7,80 6,50 Hungary 5,30 12,40 2,90 9,70 0,30 40,10 4,00 5,40 4,20 Ireland 13,90 10,00 4,70 25,80 2,20 24,00 6,20 1,60 2,90 Italy 9,00 5,10 2,90 13,70 3,40 36,80 2,10 4,30 6,70 Netherlands 9,50 13,60 3,60 23,40 2,50 22,40 4,20 1,80 3,70 Norway 9,40 4,70 2,70 23,30 9,70 23,00 4,60 1,60 2,70 Poland 6,90 10,20 2,70 19,30 3,00 36,10 5,90 2,00 6,60 Portugal 6,20 3,70 1,10 4,90 14,20 27,00 5,90 4,70 7,90 Romania 6,20 6,30 1,50 11,10 1,00 49,60 3,10 5,30 2,80 Spain 7,10 3,40 3,10 8,60 7,00 29,20 5,70 5,90 7,20 Sweden 9,90 7,80 3,50 24,70 7,50 19,50 3,70 1,40 2,00 Switzerland 13,10 10,10 3,10 23,80 2,30 25,60 2,80 2,40 4,90 UK 17,40 5,70 4,70 20,60 4,30 24,30 4,70 3,40 3,30 USSR 9,30 4,60 2,10 16,60 3,00 43,60 6,40 3,40 2,90 WGermany 11,40 12,50 4,10 18,80 3,40 18,60 5,20 1,50 3,80 Yugoslavia 4,40 5,00 1,20 9,50 0,60 55,90 3,00 5,70 3,20
Řešení v R Nejprve připojíme data do prostředí R: data<-read.table("http://www2.zf.jcu.cz/~rost/data/proteiny.txt", row.names=1,header=true) Po připojení dat do prostředí Rmůžeme hodnoty v datové matici X znázornit prostřednictvím jednoduchých příkazů: library(mass) parcoord(data)
Graf Cervene Bile Vejce Mleko Ryby Obiln Skrob Orech Ovoce
pokračování příkladu Nejprve určíme vzdálenosti mezi jednotlivými zeměmi. K tomu využijeme prostou euklidovskou metriku. vzdalenosti<-dist(data) Následně provedeme hierarchickou shlukovou analýzu prostřednictvím metody průměrné vazby. reseni<-hclust(vzdalenosti,method="average") plot(reseni,sub="",xlab="") Výsledek můžeme znázornit prostřednictvím tzv. dendrogramu.
Výsledný dendrogram získaný metodou průměrné vazby Cluster Dendrogram Height 0 5 10 15 20 25 Romania Bulgaria Yugoslavia Hungary Czechoslovakia Poland Albania USSR Greece Italy EGermany Portugal Spain Finland Norway Denmark Sweden UK Belgium France Austria Ireland Switzerland Netherlands WGermany
Výsledný dendrogram získaný metodou průměrné vazby Pokud by nás zajímal rozklad do čtyř shluků, pak můžeme využití následující funkce: rect.hclust(reseni,k=4) nebo cutree(reseni,k=4) Albania Austria Belgium Bulgaria Czechoslovakia 1 2 2 3 1 Denmark EGermany Finland France Greece 2 4 2 2 1 Hungary Ireland Italy Netherlands Norway 1 2 1 2 2 Poland Portugal Romania Spain Sweden 1 4 3 4 2 Switzerland UK USSR WGermany Yugoslavia 2 2 1 2 3
Dendrogram spolu s rozkladem do čtyř shluků Můžeme znázornit i rozdklad do čtyř shluků rect.hclust() Cluster Dendrogram Height 0 5 10 15 20 25 Romania Bulgaria Yugoslavia Hungary Czechoslovakia Poland Albania USSR Greece Italy EGermany Portugal Spain Finland Norway Denmark Sweden UK Belgium France Austria Ireland Switzerland Netherlands WGermany