Juliaでブラウン運動①
Pythonより速く、文法的にも数学に近く書きやすい言語として人気急上昇中のJuliaの練習がてらにブラウン運動を発生させてみた。julia 1.0.1を使用している。
Getting Started · Distributions.jl
正規分布を元にBrown運動を発生させようと思ったのでこのパッケージを使用。
まずはパッケージのinstallから。
julia> Pkg.add("Distributions") Resolving package versions... Installed QuadGK ─────────── v2.0.2 Installed PDMats ─────────── v0.9.5 Installed Rmath ──────────── v0.5.0 Installed StatsFuns ──────── v0.7.0 Installed Compat ─────────── v1.4.0 Installed BinaryProvider ─── v0.5.3 Installed JSON ───────────── v0.20.0 Installed Distributions ──── v0.16.4 Installed Arpack ─────────── v0.3.0 Installed SpecialFunctions ─ v0.7.2 …
上記のように表示される。また、Compatも同様に
julia> Pkg.add("Compat") Resolving package versions... Updating `C:\Users\***\.julia\environments\v1.0\Project.toml` [34da2185] + Compat v1.4.0 Updating `C:\Users\***\.julia\environments\v1.0\Manifest.toml` [no changes]
とインストールする。さらにusingを用いて必要なパッケージを宣言しよう。
julia> using Compat, Random, Distributions [ Info: Recompiling stale cache file C:\Users\***\.julia\compiled\v1.0\Compat\GSFWK.ji for Compat [34da2185-b29b-5c13-b0c7-acf172513d20] [ Info: Precompiling Distributions [31c24e10-a181-5473-b8eb-7969acd0382f]
ではまず簡単な一次元ブラウン運動から考えてみよう。t=0にx=0にいる粒子がT秒間一次元ブラウン運動を続けた際のt=Tにおける位置はN(0,T)に従うとされる。そのような乱数を1000個生成してみよう。
Random.seed!(123) # 乱数のシードを与える T=100 #時間 d = Normal(0,sqrt(T)) #正規分布 N(0,T)、引数として与えるのはσなのでsqrtによって平方根をとる x = rand(d,1000) #分布dに従う乱数を1000個生成し配列xとする
さてここで生成されたデータをGadFlyを用いてヒストグラムにしてみてみよう。
using DataFrames,Gadfly df = DataFrame( x = x ) #先ほどのxをデータフレームに入れる plot(df, x="x", Geom.histogram(bincount=50)) #プロット
省略するがDataFramesやGadflyもinstallが必要ならPkg.addを使ってinstallしよう。 さてこれで以下のような図が表示されれば成功である。
もちろん乱数を使用しているので厳密で同じである必要はないがおおまかに正規分布になる(当たり前)。
もうちょっと高度な内容は後日書くことにする
確率解析②エクセンダール二章 数学的準備その一
実験の箸休めに少し読み進める。
2. Some Mathematical Preliminaries
2.1 Probability Spaces, Random Variables and Stochastic Processes
さて、ここから確率を扱う上で数学の基礎的な部分を順次定義していく。まず何といっても重要なのが測度である。現代的な確率論はルベーグ積分などでおなじみの測度論を基盤として発展してきた。
定義 2.1.1 (可測空間)
Ωを集合とし、その部分集合族をℱとする。ℱが以下の条件を満たすとき、ℱをσ加法族という。
(1) Φ∈ℱ
(2) F∈ℱ⇒Fc∈ℱ (FcはΩ\F)
(3) A1, A2, ... ∈ ℱ⇒A=∪{i=1から∞}Ai ∈ ℱ
ここで(Ω,ℱ)の組み合わせを可測空間と呼ぶ。
ℱは測ることのできる集合の集合。続いて確率測度を定義している。Pが(Ω,ℱ)の確率測度であるとはPがℱから[0,1]への写像で以下の条件を満たすことである。
(1) P(Φ)=0, P(Ω)=1
(2) A1, A2, ... ∈ ℱでi≠j⇒Ai∩Aj=Φが成立しているとし、A=∪{i=1から∞}Aiとする。
P(A)=Σ{i=1から∞}P(Ai)
歴史的には面積や長さというものの一般化が測度であるが、確率測度は生起する事象の"重さ"(確率)を与える測度である。P(Ω)=1という条件は除けば普通の測度になる。全体の重さが1になるように規格化された測度というべきか。最初にこの定義を見たときは抽象性が高く、実際にこれによって確率を記述できるのかなかなか不思議に思った。
この(Ω,ℱ,P)の三つのセットを確率空間と呼ぶ。完備確率空間とは任意のΩの部分集合で以下の等式を満たすような集合はすべてℱに含まれる、ということを意味する。
P*(G)=inf {P(F); F∈ℱ,G∈F} = 0
任意の確率空間は適切にℱに集合を足していけば完備確率空間にできる。
ℱが測ることのできる集合の集合ということをℱに属することをℱ-可測などという。ℱの元Fを事象といい、P(F)は事象Fが起こる確率、ということができる。またΩを標本空間と呼ぶ。P(F)=1をalmost surelyといってほとんど確実に起こるという。このalmostなんとかというのは測度論的な概念で、測度が0になるような集合の差は無視するというような考え方である。
この後、詳細な説明は割愛するが、どんな部分集合族でもそれを含む最小のσ加法族が構成できることや、開集合系からそのように生成されたσ加法族をボレルσ加法族でその元をボレル集合ということが書いてある。さらにY:Ω→R^nについてUが任意のR^nのボレル集合で、Y^(-1) (U)∈ℱならばYはℱ-可測である。逆にX:Ω→R^nからXを可測にするようなσ加法族を構成することも可能でそのようなσ加法族をℋXと表記する。このあたりは測度論の一般論。
そしてX,Y:Ω→R^nのとき、YがℋX可測であるための必要条件条件を述べたDoop-Dynkinの補題が紹介される。
さて、(Ω,ℱ,P)を確率空間としよう。これから散々出てくる三人組だ。ℱ可測なX:Ω→R^nを確率変数と呼称する。確率変数とはΩに属する標本を実数(多次元の場合もある)に移すものなのだ。そして、このXにより、R^n上に確率測度を定義することができる。
μX(B)=P(X^(-1) (B))
書いていないのdがBは任意のボレル集合だろう。この測度をXの確率分布という。XがR^nのどのあたりにどの確率で値をとるかを示すものである。確率変数や確率分布などの統計学で"何となく"扱ってきた概念をこう厳密に定義するのかと、数学には驚かされるばかりである。さらにXの期待値も∫Ω |X(ω)| dP(ω)<∞ならば
E[X]=∫Ω X(ω) dP(ω)=∫R^n x dμX(x)
と定義している。統計学などではほとんど最右辺の形式で確率的な計算を行っているが基礎としてあるのは真ん中の形式だ。
加えてボレル可測なf:R^n→Rに関しても∫Ω |f(X(ω))| dP(ω)<∞なら同じようにE[f(X)]を定義できる。
また独立の定義もしている。A,B∈ℱが独立とはP(A∩B)=P(A)P(B)が成り立つことであるなど。ここからは高校数学でもやるような内容ではないだろうか。二つの確率変数X,Y:Ω→Rが独立とはE[XY]=E[X]E[Y] (E[|X|]<∞,E[|Y|]<∞であるとする)が成り立つときである。
さらにここで確率解析では非常に重要な確率過程の定義もしている。
定義 2.1.2(確率過程)
確率過程とはパラメータ空間Tの各点に(Ω,ℱ,P)上で定義されたR^nへの確率変数を対応させたものである。次のように表す:{Xt}t∈T
Tは通常[0,∞)であることが多い。
確率過程はt∈Tとω∈Ωの関数と考えることができる。ωを固定してtの関数と考えたとき、Xtの道(path)と呼称する。
また、ここでω:T→R^nをω(t) = Xt(ω)と定義することができる。さらにσ加法族を以下のように表せる集合族から生成できる。
{ω; ω(t1)∈F1,...,ω(tk)∈Fk}, Fi (i=1,2,...,k)はR^nのボレル集合
これはℱに含まれる。また有限次元分布についての話も載っている。
最後にコルモゴロフの拡張定理の説明をして終わろう。
定理 2.1.3 (コルモゴロフの拡張定理)
任意のt1,t2,...,tk∈T、k∈Nに対しR^nk上の確率測度ν_(t1,t2,...,tk)が以下の条件を満たすとする。
(1) 任意の置換σに対しν_(σ(t1),σ(t2),...,σ(tk)) (F1×F2×...×Fk) = ν_(t1,t2,...,tk) (Fσ^(-1)(1)×Fσ^(-1)(2)×...×Fσ^(-1)(k))
(2) 任意の正の整数m∈Nに対してν_(t1,t2,...,tk) (F1×F2×...×Fk) = ν_(t1,t2,...,tk,t(k+1),...,t(k+m)) (F1×F2...×Fk×R^n×...×R^n)
このとき、確率空間(Ω,ℱ,P)とR^n上の確率過程Xtが存在し、
ν_(t1,t2,...,tk) (F1×F2×...×Fk) = P[Xt1∈F1,Xt2∈F2,...,Xtk∈Fk]
添字が多くてわかりにくいが、添字を入れ替えたりする操作に不変で、R^nの重みを1とするような任意の正整数個のR^nのボレル集合を測る確率測度から対応するR^n上の確率過程を構成できる、ということである。この定理は非常に重要でブラウン運動の構成に用いられる。
確率解析① エクセンダール本introduction
確率解析はもともと興味のある分野だったが、エクセンダール本を読んだっきり長らくやっていない。実家に本を置いてきてしまっているので、どうせならネットに落ちている古い英語版で勉強していこうという感じの記事。
以下のpdfを使用。
http://th.if.uj.edu.pl/~gudowska/dydaktyka/Oksendal.pdf
どうやら第五版のようだ。
1. Introductionから読んでいく。
1.1 Stochastic Analogs of Classical Differential Equations
多くの本と同様、このエクセンダール本は問題の提示からスタートする。人口の増加モデルや電子回路の物理学的挙動などを支配する決定論的な微分方程式には現実的にはノイズという確率論的なものによって左右されうる部分が入り込む余地がある。このノイズを数学的に取り扱うにはどうしたらよいのか。その問題を解決していくのが確率解析であり、確率微分方程式(stochastic differential equation)だ。
1.2 Filtering Problems
Filterのお話。s≤tとしてZ(s) = Q(s) + noiseとなるQの観測量Zがあるとき、Z(s)の情報からQ(t)を推定するためにはどうすればよいかという問題。Noise cancellingはあらゆる実証科学にとって重要な問題である。Kalman-Bucy filterの名前が紹介される。
1.3 Stochastic Approach to Deterministic Boundary Value Problems
決定論的な境界値問題を確率論的に解こうという試み。調和解析で有名なDirichletの境界値問題の解を確率論的に与えた角谷の例をはじめとし、ラプラシアンに限らず半楕円型作用素については確率論的なアプローチによって対応するDirichletの境界値問題の解を与えることが可能であると論じている。
1.4 Optimal Stopping
最適停止問題。確率微分方程式で挙動が記述されている確率過程が最大になるような時刻τをt≤τであるtまでの情報でどう予測すればよいか。具体的な例としては物価がランダムに変動するとき物を売る最適なタイミングの予測で、ファイナンス上重要な問題であることは確かだ。なんと最適停止問題は境界値問題の解によって解くことができる。また変分不等式によっても解くことができる。
1.5 Stochastic Control
最適ポートフォリオ問題。リスク投資と安全投資、この二つをどのような比率で行っていけばよいか。投資は決定論で到底扱いうるものではなく、数理的には確率論が絶大な威力をふるう。
1.6 Mathematical Finance
Black Scholes方程式に代表される数理ファイナンスの話。Scholesがこの結果によってノーベル経済学賞を受賞したことはこの分野においてあまりにも有名である(そして破産してしまったことも)。
2~4章で基礎を固めてから5章以降でこれらの問題を解決していこう!というのがこの本のスタンスである。数年ぶりに読んだがとても読み手に親切な設計であり、英語であるにも関わらずスラスラと読める。
群論入門① 群の定義
ブログを始めたはいいけど書けるようなすごいネタを持っているわけではないので、日々の学びをメモ代わりに投稿しようと思った。
抽象代数の復習として雪江先生の「代数学1 群論入門」の学習をスタート。
Xが集合のとき写像Φ:X×X→XをX上の演算とし、a,b∈Xに対し、Φ(a,b)=abと書く。
定義 1.1.1 (群)
Gを空でない集合とし、G上の演算が定義され以下の性質を満たすとき、Gを群(group)と呼ぶ。
(1) ∀a,∀b,∀c∈G, (ab)c=a(bc) (結合法則)
(2) ∃e∈G s.t. ∀a∈G, ae=ea=a, このようなeのことを単位元と呼ぶ。
(3) ∀a∈G, ∃b∈G s.t. ab=ba=e, このようなbをa^(-1)と表記しaの逆元と呼ぶ。
(1)のみを満たす集合を半群、(1),(2)を満たす集合をモノイドという。
群に関して上記の定義の演算を積といい、集合Gが群になるとき、Gに群の構造が入るという。
ここでさらに可換則: ∀a,∀b∈G, ab=ba が成り立つとき、Gをアーベル群、可換群などといい、演算を慣習上+と表すことが多い。この演算を積ではなく和と呼ぶこともある。この場合、単位元を0Gと書くこともある。
定義 1.1.2 (位数)
Gが群であるとき|G|を位数と呼ぶ。位数が有限な群を有限群、無限である群を無限群と呼ぶ。
以上が群の基本的な定義であり、群の例としてはC,R,Q,Zが和に関してアーベル群であり、C-{0},R-{0},Q-{0}が積に関してアーベル群である。実数成分を持つn×n正則行列全体の集合なども積に関して群であるなど...etc
これを受けて以下のいくつかの命題が簡単に導かれる。
命題 1.1.3
群Gに対し、a,b,c∈Gとする。すると以下の命題が成立。
(1) ab=ac⇒b=c (簡約法則)
(2) ab=c⇒a=cb^(-1), b=a^(-1) c
証明の方針
(1)はa^(-1)を左から両辺にかけよう、(2)はb^(-1)を両辺に右からかけたり、a^(-1)を両辺に左からかけたりする。
抽象代数になってもこの"移項"操作がやはり計算の基本であることがわかる。
命題 1.1.4
Gを群とする。
(1) Gの単位元は一意に定まる。
(2) a∈Gの逆元a^(-1)は一意に定まる。
(3) ∀a,∀b∈G, (ab)^(-1) = b^(-1) a^(-1)
(4) ∀a∈G, (a^(-1))^(-1)=e
証明
(1) eとe'をGの単位元とする。ee'=e,ee'=e'が成り立ち、e=e'
(2) bとcをaの逆元とする。ab=eが成り立ち、この両辺に左からcをかけると
cab=cだがca=eよりb=c
(3) b^(-1) a^(-1) ab = e
(4) (a^(-1))a = e
定義 1.1.5 (置換群)
集合Xに関しその全単射を置換と呼び、合成を積とするとXの置換全体の集合は群となる。このような群を置換群と呼ぶ。Xn = {1,2,...,n}のとき、Xnの置換をn次の置換と呼び、n次の置換全体が成す群をSnと表記し、n次対称群と呼ぶ。
またもう一つ重要な群として以下の一般線形群がある。
定義 1.1.6 (一般線形群)
Rを成分とするn×nの正則行列全体の集合は行列の積に関して群をなし、GLn(R)と書く。Cを成分とするn×nの正則行列全体についても同様で、GLn(C)と書く。これらを一般線形群と呼ぶ。
これにより群にまつわる基本的な用語が定義された。
書いてみた感想:分量としてはそこまで多くないはずだが、結構時間がかかる。