Mathematica, R a SQL

Jakub Černý
KPMS MFF UK
jcerny@karlin.mff.cuni.cz

ROBUST 19-24.1 .2014, Jetřichovice

Obsah

Úvod

Propojení softwaru Mathematica 9 s programem R (RLink)

R funkce v Mathematice (RSet, REvaluate, RFunction)

Praktický příklad - Shluková analýza

Mathematica 9 a SQL (DatabaseLink)

SQL funkce v Mathematice (SQLSelect, SQLInsert, SQLUpdate, SQLDelete, SQLExecute)

Generování procesů

Obecně a konkrétní difúzní procesy

Úvod

Užitečné informace o systému Mathematica

Mathematica není pouze výpočetní systém, ale i prostředí pro prezentace, publikace, vizualizace, výpočty i vytváření aplikací.

Velkou výhodou Mathematicy, oproti ostatním podobným programům, jsou symbolické výpočty, např. derivace hustoty normálního rozdělení dle parametrů

(∂_α)PDF[NormalDistribution[α,β],x]

(∂_β)PDF[NormalDistribution[α,β],x]

Umožňuje připojení k rozsáhlým veřejným zdrojům dat, např. CountryData - data o zemích, FinancialData - finanční data,... (vyžaduje připojení k Internetu)

CountryData["Czech Republic",#]&/@{"Population","GDP","NaturalGasConsumption","HIVAIDSPopulation"}

Nabízí intuitivní zadávání příkazů a intuitivní vyhledávání dat

Poskytuje přístup k různým datům pomocí WolframAlpha

Zajímavé novinky ve verzi 9

Propojení Mathematicy a externího softwaru

MathLink - propojení např. s C++

LibraryLink - nahrání a kompilování dynamických knihoven (.dll)

JLink - propojení s Javou (vytváření GUI)

NETLink - propojení s .NET

DatabaseLink - propojení s databázemi, např. SQL, MS Access,...

RLink - propojení s programem R

Časové řady a stochastické diferenciální rovnice

ARProcess, MAProcess, ARMAProcess - autoregresní proces a proces klouzavých průměrů

ItoProcess, StratonovichProcess , GeometricBrownianMotionProcess, OrnsteinUhlenbeckProcess, BrownianBridgeProcess  - obecný Itoův a Stratonovichův proces a vybrané konkrétní procesy (geometrický Brownův pohyb, Ornstein - Uhlenbeck proces a Brownův most)

EstimatedProcess - funkce, která odhadne parametry procesu z dat

SliceDistribution - funkce, která určí rozdělení procesu v obecném čase t

Náhodné procesy

QueueingProcess,QueueingNetworkProcess - procesy hromadné obsluhy, Jacksonova síť

StationaryDistribution - funkce, která nalezne stcionární rozdělení, pokud existuje

a mnoho dalších.

Propojení softwaru Mathematica 9 s programem R (RLink)

Propojit program R s Mathematicou lze pouze ve verzi Mathematica 9 a výš. Ke spuštění je zapotřebí balík RLink a nainstalování Rka do Mathematicy.

Needs["RLink`"]

InstallR[]

Funkce InstallR může mít i další argumenty, pokud chceme změnit následující možnosti, tj. např. cesta k JRE, cesta k externím definicím datových typů, apod.

Options[InstallR]

Funkce RSet

Funkcí RSet se přiřadí konstanty, vektory a matice z Mathematicy do Rkové proměnné, která musí být uvedena v uvozovkách. Např.

konstantu

RSet["x",100]

hodnotu napočítanou v Mathematice (vestavěná funkce s číselným výstupem)

val1 = N[Exp[-10]]
	RSet["x1",val1]

hodnotu napočítanou v Mathematice (vlastní funkce s číselným výstupem)

funkce[a_,b_]:=(a+b)/2
	RSet["x2",funkce[1,2.]]

vektor

RSet["x3",Range[10]]

matici

RSet["x4",{{1,0},{0,1}}]

přiřazení hodnoty do vektoru v R

RSet["vektor",{1,2,3,4}]
	RSet["vektor[[1]]",4]

REvaluate["vektor"]

hodnota dimenze

RSet["vektor",Range[12]]

RSet["dim(vektor)",{2,6}]

REvaluate["vektor"]//MatrixForm

Funkce, které mají výsledek v symbolickém tvaru (funkce Exp), nebo hodnoty, které mají symbolický zápis (číslo π) nelze do Rkové proměnné přiřadit

Exp[-1]

RSet["x3",Exp[-1]]

Pi

RSet["x4",Pi]

Funkce REvaluate

Funkce REvaluate vyhodnotí libovolný Rkový kód. Kód je argumentem funkce REvaluate a musí být vždy celý v uvozovkách. Pokud se má vyhodnotit více než jeden příkaz, musí být kód ve složených závorkách. Např.

x=REvaluate["1:100"]

REvaluate["matice <- array(1:9,dim=c(3,3))"]//MatrixForm

REvaluate["{
	vlcisla <- eigen(matice)
	vlcisla
}"][[1]]

Pokud jsou ve funkci REvaluate vytvářeny nové proměnné, REvaluate hodnotu vrací poslední z nich

nahCisla=REvaluate["
{
	a <- 1000
	b <- 0
	c <- 1
vystup <- rnorm(a,b,c)
}"];

Show[Histogram[nahCisla,Automatic,"PDF"],SmoothHistogram[nahCisla,Automatic,"PDF",PlotStyle->Red]]

Samotné uvozovky (kromě začátku a konce) v kódu R být nemůžou, používá se zde zápis stejný jako v TeXu

REvaluate["{
		hist(vystup,prob = T, main = \"Graf č. 1\")
		lines(density(vystup),col = 2)
}"]

Mathematica stáhne libovolnou knihovnu, která je v kódu volána.

REvaluate["{
	library(MASS)
	mvrnorm(10,c(0,0),matrix(c(1,0.5,0.5,1),nrow = 2, ncol = 2))
}"]

REvaluate["{
	library(MASS)
	mvrnorm(10,c(0,0),matrix(c(1,0.5,0.5,1),nrow = 2, ncol = 2))
}"][[1]]

Funkce RFunction

Funkce RFunction slouží k vyhodnocení vlastních Rkových funkcí v Mathematice, pomocí této funkce se také dají předávat hodnoty z programu R do Mathematicy

Clear[nahCisla];
nahCisla=RFunction["function(a,b,c){
	vystup <- runif(a,b,c)
}"]

Histogram[nahCisla[100000,-1,1]]

Clear[nahVektor];
nahVektor = RFunction["function(pocet){
library(MASS)
mvrnorm(pocet,c(0,0),matrix(c(1,0.5,0.5,1),nrow = 2, ncol = 2))
}"]

Histogram3D[nahVektor[10000][[1]],Automatic,"PDF"]

Praktický příklad - Shluková analýza, Kmeans

Dow Jones Industrial Average (DJIA)

Dow Jones Industrial Average (DJIA), označován často jako Dow Jonesův index, je jeden z nejznámějších a nejstarších ukazatelů vývoje na americkém akciovém trhu.

DJIA sleduje akcie 30 amerických společností, které patří mezi největší a nejvíce obchodované na New York Stock Exchange (NYSE). Od roku 1896, kdy byl poprvé publikován se jeho struktura značně změnila. Jediná společnost, která je v indexu od jeho založení, je společnost General Electric

Způsob výpočtu DJIA :

(Subscript[DJIA, t])=(1/(Subscript[D, t]))(∑_(i=1)^30)(Subscript[p, t]^i),

kde (Subscript[D, t]) je dělitel (z angl. divisor) a (Subscript[p, t]^i) je cena akcie v čase t společnosti i.

Společnosti zahrnuté v DJIA :

spolecnostiZKR=FinancialData["^DJI","Members"][[All]];
sektorpodnikani =FinancialData[#,"Sector"]&/@spolecnostiZKR;
(spolecnostiAll=Transpose[{FinancialData[#,"Company"]&/@spolecnostiZKR,spolecnostiZKR,sektorpodnikani}])//TableForm

Shluková analýza - DJIA

Uvažujme, že investor nechce investovat veškerý svůj kapitál do DJIA, ani do každé společnosti zvlášť, ale chce ho rozdělit mezi některé společnosti, které DJIA zahrnuje.

U každé společnosti má investor k dispozici 10 finančních ukazatelů (viz níže) ke dni 31.12.2012.

Na základě těchto ukazatelů chce investor sloučit “nejpodobnější” společnosti do několika shluků a pak se rozhodnout, do kterých shluků a jakým způsobem investovat.

Pokud jsme se ještě nerozhodli, k určení počtu shluků nám pomůže modifikace známého grafu (scree plot)

Využijeme knihovnu RLink, která umožňuje spouštět příkazy i funkce z programu R

Clear[cesta]
cesta = StringJoin[NotebookDirectory[],"MSA_R.csv"];

RSet["cesta",cesta] (*nastavení cesty k datům*)

SetDirectory[NotebookDirectory[]];
ukazatele = {"Close","Change","Volume","Volatility20Day","BookValuePerShare", "ForwardPERatio", "PriceToBookRatio", "MarketCap", "EarningsPerShare"};
datavypocet=Import["MSA.csv"];
datavypocetstand =Standardize[datavypocet]//N;

REvaluate["{
	data <- read.table(cesta, header = T,sep=\",\", row.names=1)
	soucetctvercu <- 0
	library(cluster)
	set.seed(11)
	for (i in 1:15) soucetctvercu[i] <- sum(kmeans(data, centers=i,nstart=30)$withinss)
	plot(1:15, soucetctvercu, type=\"b\", xlab=\"Počet shluků\",
  ylab=\"Soucet ctvercu\")
}"];

(*Propojení s programem R lze provést i pomocí RFunction*)
scree = RFunction["function(shluky){
	data <- read.table(cesta, header = T,sep=\",\", row.names=1)
	soucetctvercu <- 0
	library(cluster)
	set.seed(11)
	for (i in 1:shluky) soucetctvercu[i] <- sum(kmeans(data, centers=i,nstart=30)$withinss)
	plot(1:shluky, soucetctvercu, type=\"b\", xlab=\"Počet shluků\",
  ylab=\"Soucet ctvercu\")
}"];

scree[5]

scree[20]

počet shluků volme rovný 5

pocetshluku = 5;

Rozdělení jednotlivých společností do shluků pomocí funkce ClusteringComponents vypadá následovně :

shluky=ClusteringComponents[datavypocetstand,pocetshluku,1,Method->"KMeans",DistanceFunction->EuclideanDistance,"RandomSeed"->16]
shlukydata = Table[Prepend[datavypocet[[i]],shluky[[i]]],{i,1,Length[datavypocet]}];
Sort[Table[Prepend[spolecnostiAll[[i]],shluky[[i]]],{i,1,Length[spolecnostiAll]}],#1[[1]]<#2[[1]]&]//TableForm

Pro nehierarchické shlukování můžeme také použít funkci FindCluster, pro hierarchické shlukování pak existuje balík Needs[“HierarchicalClustering` “].

Výsledky

Průměrné hodnoty ve shlucích

TableForm[Transpose[Table[Mean[Map[Rest,Select[shlukydata,#[[1]]==i&]]],{i,1,pocetshluku}]],TableHeadings->{Flatten[{ukazatele,"Return"}],Range[pocetshluku]}]//N;

Na grafu prvních dvou hlavních komponent si zobrazíme shluky, do kterých jsme společnosti DJIA rozdělili

pocetshluku;

RSet["pocetshluku",pocetshluku];

ToRForm[{spolecnostiZKR,shluky}]

shlukyR=RObject[shluky,RAttributes["names":>{"AA","AXP","BA","BAC","CAT","CSCO","CVX","DD","DIS","GE","HD","HPQ","IBM","INTC","JNJ","JPM","KO","MCD","MMM","MRK","MSFT","PFE","PG","T","TRV","UNH","UTX","VZ","WMT","XOM"}]];

RSet["shluky",shlukyR];

REvaluate["{
	library(cluster) 
	clusplot(data, shluky, color=TRUE, shade=TRUE, labels=2, lines=0,main = \"Cluster Plot\")
}"];

(*Shluková analýza v Rku*)
REvaluate["{
shlukovanalyza<-kmeans(data,5)
library(cluster)
clusplot(data,shlukovanalyza$cluster,color=TRUE,shade=TRUE,labels=2,lines=0,main = \"Cluster Plot\")}"];

Mathematica 9 a SQL (DatabaseLink)

DatabaseLink zprostředkovává spojení mezi Mathematicou a databázemi

Obsahuje “malou” databázi, pokud uživatel ještě nemá k dispozici jinou

Podporuje mnoho databází (databázových systémů) : MySQL, PostgreSQL, SQL Server, Oracle, Sybase a další

Nabízí uživatelské rozhraní pro generování SQL příkazů  v Mathematice, tzv. Database Explorer

Podpora hromadných (batch) operací při práci s velkými datasety

Pracuje se standardními databázovými typy : čísla, řetězce, binary, datetime,...

DatabaseLink základy

Nejdříve je třeba nastavení připojení pomocí balíku DatabaseLink

Needs["DatabaseLink`"];

Před tím, než si ukážeme Mathematické funkce, si ukážeme uživatelské rozhraní, ve kterém se dají některé příkazy "naklikat" a následně vložit do notebooku.

DatabaseExplorer[]

Funkce OpenSQLConnection  otevře připojení do zadané databáze. Konkrétně se připojíme a budeme pracovat s databází v Mathematice, která se jmenuje demo.

conn=OpenSQLConnection["demo"]

Vytvoření tabulky TestTabulka v databázi

SQLCreateTable[conn,"TestTabulka",{SQLColumn["Cislo","DataTypeName"-> "INTEGER",Nullable->True],SQLColumn["Jmeno","DataTypeName"-> "CHAR"],SQLColumn["Prijem","DataTypeName"-> "FLOAT"]}];

Vložení dat do tabulky - funkce SQLInsert

Clear[pocet,datatabulka];
pocet = 10;
datatabulka = {Range[pocet],Map[StringJoin[{{"Jméno"},ToString[#]}]&,Range[pocet]],RandomReal[{10000,100000},pocet]}//Transpose

SQLInsert[conn,"TestTabulka",{"Cislo","Jmeno","Prijem"},datatabulka]

Výběr dat z tabulky - funkce SQLSelect

SQLSelect[conn,"TestTabulka","ShowColumnHeadings"->True]//TableForm

Přidání dalších dat do tabulky

Clear[cisla,jmena];
cisla = Range[pocet,pocet+10,1];
jmena=Map[StringJoin[{{"Jméno"},ToString[#]}]&,cisla];
prijem = RandomReal[{10000,100000},Length[cisla]];

novadata = Transpose[{cisla,jmena,prijem}];

SQLInsert[conn,"TestTabulka",{"Cislo","Jmeno","Prijem"},novadata];

SQLSelect[conn,"TestTabulka","ShowColumnHeadings"->True]//TableForm

Updatování dat - funkce SQLUpdate

SQLUpdate[conn,"TestTabulka",{"Cislo","Jmeno","Prijem"},{999,"Jméno",0},SQLColumn["Prijem"]>50000];

SQLSelect[conn,"TestTabulka","ShowColumnHeadings"->True]//TableForm

Mazání dat v tabulce

SQLDelete[conn,"TestTabulka",SQLColumn["Cislo" ]==999]

SQLSelect[conn,"TestTabulka","ShowColumnHeadings"->True]//TableForm

Mazání tabulky

SQLDropTable[conn,"TestTabulka"];

Využití SQL skriptů

connpublish=OpenSQLConnection["publisher"];

SQLExecute[connpublish,"Select *  from TITLES","ShowColumnHeadings"->True]//TableForm

SQLExecute[connpublish,"Select PUB_ID, SUM(PRICE) as TotalPrice, COUNT(*) as Cnt  from TITLES group by PUB_ID","ShowColumnHeadings"->True]//TableForm

DatabaseLink - příklad

Otevření externí databáze pomocí JDBC

Needs["DatabaseLink`"];
(*Needs["JLink`"];
AddToClassPath["C:\\Program Files\\Microsoft JDBC Driver 4.0 for SQL Server\\sqljdbc_4.0\\enu\\sqljdbc4.jar"];*)
sqlcon=OpenSQLConnection[JDBC["net.sourceforge.jtds.jdbc.Driver","jdbc:jtds:sqlserver://JAKUB-NTB:1433/AdventureWorks2012;instance=SQLEXPRESS"],"Username"->"sa", "Password"->"qwertz123"]

Načtení časové řady z dostupné databáze AdventureWorks2012 a její zobrazení

Uložení časové řady do proměnné query

Clear[query];
query = SQLExecute[sqlcon,"SELECT EmployeeID,OrderDate,sum(TotalDue) as Total
FROM[AdventureWorks2012].[Purchasing].[PurchaseOrderHeader]
group by EmployeeID,OrderDate
having EmployeeID=254 order by OrderDate"]/.SQLDateTime->Identity;

Jedná se o zisk připadající na jednoho zaměstnance za určité období, podívejme se vývoj v čase

Clear[dataprodej];
dataprodej =ToExpression[Drop[#,1]&/@query];

DateListPlot[dataprodej,Joined->True]

Hledání adresy dle zeměpisné šířky a délky

Uložení zeměpisné šířky a délky do proměnné query1

Clear[query1];
query1 = SQLExecute[sqlcon,"Select distinct top 5000 SpatialLocation.Lat as Lat, SpatialLocation.Long as Long
from Person.Address a INNER JOIN Sales.SalesOrderHeader b
on a.AddressID=b.ShipToAddressID"];

Zobrazení adres na mapě

Graphics[{Red,Point/@Map[GeoGridPosition[GeoPosition[#],"Mercator"][[1]]&,{query1},{2}],Gray,Polygon[Map[GeoGridPosition[GeoPosition[#],"Mercator"][[1]]&,CountryData[#,"Coordinates"],{2}]]&/@CountryData["Countries"]}]

Doplnění jmen měn a aktuálních kurzů

Clear[currID,seznammen,menyajmena,kurzy];
(currID=SQLExecute[sqlcon,"Select CurrencyCode, Name, ModifiedDate from [Sales].[Currency]","ShowColumnHeadings"->True])//TableForm;
seznammen=Intersection[First[Transpose[currID]],FinancialData["Currencies"]];
kurzy = FinancialData[StringJoin[{#,"/CZK"}]]&/@seznammen;

menyajmena=Flatten[SQLSelect[sqlcon,"[Sales].[Currency]",{"CurrencyCode","Name"}, SQLColumn["CurrencyCode"]==#]&/@seznammen,1];

TableForm[Transpose[Join[Transpose[menyajmena],{kurzy},{ConstantArray[DateString[DateString[{"DayNameShort"," ", "Day"," ","MonthNameShort"," ","Year"}]],Length[menyajmena]]}]],TableHeadings->{None,{currID[[1,1]],currID[[1,2]],"CurrencyRate",currID[[1,3]]}}]

Generování procesů

Obecné difúzní procesy

V nové verzi Mathematicy lze také generovat obecně definované procesy.

Itoův proces

Uvažujeme Itoův proces (X(t),t ≥ 0) ve standardním tvaru, tj.   dX(t) = a(t,X(t)) dt + b(t,X(t))dW(t), nebo v integrálním tvaru X(t)== X((Subscript[t, 0]))+(∫_(Subscript[t, 0])^t)a(u,x(u))du+(∫_(Subscript[t, 0])^t)b(u,x(u))dW(u)

Pokud je drift a n-rozměrný vektor a difúzní koeficient b matice o rozměrech n×m, proces je n-rozměrný a je řízen m-rozměrným Brownovým pohybem .

Defaultně je čas (Subscript[t, 0]) nastaven na nulu a kovarinanční matice u Brownova pohybu je jednotková.

Itoův proces - příklad

Jednorozměrný Itoův proces dX(t) = -(X(t)-(1/2)) dt + (Sqrt[1+((X(t))^2)])dW(t), kde X((Subscript[t, 0]))=1 a (W(t), t ≥ 0) je Wienerův proces

Clear[itoproc];
Clear[x];
itoproc=ItoProcess[\[DifferentialD]x[t]==-(x[t]-1/2)\[DifferentialD]t+(Sqrt[1+x[t]^2])\[DifferentialD]W[t],x[t],{x,1},t,W\[Distributed]WienerProcess[]];

5 simulací procesu od 0 do 5 s krokem 0.01

pocetsimulaci = 5;
Table[RandomFunction[itoproc,{0.,5.,0.01}],{i,1,5}];

ListLinePlot[%]

Výpočet střední hodnoty procesu v čase t

Mean[itoproc[t]]

Výpočet autokovarianční funkce procesu

CovarianceFunction[itoproc,s,t]

Plot3D[%,{s,0,5},{t,0,5},ColorFunction->"Rainbow"]

Stratonovitchův proces

Uvažujeme Stratonovichův proces (X(t),t ≥ 0) ve standardním tvaru, tj.   dX(t) = a(t,X(t)) dt + b(t,X(t))∘dW(t),

Pokud je drift a n-rozměrný vektor a difúzní koeficient b matice o rozměrech n×m, proces je n-rozměrný a je řízen m-rozměrným Brownovým pohybem .

Defaultně je čas (Subscript[t, 0]) nastaven na nulu a kovarinanční matice u Brownova pohybu je jednotková.

Stratonovichův proces - příklad

Pro porovnání nastavíme koeficienty Stratonovitchova procesu stejně, jako u Itoova.

Clear[stratproc];
stratproc=StratonovichProcess[\[DifferentialD]x[t]==-(x[t]-1/2)\[DifferentialD]t+(Sqrt[1+x[t]^2])\[DifferentialD]W[t],x[t],{x,1},t,W\[Distributed]WienerProcess[]]

5 simulací procesu od 0 do 5 s krokem 0.01

pocetsimulaci = 5;
Table[RandomFunction[stratproc,{0.,5.,0.01}],{i,1,pocetsimulaci}];
ListLinePlot[%]

Výpočet střední hodnoty procesu v čase t

Mean[stratproc[t]]

Výpočet a zobrazení autokovarianční funkce procesu

CovarianceFunction[stratproc,s,t]

Plot3D[%,{s,0,5},{t,0,5},ColorFunction->"Rainbow"]

Konkrétní difúzní procesy

Zběžně si ukážeme i některé konkrétní procesy.

Ornstein-Uhlenbeck proces

Jedná se o Ornstein-Uhlenbeck proces s konstantními koeficienty (ve financích známý jako Vašíčkův model pro vývoj úrokových sazeb), tj. (X(t),t ≥ 0) je Ornstein–Uhlenbeck proces, pokud se řídí SDR ve tvaru dX(t)==θ (μ-X(t))dt +σ dW(t), kde Wje Wienerův proces, μ je dlouhodobý (návratový průměr), θ je rychlost návratu a σ je difúzní koeficient.

Clear[oup];
oup=Table[RandomFunction[OrnsteinUhlenbeckProcess[0,.2,.4,0.01],{0,5,.01}],{i,1,pocetsimulaci}];

ListLinePlot[%]

Výpočet střední hodnoty procesu v čase t se startovní hodnotou X((Subscript[t, 0])) = (Subscript[X, 0])

Mean[OrnsteinUhlenbeckProcess[μ,σ,θ,(Subscript[X, 0])][t]]

Výpočet rozptylu procesu v čase t se startovní hodnotou X((Subscript[t, 0])) = (Subscript[X, 0])

Variance[OrnsteinUhlenbeckProcess[μ,σ,θ,(Subscript[x, 0])][t]]

Určení rozdělení tohoto procesu v čase t se startovní hodnotou X((Subscript[t, 0])) = (Subscript[X, 0])

SliceDistribution[OrnsteinUhlenbeckProcess[μ,σ,θ,(Subscript[x, 0])],t]

Brownův most

V případě, že funkce nemá žádné argumenty, jedná se o klasický Brownův most definovaný jako, B(t)==W(t)-tW(1), kde (W(t), t ≥ 0), je Wienerův proces.

Clear[bbp];
bbp=Table[RandomFunction[BrownianBridgeProcess[],{0,1,0.001}],{i,1,pocetsimulaci}];
ListLinePlot[%]

Výpočet střední hodnoty procesu v čase t se startovní hodnotou X((Subscript[t, 0])) = (Subscript[X, 0])

Mean[BrownianBridgeProcess[][t]]

Výpočet rozptylu procesu v čase t se startovní hodnotou X((Subscript[t, 0])) = (Subscript[X, 0])

Variance[BrownianBridgeProcess[][t]]

CovarianceFunction[BrownianBridgeProcess[],s,t]

Pokud přidáme argumenty, získáme tím obecnější tvar Brownova mostu, tj. Brownův most s volatilitou σ na intervalu ((Subscript[t, 1]),(Subscript[t, 2])), kde B((Subscript[t, 1]))=a a B((Subscript[t, 1]))=b, potom charakterisky vypadají následovně

Mean[BrownianBridgeProcess[σ,{t1,a},{t2,b}][t]]

Variance[BrownianBridgeProcess[σ,{t1,a},{t2,b}][t]]

SliceDistribution[BrownianBridgeProcess[σ,{t1,a},{t2,b}],t]

Zdroje

DatabaseLink - DatabaseLink User Guide

RLink - RLink User Guide

http://coldlogics.wordpress.com

http://www.wolfram.com/

Děkuji za pozornost.

Offline data

spolecnostiZKR={"AA","AXP","BA","BAC","CAT","CSCO","CVX","DD","DIS","GE","HD","HPQ","IBM","INTC","JNJ","JPM","KO","MCD","MMM","MRK","MSFT","PFE","PG","T","TRV","UNH","UTX","VZ","WMT","XOM"};
spolecnosti={"Alcoa Inc.","American Express Company","Boeing Company","Bank of America Corp","Caterpillar Inc.","Cisco Systems, Inc.","Chevron Corporation","E.I. du Pont de Nemours & Company","Walt Disney Company","General Electric Company","Home Depot, Inc.","Hewlett-Packard Company","International Business Machines Corp","Intel Corporation","Johnson & Johnson","J.P. Morgan Chase & Co.","Coca-Cola Company","McDonald's Corporation","3M Company","Merck & Co Inc","Microsoft Corporation","Pfizer Inc.","Procter & Gamble Company","AT&T, Inc.","The Travelers Companies, Inc.","UnitedHealth Group, Inc.","United Technologies","Verizon Communications Inc.","Wal-Mart Stores, Inc.","ExxonMobil Corporation"};

sektorpodnikani={"Aluminum","CreditServices","Aerospace/Defense-MajorDiversified","Regional-Mid-AtlanticBanks","FarmAndConstructionMachinery","NetworkingAndCommunicationDevices","MajorIntegratedOilAndGas","Chemicals-MajorDiversified","Entertainment-Diversified","Conglomerates","HomeImprovementStores","DiversifiedComputerSystems","DiversifiedComputerSystems","Semiconductor-BroadLine","DrugManufacturers-Major","MoneyCenterBanks","Beverages-SoftDrinks","Restaurants","Conglomerates","DrugManufacturers-Major","ApplicationSoftware","DrugManufacturers-Major","PersonalProducts","TelecomServices-Domestic","PropertyAndCasualtyInsurance","HealthCarePlans","Conglomerates","TelecomServices-Domestic","Discount,VarietyStores","MajorIntegratedOilAndGas"};

spolecnostiAll={{"Alcoa Inc.","AA","Aluminum"},{"American Express Company","AXP","CreditServices"},{"Boeing Company","BA","Aerospace/Defense-MajorDiversified"},{"Bank of America Corp","BAC","Regional-Mid-AtlanticBanks"},{"Caterpillar Inc.","CAT","FarmAndConstructionMachinery"},{"Cisco Systems, Inc.","CSCO","NetworkingAndCommunicationDevices"},{"Chevron Corporation","CVX","MajorIntegratedOilAndGas"},{"E.I. du Pont de Nemours & Company","DD","Chemicals-MajorDiversified"},{"Walt Disney Company","DIS","Entertainment-Diversified"},{"General Electric Company","GE","Conglomerates"},{"Home Depot, Inc.","HD","HomeImprovementStores"},{"Hewlett-Packard Company","HPQ","DiversifiedComputerSystems"},{"International Business Machines Corp","IBM","DiversifiedComputerSystems"},{"Intel Corporation","INTC","Semiconductor-BroadLine"},{"Johnson & Johnson","JNJ","DrugManufacturers-Major"},{"J.P. Morgan Chase & Co.","JPM","MoneyCenterBanks"},{"Coca-Cola Company","KO","Beverages-SoftDrinks"},{"McDonald's Corporation","MCD","Restaurants"},{"3M Company","MMM","Conglomerates"},{"Merck & Co Inc","MRK","DrugManufacturers-Major"},{"Microsoft Corporation","MSFT","ApplicationSoftware"},{"Pfizer Inc.","PFE","DrugManufacturers-Major"},{"Procter & Gamble Company","PG","PersonalProducts"},{"AT&T, Inc.","T","TelecomServices-Domestic"},{"The Travelers Companies, Inc.","TRV","PropertyAndCasualtyInsurance"},{"UnitedHealth Group, Inc.","UNH","HealthCarePlans"},{"United Technologies","UTX","Conglomerates"},{"Verizon Communications Inc.","VZ","TelecomServices-Domestic"},{"Wal-Mart Stores, Inc.","WMT","Discount,VarietyStores"},{"ExxonMobil Corporation","XOM","MajorIntegratedOilAndGas"}};