學習 蒙特卡羅方法 必須預先學習哪些知識?


蒙特卡洛名字高大上啊,本質就是用期望(或者積分,一個意思)求不出來然後用平均數來估計(可以理解為大數定律的一個應用了)。

因為要做實現,對某一個編程語言熟悉下總是好的,不過其實也可以通過學monte carlo來當編程語言入門了,貌似MATLAB用的多些。

然後就是看你要用monte carlo做什麼了,物理還是金融工程一類的。不管怎麼樣,你得先知道你要算的是啥,再學怎麼算吧。

以亞式期權定價為例,路徑是這樣的:

啥是期權-&>啥是亞式期權-&>亞式期權在幾何布朗運動假設下怎麼定價,能寫出SDE-&>變成了一個求解期望的問題-&>期望沒法直接用手解出來,需要數值演算法(現在問題來了)-&>monte carlo是一種演算法-&>知道如何生成一條幾何布朗運動路徑-&>寫成程序,並且循環模擬N次,然後求平均數-&>解出來了一個數值解-&>monte carlo當然沒這麼簡單,方差縮減技術,路徑模擬如何降低誤差-&>學會若干種Monte Carlo優化方法-&>實現這些方法,比較下最粗暴的monte carlo,發現效率提升很多-&>自己覺得自己學會monte carlo了-&>去知乎回答問題

結論:概率期望方差一類的就算預先知識了,最重要的是學科背景知識,monte carlo只是計算方法。粗暴的monte carlo過後,那些方差縮減技術也就是期望 方差一類的推導還有隨機數的生成。

PS:期望是期望,平均數是平均數,期望是更廣的概念。很多人學monte carlo時候對一切理解為「平均數」,沒有期望的概念,比如 Integrate[f(x)g(x), {x, 0, 3}],很多人就是認為x取0到3之間的隨機數,然後求f(X)g(X)的平均數,這沒錯,但是也可以理解為取密度函數為f(x)的隨機數X,求g(x)的平均數。


如果做簡單的Monte Carlo模擬,推薦一款鑲嵌在Excel里的軟體crystal ball,如果要做一些複雜的,就要自己編程了,stata,Excel,matlab都行,就是隨機數的生成挺複雜的,常用的隨機數生成方法都可用上述軟體實現


可以先看下 George Casela 的Monte Carlo Statistical Method 這本書對MC的方法有非常詳細的介紹,然後得會一個軟體例如R或者Matlab。


精通開關機。

精通一門統計語言,excel也可以。

求期望,求積分,模擬系統。

後面有variance reduction技術。

然後是random generator。


什麼預備的都不需要,這個方法本身就是基礎啊


不懂


推薦閱讀:

蒙特卡洛方法中,有哪些演算法或者技巧讓你耳目一新,提高智商?
量子蒙特卡洛方法是什麼?
布豐用投針實驗估計了 π 值,那麼用什麼簡單方法可以估計自然對數的底數 e 的值?
如何用一個1-8隨機生成器製作一個1-7隨機數生成器?

TAG:統計 | MonteCarlo | 人工智慧演算法 | 隨機過程 | 蒙特卡洛方法 |