340 likes | 426 Views
Souvislost amerického a evropských akciových trhů Za pomoci grafických modelů v SW Mathematica. Vladislav Chýna Setkání uživatelů systému Mathematica 14.9.2004. Řešený problém. Základní pojmy. Algoritmus. Výsledky. Řešený problém. ?. Řešený problém. Základní pojmy.
E N D
Souvislost amerického a evropských akciových trhůZa pomoci grafických modelů v SW Mathematica Vladislav Chýna Setkání uživatelů systému Mathematica 14.9.2004
Řešený problém Základní pojmy Algoritmus Výsledky
Řešený problém Základní pojmy Algoritmus Výsledky
Grafické modely Základní pojmy • Užitečný nástroj statistické analýzy • Umožňuje zkoumat struktury podmíněných nezávislostí v souborech proměnných • V poslední době aplikovány rovněž ve financích • Idea: Reprezentovat data pomocí grafu • Vrcholy = proměnné • Chybějící hrana = proměnné jsou podmíněně nezávislé
Definice z teorie grafů Základní pojmy • Kompletní graf: Graf nebo podgraf je kompletní, pokud je každý jeho vrchol spojen se všemi ostatními vrcholy. • Klika: Klika je množina vrcholů, která indukuje úplný graf, ale která po přidání dalšího vrcholu indukuje graf, který již není kompletní. • Matice sousednosti: Matice sousednostiAG = (aij) grafuG = (V,E) je čtvercová matice definovaná: aij = 1 pokud{vi, vj} E. aij = 0 jinak.
Příklad Základní pojmy 3 4 1 2 Kliky = {1,3,4}, {2,3}
Výpočet varianční matice Základní pojmy Věrohodnostní rovnice pro grafické Gaussovské modely X1,X2,...,XN náhodný výběr z mnohorozměrného normálního rozděleníN(0,K), kde D = K-1 pokud vrcholyiajnejsou spojené v grafu G pokud podmnožinaavrcholůvGtvoří kliku. (Sznamená výběrovou varianční matici.).
Testová statistika vhodnosti grafického modelu Základní pojmy • Deviance Testová statistika pro testování daného grafického modelu proti modelu s úplným grafem. Má 2f rozdělení, kde f je počet chybějících hran
Řešený problém Základní pojmy Algoritmus Výsledky
Algoritmus Algoritmus Načtení programových balíčků
Zdrojový kód Algoritmus • Needs["Statistics`Master`"] • Needs["Statistics`MultiDescriptiveStatistics`"]; • Needs["DiscreteMath`Combinatorica`"]
Algoritmus Algoritmus Načtení programových balíčků Input dat
Programový kód Algoritmus • Soubor *.txt Textový soubor oddělený tabulátory, v prvním řádku musí být uveden počet indexů, v druhém řádku jejich názvy (+ jako první je uveden popisek mesic). Data jsou dále uspořádána do sloupců, z nichž první obsahuje pořadové číslo měsíce (tj. 1,2,...) a další pak kurzy konkrétních indexů. • Načítací algoritmus stream = OpenRead["…………/data.txt"]; n = Read[stream,Number]; nazvy = Read[stream, Table[Word, {n + 1}]]; data = ReadList[stream, Table[Number, {n + 1}]]; Close[stream]
Algoritmus Algoritmus Načtení programových balíčků Input dat Výpočet log. výnosů
Zdrojový kód Algoritmus logvynosy[cena_] := Log[Drop[cena, 1]/Drop[cena, -1]]; data3 = Transpose[Map[logvynosy[#]&, Transpose[data2]]];
Algoritmus Algoritmus Načtení programových balíčků Input dat Výpočet log. výnosů Test předpokladů
Zdrojový kód Algoritmus pvaluenormal[hodnota_] := (1-CDF[NormalDistribution[0,1],hodnota])*2; pvn = pvaluenormal; testznamenekdiferenci[list_] := Module[{d, k, n}, d = DeleteCases[(Drop[list, 1] - Drop[list, -1]) // N, 0.]; k = Length[Select[d, (# > 0) &]]; n = Length[d] + 1; Abs[k - (n - 1)/2]/Sqrt[(n + 1)/12]]; tzd = testznamenekdiferenci; pvaluetestu = Map[pvn[tzd[#]] &, Transpose[data3]]; vysledkytestu = Transpose[{Drop[nazvy, 1], pvaluetestu // N}];
Algoritmus Algoritmus Načtení programových balíčků Input dat Výpočet log. výnosů Test předpokladů Začátek iterativní procedury (s kompletním grafem)
Algoritmus – pokrač. Algoritmus Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticovýalgoritmus
Maticový algoritmus Algoritmus • Probíhá v cyklu po klikáchc • Stop pravidlo testuje, zda Kc,c= Sc,c • K0 = I a = ac1,...,acm, b = V \ {a}, n = n´ mod m
GenerováníKn+1 Algoritmus
Zdrojový kód Algoritmus a = clique[[Mod[iter, Length[clique]] + 1]]; iter = iter + 1; b = Complement[Range[kk], a]; knova[[a, a]] = s[[a, a]]; knova[[a, b]] = s[[a, a]].Inverse[kstara[[a, a]]]. kstara[[a, b]]; knova[[b, a]] = kstara[[b, a]].Inverse[ kstara[[a, a]]].s[[a, a]]; knova[[b, b]] = kstara[[b, b]] - kstara[[b, a]]. Inverse[kstara[[a,a]]]. (IdentityMatrix[Length[a]] - s[[a,a]]. Inverse[kstara[[a, a]]]).s[[a, b]]; kstara = knova;
Nalezení minima Porovnání minima s krit. hodnotou Algoritmus – pokrač. Algoritmus Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticovýalgoritmus Procedura novygraf Menší Vynechání hrany s min. deviancí
Procedura novygraf Algoritmus • Idea Pokud vynecháme jednu hranu z kliky, dostaneme 2 kliky, ve jejichž zápisu chybí vždy jeden vrchol z vynechané hrany • Problém • Graf má 2 nebo více klik • Kliky nemají prázdný průnik {1,2,3} {2,3}, {1,3} {1,3,4} {1,3,4} {1,3,4} 3 4 3 4 1 1 2 2
Zdrojový kód Algoritmus podmnozina[mnozina_, prvek_] := Module[{vp}, vp = Map[( Intersection[prvek, #]) &, mnozina]; MemberQ[vp, prvek]]; neobsazena[m1_, m2_] := Complement[m2, Select[m2, (submnozina[m1, #]) &]]; novygraf[graf_, hrana_] := Module[{klikys, klikybez, bez1, bez2, bezduplicit}, klikys = Select[graf, MemberQ[#, hrana[[1]]] && MemberQ[#, hrana[[2]]] &]; klikybez = Complement[graf, klikys]; bez1 = DeleteCases[klikys, edge[[1]], 2]; bez2 = DeleteCases[klikys, edge[[2]], 2]; bezduplicit = neobsazena[klikybez, Union[bez1, bez2]]; Union[klikybez, bezduplicit]]; clique = {Range[kk]}; vektorvynechhran = Select[Position[maticesousednosti, 0], (#[[1]] > #[[2]]) &]; Map[(clique = novygraf[clique, vektorvynechhran [[#]]]) &, Range[Length[vektorvynechhran]]];
Nalezení minima Porovnání minima s krit. hodnotou Větší Výpisvýsledků Algoritmus – pokrač. Algoritmus Vynechání jedné hrany Reprezentace grafu pomocí klik Výpočet deviance Maticovýalgoritmus Procedura novygraf Menší Vynechání hrany s min. deviancí
Výpis výsledků – vykreslení grafu Algoritmus ShowLabeledGraph[ g = MakeGraph[ Range[kk], (MemberQ[ Position[maticesouslednosti + Transpose[maticesouslednosti], 1], {#1, #2}]) &]];
Řešený problém Základní pojmy Algoritmus Výsledky
Zvolené indexy Výsledky DAX FTSE100 CAC40 DJIA DJTA DJUA
Testy předpokladů Výsledky
Výsledky Výsledky 2 1 2 1 6 3 6 3 4 4 5 5 1992-1995 2000-2003
Výsledky Výsledky 7 2 1 6 3 4 5 2000-2003
Otázky ?!? ?