基于Matlab語(yǔ)言的Monte Carlo入門教程_第1頁(yè)
基于Matlab語(yǔ)言的Monte Carlo入門教程_第2頁(yè)
基于Matlab語(yǔ)言的Monte Carlo入門教程_第3頁(yè)
基于Matlab語(yǔ)言的Monte Carlo入門教程_第4頁(yè)
基于Matlab語(yǔ)言的Monte Carlo入門教程_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

前言與說(shuō)明—、MonteCarlo方法是一門簡(jiǎn)單而復(fù)雜的學(xué)問(wèn)MonteCarlo方法往小的方面說(shuō)很簡(jiǎn)單,就是生成一堆隨機(jī)數(shù),然后以某函數(shù)規(guī)則計(jì)算出一堆數(shù)值,最后求這些數(shù)值的平均值就得到了結(jié)果;往大的方面說(shuō)卻很復(fù)雜,要將蒙特卡洛做好需要考慮的問(wèn)題很多,例如:需要解決的問(wèn)題是否收斂倘若不收斂,MonteCarlo方法就不能用,不然計(jì)算出來(lái)的結(jié)果有何意義,只有老天才知道;所選用的具體方法收斂速度如何一一雖然幾乎所有MonteCarlo收斂階數(shù)為1/2,但不同的方法收斂階數(shù)前面的系數(shù)不同;所得解的誤差是多少——MonteCarlo方法從來(lái)得不到精確值,而是一個(gè)近似的隨機(jī)變量,因此,任何時(shí)候,報(bào)告MonteCarlo解時(shí),需要同時(shí)報(bào)告該解的方差;如何選擇具體算法,以加快速度MonteCarlo模擬需要較長(zhǎng)時(shí)間,所以速度很重要。尤其是你使用MonteCarlo方法實(shí)時(shí)計(jì)算金融產(chǎn)品價(jià)格時(shí),時(shí)間就是金錢。加快MonteCarlo速度有很多或大或小的技巧,而且這些技巧還要依據(jù)不同問(wèn)題而定。偽隨機(jī)數(shù)問(wèn)題一一計(jì)算機(jī)生成的隨機(jī)數(shù)都是偽隨機(jī)數(shù),很多MonteCarlo書(shū)中都大書(shū)特書(shū)偽隨機(jī)數(shù)的危害以及如何生成盡可能“真”的偽隨機(jī)數(shù)。有此告誡在,我們自然不能對(duì)偽隨機(jī)數(shù)問(wèn)題視而不見(jiàn),但是我們是否就要因這一問(wèn)題惶惶不可終日呢?模型與現(xiàn)實(shí)——模型是我們的理想,但是現(xiàn)實(shí)中的市場(chǎng)卻是殘酷的。如果有人僅僅拿著書(shū)本就沖進(jìn)市場(chǎng),那他必然還要交高昂的學(xué)費(fèi),最終鮮血淋漓地出來(lái)。同理,MonteCarlo方法(以及其他幾乎所有方法),任何時(shí)候都只能給我們作參考。然而,我們卻可以以科學(xué)的態(tài)度和方法使用MonteCarlo方法,以使其結(jié)果更加貼近現(xiàn)實(shí),參考價(jià)值更大。二、本課程將解決的問(wèn)題作為一門針對(duì)非學(xué)術(shù)人士的入門性質(zhì)的課程,本課程最注重的是基礎(chǔ)的應(yīng)用性知識(shí)。在接下來(lái),我會(huì)詳細(xì)講述MonteCarlo方法本身,且為了確保大家看懂,我會(huì)精選一些例子,從這些例子的數(shù)學(xué)推導(dǎo),到算法描述,到程序設(shè)計(jì),到誤差分析,這些基礎(chǔ)過(guò)程都將涉及。尤其考慮到我見(jiàn)過(guò)的不少人(尤其是論壇上的不少網(wǎng)友),編程基礎(chǔ)比較薄弱,所以在講解程序時(shí)我會(huì)逐句分析,至少確保你能看懂這個(gè)程序的每個(gè)步驟。另一方面,入門課程還肩負(fù)為大家未來(lái)學(xué)習(xí)奠定基礎(chǔ)的重要使命,故課程中要覆蓋各個(gè)方面的內(nèi)容,例如上一節(jié)所提到的都或多或少有所覆蓋。但是,正是因?yàn)檫@是一個(gè)入門性質(zhì)的課程,很多的內(nèi)容無(wú)法涉及,同時(shí)很多有所涉及的內(nèi)容也無(wú)法充分展開(kāi)。具體在下文中涉及到相關(guān)內(nèi)容時(shí)我會(huì)盡量提供進(jìn)一步學(xué)習(xí)的方向、方法等延伸性問(wèn)題。這里值得一提的是上文所提及的模型與現(xiàn)實(shí)的問(wèn)題。本課程中的例子基本都是理論化的例子,這樣的例子好處在于它簡(jiǎn)化了很多復(fù)雜的現(xiàn)實(shí)狀況,對(duì)于初學(xué)者而言容易上手,也便于教授MonteCarlo方法如何使用,同時(shí)它還是解決現(xiàn)實(shí)問(wèn)題的基礎(chǔ)。所以,要特別注意,我在課程中講的那些金融工具定價(jià)的例子都是理論化的例子,千萬(wàn)不要以為學(xué)會(huì)那些之后就已經(jīng)學(xué)會(huì)了現(xiàn)實(shí)中的金融產(chǎn)品的定價(jià),套用一句廣告詞:“才剛剛開(kāi)始呢”。三、章節(jié)設(shè)置常見(jiàn)的MonteCarlo書(shū)籍包含如下內(nèi)容:隨機(jī)數(shù)的生成、特定分布抽樣、優(yōu)化(降低方差)技巧、隨機(jī)過(guò)程模擬、MonteCarlo方法實(shí)際應(yīng)用、以及擴(kuò)展(主要是Quasi-MonteCarlo,即擬蒙特卡洛方法)本教程覆蓋隨機(jī)數(shù)生成、特定抽樣分布、隨機(jī)過(guò)程模擬和應(yīng)用實(shí)例。但和那些書(shū)籍不同在于如下這些方面:不詳細(xì)講偽隨機(jī)數(shù)問(wèn)題——我們用Matlab內(nèi)附帶的隨機(jī)數(shù)生成器,將偽隨機(jī)數(shù)問(wèn)題留給Mathworks的專家吧不講降低方差技巧一一降低方差技術(shù)講的是怎樣更快地作MonteCarlo,而這是入門教程,目的在教會(huì)你怎樣做MonteCarlo,如果你還不會(huì)做就去學(xué)怎樣可以做得更快那沒(méi)有意義。所以,先學(xué)會(huì)基本使用方法最重要,優(yōu)化的問(wèn)題在熟練后再講述就水到渠成了。特定分布抽樣會(huì)講很多有用的技巧,例如RejectMethod、條件分布方法、協(xié)方差陣、Copula等方法生成聯(lián)合分布隨機(jī)變量,但是如果講述太深,每個(gè)內(nèi)容都可以寫(xiě)一本書(shū)了,所以不會(huì)講太深,只講用的最多的那很少一部分內(nèi)容。并行MonteCarlo――很多入門的書(shū)上不會(huì)講這個(gè),但是這個(gè)課程里面會(huì)專門用一章講,更詳細(xì)介紹見(jiàn)本章倒數(shù)第三小節(jié)。四、課程的教授模式本課程中每個(gè)知識(shí)點(diǎn)基本按照如下步驟展開(kāi):主要介紹與知識(shí)點(diǎn)息息相關(guān)的基礎(chǔ)知識(shí),例如公式的數(shù)學(xué)推導(dǎo)、概念的含義、Matlab語(yǔ)句基礎(chǔ)、計(jì)算機(jī)相關(guān)知識(shí)等等。這樣做最大的作用是幫助大家回憶這些內(nèi)容,以便與主體內(nèi)容展開(kāi)相銜接。由于這并非主旨所在,所以不會(huì)在其上花費(fèi)過(guò)多筆墨。若你從未接觸過(guò)這些基礎(chǔ)知識(shí),你要是看一遍課程中的簡(jiǎn)介就懂了自然最好,若不懂,則建議翻閱相應(yīng)的參考書(shū)籍。我會(huì)在課程講義最后附上我寫(xiě)作本課程講義所用到的所有參考書(shū)目。(由于我習(xí)慣看英文原版書(shū),所以此教程的參考書(shū)目大多數(shù)是英文書(shū)籍)(二)主體內(nèi)容不必多言,就是知識(shí)點(diǎn)的展開(kāi)。(三)相關(guān)例子每個(gè)知識(shí)點(diǎn)后面我會(huì)附上一些與其有關(guān)的簡(jiǎn)單的例子。任何知識(shí)、方法都有它自身的局限,所以僅僅知道方法怎么做還不夠,還需要明白這些方法何時(shí)何地能用。從另一個(gè)角度來(lái)看,本課程主要包含如下資料:(一)講義就是你當(dāng)前看到的這份資料。此資料覆蓋所有便于書(shū)寫(xiě)的內(nèi)容。而且,購(gòu)買了視頻教程的網(wǎng)友將收到PDF版本的講義;同時(shí)這份講義還會(huì)以HTML網(wǎng)頁(yè)的形式掛在我的個(gè)人主頁(yè)(/),網(wǎng)頁(yè)教程可以直接打印,打印過(guò)程中非主要內(nèi)容(如導(dǎo)航、廣告等)會(huì)自動(dòng)隱藏。由于我的個(gè)人主頁(yè)是商業(yè)空間,需要大量的流量才能產(chǎn)生足以支持空間運(yùn)營(yíng)的廣告收入,所以請(qǐng)購(gòu)買了視頻教程的網(wǎng)友不要在未經(jīng)我個(gè)人允許前提下將PDF講義等資料公布在網(wǎng)絡(luò)上,對(duì)此我保留追究法律責(zé)任的權(quán)力。特別需要指出一點(diǎn):由于時(shí)間緊迫,寫(xiě)作講義時(shí)文字不經(jīng)細(xì)細(xì)斟酌,雖然意思基本表達(dá)清楚,但中文語(yǔ)法錯(cuò)誤在所難免。今后有時(shí)間會(huì)逐句修改,也歡迎大家?guī)兔πS?,具體做法是:保存當(dāng)前網(wǎng)頁(yè)為html,用word打開(kāi)網(wǎng)頁(yè),另存為doc,之后再修訂文檔。(二)PPTPPT主要覆蓋一些公式性推導(dǎo)和一些我并不擁有完全版權(quán)的內(nèi)容——有些比較獨(dú)特的知識(shí)、例子來(lái)自于我在北京大學(xué)的金融工程等課程,將其以電子版發(fā)布在網(wǎng)絡(luò)上會(huì)冒犯到為這些知識(shí)、例子付出很多心血的老師一一故PPT不會(huì)分發(fā)(無(wú)論是否購(gòu)買視頻教程),但是會(huì)顯示在視頻中。觀眾通過(guò)暫停視頻的方式閱讀這些內(nèi)容。(三)代碼MonteCarl。的代碼不是很復(fù)雜,但要寫(xiě)出高質(zhì)量的代碼卻不容易,所以對(duì)于大多數(shù)例子我會(huì)寫(xiě)至少兩個(gè)版本代碼,一個(gè)是基礎(chǔ)版本,采用大家最熟悉的最基礎(chǔ)的Matlab語(yǔ)句來(lái)寫(xiě);另一個(gè)是優(yōu)化后的版本,這一版本將充分考慮Matlab特點(diǎn)進(jìn)行優(yōu)化,但是它可能不那么容易讀懂。對(duì)于購(gòu)買了視頻的網(wǎng)友,我會(huì)將PDF和代碼文件放在一個(gè)壓縮包中發(fā)送至你的郵箱,只要將此附件解壓縮即可得到代碼文件。視頻教程文件太大,我不可能找到足夠的免費(fèi)空間來(lái)存放這些視頻文件,免費(fèi)提供給大家觀看。故視頻教程將借助其他網(wǎng)站的空間。在我當(dāng)前與人大經(jīng)濟(jì)論壇的合同結(jié)束前,此視頻教程由人大經(jīng)濟(jì)論壇獨(dú)家提供。具體的網(wǎng)址見(jiàn):/Default.aspx?id=ll五、基礎(chǔ)知識(shí)要求雖然我會(huì)在每章開(kāi)始部分很簡(jiǎn)略地復(fù)習(xí)部分基礎(chǔ)概念,但是要順利完成此課程,請(qǐng)確保自己牢固掌握了如下知識(shí)。(一)數(shù)學(xué)基礎(chǔ)學(xué)習(xí)MonteCarlo必備基礎(chǔ)的概率論知識(shí)。隨機(jī)變量、PDF(隨機(jī)變量的概率分布)、CDF(隨機(jī)變量的累積分布)、聯(lián)合分布、條件分布、邊緣分布、COPULA、隨機(jī)微分方程(SDE)等等。而且不僅僅是知道這些概念是什么含義,還要會(huì)用、會(huì)算。不過(guò)也不用被這些嚇到,雖然我在相關(guān)章節(jié)講的內(nèi)容比較深,這些知識(shí)都全要用到,但是里面最重要的知識(shí)只有一個(gè),那就是正態(tài)分布。你只要會(huì)熟練學(xué)習(xí)正態(tài)分布,就可以解決不少金融產(chǎn)品理論定價(jià)的問(wèn)題。話說(shuō)回來(lái),必須指出,本教程里面涉及的數(shù)學(xué)相對(duì)于真正難的知識(shí)還只是入門,要做現(xiàn)實(shí)市場(chǎng)中的產(chǎn)品定價(jià)這些知識(shí)遠(yuǎn)遠(yuǎn)不夠。補(bǔ)充說(shuō)明,大多數(shù)理論定價(jià)模型,例如BlackScholes模型,Black模型,為了推導(dǎo)簡(jiǎn)便起見(jiàn)(當(dāng)前也限于這些論文寫(xiě)作時(shí)的計(jì)算機(jī)技術(shù)等外界因素),都只考慮正態(tài)分布;但是,在真實(shí)市場(chǎng)中,很多經(jīng)濟(jì)變量(例如股票收益率),可能符合白噪聲假設(shè),但是一般不符合正態(tài)分布假設(shè)及獨(dú)立假設(shè)。總之,只掌握正態(tài)分布,理論模型基本不會(huì)有問(wèn)題,卻不足以做真實(shí)市場(chǎng)的分析。(二)Matlab基本教程的某章中,我會(huì)簡(jiǎn)略講講編程入門知識(shí)。但是Matlab的基本操作需要你自己去看。要求掌握程度可以參考我寫(xiě)得Matlab簡(jiǎn)明教程(/notes/matlab/)金融工程知識(shí)雖然這個(gè)教程沒(méi)有明確表明專門講金融產(chǎn)品定價(jià),但是這里用了不少金融產(chǎn)品理論定價(jià)的例子來(lái)解說(shuō)MonteCarlo方法,如果你對(duì)金融工程比較熟悉,那么看這些部分相對(duì)會(huì)更順利。即使不熟悉也沒(méi)關(guān)系,每個(gè)例子的開(kāi)始部分,我會(huì)簡(jiǎn)要解釋相關(guān)背景知識(shí)。由于需要講述Matlab實(shí)際操作,所以你應(yīng)該熟悉Matlab軟件啟動(dòng)退出,磁盤(pán)目錄概念;另外會(huì)講述并行MonteCarlo計(jì)算,所以你應(yīng)該明白雙核概念,內(nèi)存CPU等等基本知識(shí)總要懂一點(diǎn)的。其他的不要求。六、MonteCarlo并行計(jì)算這里還特別提一下并行計(jì)算?,F(xiàn)在雙核機(jī)器基本普及,還有不少網(wǎng)友的機(jī)器是三核甚至四核,如果能夠同時(shí)使用多個(gè)核心做計(jì)算,運(yùn)算速度可以有顯著提升。幸運(yùn)的是,MonteCarl。方法的特點(diǎn)使得它特別適合并行計(jì)算。所以,在這個(gè)教程中,我將用獨(dú)立的一章特別講述如何使用Matlab并行計(jì)算工具箱(ParallelComputingToolbox)做MonteCarlo模擬。我會(huì)先介紹并行計(jì)算的基礎(chǔ)知識(shí)(例如兩種主要的并行模式),以及會(huì)更詳細(xì)介紹Matlab并行計(jì)算工具箱的工作原理一一Matlab的并行計(jì)算并非標(biāo)準(zhǔn)的并行計(jì)算,必須了解其特點(diǎn)才能發(fā)揮并行計(jì)算優(yōu)勢(shì),否則速度可能更慢。介紹完基礎(chǔ)知識(shí),我將通過(guò)將此前各章的MonteCarlo例子改寫(xiě)為并行計(jì)算代碼這種形式來(lái)講述MonteCarlo并行算法。之后,還將特別列出用Matlab做并行MonteCarlo的一些注意事項(xiàng),并給出一些用以確保效率的簡(jiǎn)要規(guī)則。七、關(guān)于回答疑問(wèn)不論是否購(gòu)買了視頻教程都可以通過(guò)郵件形式聯(lián)系我,我的Email地址在主()頁(yè)上及視頻教程中已標(biāo)明。我很樂(lè)意就本課程相關(guān)的任何問(wèn)題與大家交流。不過(guò)有幾點(diǎn)還請(qǐng)大家理解:由于我郵箱中垃圾郵件很多,所以你寫(xiě)信時(shí)的書(shū)寫(xiě)方式和內(nèi)容盡量確保不要被Gmail當(dāng)成垃圾郵件處理掉我事情比較忙,所以可能不能及時(shí)回信,還請(qǐng)見(jiàn)諒。有疑問(wèn)可以通過(guò)郵件聯(lián)系我,也可以直接在論壇上相關(guān)板塊發(fā)帖咨詢。(我收郵件頻率一般高于上論壇頻率)在詢問(wèn)我之前強(qiáng)烈建議你在講義、我主頁(yè)的FAQ欄目中查詢是否已有類似問(wèn)題。提問(wèn)一定要詳細(xì)具體,并附上詳盡的背景材料,那些飄渺無(wú)蹤影的問(wèn)題實(shí)在令人無(wú)從下手!我回答問(wèn)題的方式可能是直接給出代碼等解答,也可能是告知你從何處尋找相關(guān)信息以自己解決——即授人以魚(yú)和授人以漁這兩種方式我都有可能選擇。如果所提問(wèn)題有很好的代表性,我將略去或更換你提問(wèn)中涉及你個(gè)人情況的信息、數(shù)據(jù),然后將此問(wèn)題的解答方法放置在課程主頁(yè)上,以便其它網(wǎng)友參考。我保證會(huì)很認(rèn)真對(duì)待每位網(wǎng)友每個(gè)有意義的問(wèn)題并會(huì)盡力去尋找答案,但我無(wú)法保證每個(gè)問(wèn)題我都能回答。八、關(guān)于后續(xù)課程這個(gè)課程只講基礎(chǔ)。主要作用有兩個(gè),一個(gè)是為更深課程提供一個(gè)入門途徑,這樣將來(lái)我要是講更深課程時(shí)就不必浪費(fèi)時(shí)間講基礎(chǔ)知識(shí)了;另一個(gè)是投石問(wèn)路,我的時(shí)間一直很緊張,此課程也是第一次和人大經(jīng)濟(jì)論壇合作,因此我需要看看市場(chǎng)反應(yīng)再?zèng)Q定是否有必要花費(fèi)大量時(shí)間準(zhǔn)備延伸課程。如果結(jié)果顯示有足夠數(shù)量的網(wǎng)友對(duì)這方面的知識(shí)很感興趣(這個(gè)主要體現(xiàn)在視頻購(gòu)買上哈哈),那么我可能考慮推出關(guān)于金融產(chǎn)品MonteCarlo定價(jià)的課程。在那個(gè)課程中,理論模型不再是主要內(nèi)容,我會(huì)從現(xiàn)實(shí)出發(fā),從如何分析市場(chǎng)歷史數(shù)據(jù)以得到重要參數(shù),到如何建立各種模型,再到現(xiàn)實(shí)中各項(xiàng)應(yīng)用等等。九、版權(quán)申明未經(jīng)本作者書(shū)面授權(quán)許可,本課程任何資料不得用于商業(yè)或盈利性用途。講義的PDF版本僅僅提供給購(gòu)買了視頻教程的最終用戶,此講義可以復(fù)印,也可打印后分發(fā),但未經(jīng)作者本人書(shū)面許可,任何人不得散發(fā)講義PDF電子版。網(wǎng)頁(yè)版本的講義可下載,且在保證網(wǎng)頁(yè)文件未被認(rèn)為修改情況下可以公開(kāi)傳播,但考慮到我會(huì)時(shí)常更新網(wǎng)頁(yè)版本內(nèi)容,強(qiáng)烈建議直接訪問(wèn)課程網(wǎng)站。除上述兩種情章卜,任關(guān)料不得在未經(jīng)作者本人方面法概述下散發(fā)。講課人:XaeroChang|課程主頁(yè):/notes/intro2mc本章主要概述MonteCarlo的一些基礎(chǔ)知識(shí),另外包括一^最簡(jiǎn)單的用MonteCarlo方法計(jì)算數(shù)值積分的例子。―、MonteCarlo歷史淵源MonteCarlo方法的實(shí)質(zhì)是通過(guò)大量隨機(jī)試驗(yàn),利用概率論解決問(wèn)題的一種數(shù)值方法,基本思想是基于概率和體積間的相似性。它和Simulation有細(xì)微區(qū)別。單獨(dú)的Simulation只是模擬一些隨機(jī)的運(yùn)動(dòng),其結(jié)果是不確定的;MonteCarlo在計(jì)算的中間過(guò)程中出現(xiàn)的數(shù)是隨機(jī)的,但是它要解決的問(wèn)題的結(jié)果卻是確定的。歷史上有記載的MonteCarlo試驗(yàn)始于十八世紀(jì)末期(約1777年),當(dāng)時(shí)布豐(Buffon)為了計(jì)算圓周率,設(shè)計(jì)了一個(gè)“投針試驗(yàn)”。(后文會(huì)給出一個(gè)更加簡(jiǎn)單的計(jì)算圓周率的例子)。雖然方法已經(jīng)存在了200多年,此方法命名為MonteCarlo則是在二十世紀(jì)四十年,美國(guó)原子彈計(jì)劃的一個(gè)子項(xiàng)目需要使用MonteCarlo方法模擬中子對(duì)某種特殊材料的穿透作用。出于保密緣故,每個(gè)項(xiàng)目都要一個(gè)代號(hào),傳聞命名代號(hào)時(shí),項(xiàng)目負(fù)責(zé)人之一vonNeumann靈犀一點(diǎn)選擇摩洛哥著名賭城蒙特卡洛作為該項(xiàng)目名稱,自此這種方法也就被命名為MonteCarlo方法廣為流傳。十一、Mo毗eCarlo方法適用用途一)數(shù)值積分計(jì)算一個(gè)定積分,如巾,如果我們能夠得到f(x)的原函數(shù)F(x),那么直接由表達(dá)式:F(x1)-F(x0)可以得到該定積分的值。但是,很多情況下,由于f(x)太復(fù)雜,我們無(wú)法計(jì)算得到原函數(shù)F(x)的顯示解,這時(shí)我們就只能用數(shù)值積分的辦法。如下是一個(gè)簡(jiǎn)單的數(shù)值積分的例子。數(shù)值積分簡(jiǎn)單示例如圖,數(shù)值積分的基本原理是在自變量x的區(qū)間上取多個(gè)離散的點(diǎn),用單個(gè)點(diǎn)的值來(lái)代替該小段上函數(shù)f(x)值。常規(guī)的數(shù)值積分方法是在分段之后,將所有的柱子(粉紅色方塊)的面積全部加起來(lái),用這個(gè)面積來(lái)近似函數(shù)f(x)(藍(lán)色曲線)與x軸圍成的面積。這樣做當(dāng)然是不精確的,但是隨著分段數(shù)量增加,誤差將減小,近似面積將逐漸逼近真實(shí)的面積。MonteCarlo數(shù)值積分方法和上述類似。差別在于,MonteCarlo方法中,我們不需要將所有方柱的面積相加,而只需要隨機(jī)地抽取一些函數(shù)值,將他們的面積累加后計(jì)算平均值就夠了。通過(guò)相關(guān)數(shù)學(xué)知識(shí)可以證明,隨著抽取點(diǎn)增加,近似面積也將逼近真實(shí)面積。在金融產(chǎn)品定價(jià)中,我們接觸到的大多數(shù)求基于某個(gè)隨機(jī)變量的函數(shù)的期望值??紤]一個(gè)歐式期權(quán),假定我們已經(jīng)知道在期權(quán)行權(quán)日的股票服從某種分布(理論模型中一般是正態(tài)分布),那么用期權(quán)收益在這種分布上做積分求期望即可。(五)隨機(jī)最優(yōu)化MonteCarlo在隨機(jī)最優(yōu)化中的應(yīng)用包括:模擬退火(SimulatedAnnealing)、進(jìn)化策略(Evolutionstrategy)等等。一個(gè)最簡(jiǎn)單的例子是,已知某函數(shù),我們要求此函數(shù)的最大值,那么我們可以不斷地在該函數(shù)定義域上隨機(jī)取點(diǎn),然后用得到的最大的點(diǎn)作為此函數(shù)的最大值。這個(gè)例子實(shí)質(zhì)也是隨機(jī)數(shù)值積分,它等價(jià)于求此函數(shù)的無(wú)窮階范數(shù)?-Norm)在定義域上的積分。由于在金融產(chǎn)品定價(jià)中,這部分內(nèi)容用的相對(duì)較不常見(jiàn),所以此課程就不介紹隨機(jī)最優(yōu)化方法了。十二、MonteCarlo形式與一般步驟積分形式做MonteCarlo時(shí),求解積分的一般形式是:AJgm功血X為自變量,它應(yīng)該是隨機(jī)的,定義域?yàn)?xO,xl),f(x)為被積函數(shù),巾(x)是x的概率密度。在計(jì)算歐式期權(quán)例子中,x為期權(quán)到期日股票價(jià)格,由于我們計(jì)算期權(quán)價(jià)格的時(shí)候該期權(quán)還沒(méi)有到期,所以此時(shí)x是不確定的(是一隨機(jī)變量),我們按照相應(yīng)的理論,假設(shè)x的概率密度為巾(x)、最高可能股價(jià)為x1(可以是正無(wú)窮)、最低可能股價(jià)為xO(可以是0),另外,期權(quán)收益是到期日股票價(jià)格x和期權(quán)行權(quán)價(jià)格的函數(shù),我們用f(x)來(lái)表示期權(quán)收益。(二)一般步驟我將MonteCarlo分為三加一個(gè)步驟:1.依據(jù)概率分布巾(X)不斷生成隨機(jī)數(shù)x,并計(jì)算f(x)由于隨機(jī)數(shù)性質(zhì),每次生成的x的值都是不確定的,為區(qū)分起見(jiàn),我們可以給生成的x賦予下標(biāo)。如Xj表示生成的第i個(gè)x。生成了多少個(gè)x,就可以計(jì)算出多少個(gè)f(x)的值將這些f(x)的值累加,并求平均值x,例如我們共生成了N個(gè)x,x,ai-l到達(dá)停止條件后退出常用的停止條件有兩種,一種是設(shè)定最多生成N個(gè)x,數(shù)量達(dá)到后即退出,另一種是檢測(cè)計(jì)算結(jié)果與真實(shí)結(jié)果之間的誤差,當(dāng)這一誤差小到某個(gè)范圍之內(nèi)時(shí)退出。有趣的類比:積分表達(dá)式中的積分符合類比為上式中累加符號(hào),dx類比為1/N(數(shù)學(xué)知識(shí)告訴我們積分實(shí)質(zhì)是極限意義下的累加;f(x)還是它自己,積分中的巾(x)可類比為依據(jù)巾(x)生成隨機(jī)數(shù)誤差分析MonteCarl。方法得到的結(jié)果是隨機(jī)變量,因此,在給出點(diǎn)估計(jì)后,還需要給出此估計(jì)值的波動(dòng)程度及區(qū)間估計(jì)。嚴(yán)格的誤差分析首先要從證明收斂性出發(fā),再計(jì)算理論方差,最后用樣本方差來(lái)替代理論方差。在本課程中我們假定此方法收斂,同時(shí)得到的結(jié)果服從正態(tài)分布,因此可以直接用樣本方差作區(qū)間估計(jì)。詳細(xì)過(guò)程在例子中解釋。這個(gè)步驟的理論意義很重要,但在實(shí)際應(yīng)用中,它的重要性有所淡化,倘若你的老板不太懂這些知識(shí),你報(bào)告計(jì)算結(jié)果時(shí)可以只告訴他點(diǎn)估計(jì)即可。注意,前兩大步驟還可以繼續(xù)細(xì)分,例如某些教科書(shū)上的五大步驟就是將此處的前兩步細(xì)分成四步。十三、最簡(jiǎn)單的例子舉個(gè)例子:2JeTdx:計(jì)算從孑函數(shù)從0到2的定積分值。數(shù)學(xué)方法:我們已知b的原函數(shù)是孑,那么定積分值就是:決=6.38905609893065。計(jì)算這個(gè)數(shù)值可以在Matlab中輸入代碼:exp(2)-exp(0)上面得到的值是此不定積分的真實(shí)值。常規(guī)數(shù)值積分:在區(qū)間內(nèi)取n個(gè)點(diǎn),計(jì)算各個(gè)點(diǎn)上的函數(shù)值,然后用函數(shù)值乘以每個(gè)區(qū)間寬度,最后相加。Matlab代碼:N=100;x=linspace(0,2,N);sum(exp(x).*2/N)試著調(diào)大N的值,你會(huì)發(fā)現(xiàn),最后的結(jié)果將更接近真實(shí)值。MonteCarlo數(shù)值積分法:在內(nèi)隨機(jī)取N個(gè)點(diǎn),計(jì)算各個(gè)點(diǎn)上的函數(shù)值,最后求這些函數(shù)值的平均值再乘以2(為何要乘以2在后面小節(jié)詳細(xì)講)。看Matlab代碼:N=100;x二unifrnd(0,2,N,l);mean(2*exp(x))同樣的,通過(guò)增大N,這種方法得到的結(jié)果也將越來(lái)越接近真實(shí)值。解釋3J1這個(gè)例子要求的積分形式是:,還不完全是形式,我們先做變2|換,,這里姑是f(x);1/2是巾(X),它表示,在取值范圍(0,2)區(qū)間內(nèi),x服從均勻分布。前一例子共三條語(yǔ)句,逐句解釋如下:N=100;設(shè)定停止條件,共做N次MonteCarlo模擬。x二unifrnd(0,2,N,l);按照(0,2)區(qū)間均勻分布概率密度對(duì)x隨機(jī)抽樣,共抽取N個(gè)X。此句相當(dāng)于第一個(gè)步i驟中的前半部分。mean(2*exp(x))2*exp(x)作用是對(duì)每個(gè)x計(jì)算f(x)的值,共可得到N個(gè)值,這個(gè)相當(dāng)于第一個(gè)步驟后半ii部分;Mean()函數(shù)的作用是將所有的f(x)加起來(lái)取平均值,相當(dāng)于第二個(gè)步驟。i這段代碼中的停止條件隱含于N值設(shè)定中,它一次性生成N個(gè)x值,完成此次計(jì)算后整個(gè)程序就結(jié)束了。十四、MonteCarlo方法的優(yōu)點(diǎn)對(duì)比前面常規(guī)數(shù)值積分和MonteCarlo數(shù)值積分代碼,同樣數(shù)量的N值一一也就意味這幾乎相同的計(jì)算量常規(guī)數(shù)值積分結(jié)果的精確度要高于MonteCarlo數(shù)值積分的結(jié)果。那么,我們?yōu)楹芜€需要用MonteCarlo來(lái)算數(shù)值積分呢?答案的關(guān)鍵在于,常規(guī)數(shù)值積分的精度直接取決于每個(gè)維度上取點(diǎn)數(shù)量,維度增加了,但是每個(gè)維度上要取的點(diǎn)卻不能減少。在多重積分中,隨著被積函數(shù)維度增加,需要計(jì)算的函數(shù)值數(shù)量以指數(shù)速度遞增。例如在一重積分中,只要沿著x軸取N個(gè)點(diǎn);ff—f/Oih巧一w)呎心乓一兀)臥旺=2—耳)要達(dá)到相同大小的精確度,在s重積分中,仍然需要在每個(gè)維度上取N個(gè)點(diǎn),s個(gè)緯度的坐標(biāo)相組合,共需要計(jì)算Ns個(gè)坐標(biāo)對(duì)應(yīng)的f()函數(shù)值。取點(diǎn)越多,會(huì)占用計(jì)算機(jī)大量?jī)?nèi)存,也需要更長(zhǎng)運(yùn)算時(shí)間,最終導(dǎo)致這種計(jì)算方法不可行!MonteCarlo方法卻不同,不管是積分有多少重,取N個(gè)點(diǎn)計(jì)算的結(jié)果精確度都差不多。因此,即使在一重積分的情形下,MonteCarlo方法的效率比不過(guò)常規(guī)數(shù)值積分,但隨著積分維度增加,常規(guī)數(shù)值積分的速度呈指數(shù)下降,MonteCarlo方法的效率卻基本不變。經(jīng)驗(yàn)表明,當(dāng)積分重?cái)?shù)達(dá)到4重積分甚至更高時(shí),MonteCarlo方法將遠(yuǎn)遠(yuǎn)優(yōu)于常規(guī)數(shù)值積分方法?,F(xiàn)在回到金融產(chǎn)品定價(jià),歐式期權(quán)理論定價(jià)公式只需要一重積分,此時(shí)MonteCarlo方法的效果不明顯,但是如果我們考慮一個(gè)亞式期權(quán):期限為1年期,期權(quán)價(jià)格基于此1年內(nèi)每天某個(gè)時(shí)點(diǎn)時(shí)的價(jià)格,全年共252個(gè)交易日,這樣此亞式期權(quán)理論定價(jià)公式是一個(gè)252重積分。常規(guī)的數(shù)值積分方法,需要取N25個(gè)點(diǎn),這個(gè)數(shù)有多大,你自己去計(jì)算一下就知道了(注意:N取值要遠(yuǎn)遠(yuǎn)大于2),常規(guī)數(shù)值積分方法不可行,只能用MonteCarlo。綜上,如果計(jì)算高維度多重積分,如路徑依賴的exoticoptions(奇異期權(quán))等金融產(chǎn)品定價(jià),我們一般用的方法都是MonteCarlo。十五、MonteCarlo方法原理(選讀)MonteCarlo方法計(jì)算的結(jié)果收斂的理論依據(jù)來(lái)自于大數(shù)定律,且結(jié)果漸進(jìn)地(Asymptotically)服從正態(tài)分布的理論依據(jù)是中心極限定理。以上兩個(gè)屬性都是漸進(jìn)性質(zhì),要進(jìn)行很多次抽樣,此屬性才會(huì)比較好地顯示出來(lái),如果MonteCarlo計(jì)算結(jié)果的某些高階距存在,即使抽樣數(shù)量不太多,這些漸進(jìn)屬性也可以很快地達(dá)到。這些原理在理論上意義重大,但由于我們一般遇上的MonteCarlo問(wèn)題都是收斂的、結(jié)果也都是漸進(jìn)正態(tài)分布,所以工作中使用時(shí)可以不加考慮。詳細(xì)第二章:隨機(jī)數(shù)的生成講課人:XaeroChang|課程主頁(yè):/notes/intro2mc本章第一節(jié)會(huì)簡(jiǎn)要復(fù)習(xí)隨機(jī)變量的一些概念,但學(xué)習(xí)本章最好要有一定的數(shù)學(xué)基礎(chǔ)。第二節(jié)主要介紹如何生成一維概率分布的隨機(jī)數(shù),第三節(jié)介紹如何生成高維分布的隨機(jī)數(shù)。最后略提及偽隨機(jī)數(shù)問(wèn)題的應(yīng)對(duì)策略?!?…-…—-…-…—-…-…—-…-…—_"iS…—-…-…—-…-…—-…-…—由前文可知,MonteCarlo積分解決的問(wèn)題形如,f(x)值只需由x值決定,因此此處最重要的就是如何生成服從巾(x)概率分布的隨機(jī)數(shù)。可以說(shuō),正確生成隨機(jī)數(shù),MonteCarlo方法就做完了一半。一、隨機(jī)變量基本概念(一)隨機(jī)變量現(xiàn)實(shí)世界中有很多可以用數(shù)字來(lái)衡量的事物,站在當(dāng)前時(shí)間點(diǎn)來(lái)看,它們?cè)谖磥?lái)時(shí)刻的值是不確定的。例如,我們擲一骰子,在它停穩(wěn)前,我們不可能知道擲出多少點(diǎn)(傳說(shuō)中的賭王除外,哈哈);例如某只股票在明天的股價(jià),沒(méi)有人能準(zhǔn)確知曉第二天股票的價(jià)格(不然他就發(fā)慘了?。?。但是,我們卻可以描述這些事物未來(lái)各種值的可能性。(二)離散型隨機(jī)變量

離散型隨機(jī)變量最重要的是分布律,即每個(gè)取值的概率是多少。例如擲骰子,我們認(rèn)為扔出任何一個(gè)點(diǎn)的概率都是1/6。那么擲骰子得到的點(diǎn)數(shù)的分布律如下表:骰子點(diǎn)數(shù)123456概率1/61/61/61/61/61/6連續(xù)性隨機(jī)變量連續(xù)型隨機(jī)變量有兩個(gè)重要的概念。概率密度函數(shù)(PDF)和累積概率分布函數(shù)(CDF),具體定義見(jiàn)數(shù)學(xué)書(shū)籍。PDF函數(shù)本身不是概率,只有對(duì)x的某段區(qū)間中的PDF積分得到的數(shù)值才有概率的含義。CDF是概率的意思,點(diǎn)x上CDF的值表示該隨機(jī)變量可能取值小于x的概率的大小。如圖是正態(tài)分布的PDF和CDF多元分布在這個(gè)課程里面,我不將多維的隨機(jī)變量拆分成多個(gè)一維的隨機(jī)變量來(lái)表述,而是將各個(gè)維度組合成一個(gè)隨機(jī)變量向量。多元隨機(jī)變量分布需要掌握聯(lián)合分布、邊緣分布和條件分布。聯(lián)合分布和單變量PDF類似,如果將其對(duì)隨機(jī)變量某個(gè)取值范圍做積分就可以得到隨機(jī)變量最終取值落在該區(qū)間內(nèi)的概率。邊緣分布是只考慮多維隨機(jī)變量中的某一維,其他維度不考慮情況下的PDF條件分布是固定隨機(jī)變量在其他維度的取值,再考慮剩余那個(gè)維度上的PDF。如圖是一個(gè)二維正態(tài)分布(兩個(gè)維度間相關(guān)系數(shù)為0.3)的示意圖。兩個(gè)小圖分別是第一和第二維度的邊緣分布PDF圖(都是標(biāo)準(zhǔn)正態(tài)分布PDF)。右上角的大圖是依據(jù)此二維正態(tài)聯(lián)合分布生成的隨機(jī)數(shù)。從隨機(jī)數(shù)的疏密程度可以看出聯(lián)合分布PDF函數(shù)在該區(qū)域的大小。研究這些分布不是我們的目的,只是達(dá)到目的的手段。我們所需要做的事情是生成符合各種分布的隨機(jī)數(shù)。由分布的不同類型一一連續(xù)型和離散型,常規(guī)型(Matlab中有內(nèi)置函數(shù))和特殊型(Matlab中無(wú)內(nèi)置函數(shù)),一維分布和多維分布一一我們接下來(lái)就各種情況分別講述如何在Matlab中生成各種各樣的隨機(jī)數(shù)。十六、一維隨機(jī)數(shù)兩個(gè)注意事項(xiàng):生成隨機(jī)數(shù)有兩種選擇,可以每次只生成一個(gè)隨機(jī)數(shù),直接用此數(shù)計(jì)算f(x),然后循環(huán)重復(fù)此過(guò)程,最后求平均值;另一種方法是每次生成全部循環(huán)所需的隨機(jī)數(shù),利用Matlab矩陣運(yùn)算語(yǔ)法計(jì)算f(x),不需要寫(xiě)循環(huán),直接即可求平均值。前一種方法代碼簡(jiǎn)單,但速度慢;后一種方法代碼相對(duì)更難寫(xiě)。此處一定要掌握如何生成隨機(jī)數(shù)組成的向量和矩陣(單個(gè)隨機(jī)數(shù)就是一個(gè)1*1的矩陣),在后面章節(jié)的例子里面一般會(huì)有兩個(gè)版本的代碼分別講述這兩種生成方法。生成了一維的隨機(jī)數(shù)后,可以用hist()函數(shù)查看這些數(shù)服從的大致分布情況。基本隨機(jī)數(shù)Matlab中有兩個(gè)最基本生成隨機(jī)數(shù)的函數(shù)。rand()生成(0,1)區(qū)間上均勻分布的隨機(jī)變量?;菊Z(yǔ)法:rand([M,N,P...])生成排列成M*N*P...多維向量的隨機(jī)數(shù)。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:rand(5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式rand(5)%生成5行5列的隨機(jī)數(shù)矩陣rand([5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣生成的隨機(jī)數(shù)大致的分布。x=rand(100000,l);hist(x,30);由此可以看到生成的隨機(jī)數(shù)很符合均勻分布。(視頻教程會(huì)略提及hist()函數(shù)的作用)2.randn()生成服從標(biāo)準(zhǔn)正態(tài)分布(均值為0方差為1)的隨機(jī)數(shù)。基本語(yǔ)法和rand()類似。randn([M,N,P...])生成排列成M*N*P...多維向量的隨機(jī)數(shù)。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:randn(5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式randn(5)%生成5行5列的隨機(jī)數(shù)矩陣randn([5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣生成的隨機(jī)數(shù)大致的分布。x二randn(100000,l);hist(x,50);由圖可以看到生成的隨機(jī)數(shù)很符合標(biāo)準(zhǔn)正態(tài)分布。連續(xù)型分布隨機(jī)數(shù)如果你安裝了統(tǒng)計(jì)工具箱(StatisticToolbox),除了這兩種基本分布外,還可以用Matlab內(nèi)部函數(shù)生成符合下面這些分布的隨機(jī)數(shù)。3.unifrnd()和rand()類似,這個(gè)函數(shù)生成某個(gè)區(qū)間內(nèi)均勻分布的隨機(jī)數(shù)?;菊Z(yǔ)法unifrnd(a,b,[M,N,P,...])生成的隨機(jī)數(shù)區(qū)間在(a,b)內(nèi),排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:unifrnd(-2,3,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式unifrnd(-2,3,5)%生成5行5列的隨機(jī)數(shù)矩陣unifrnd(-2,3,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)都在(-2,3)區(qū)間內(nèi).生成的隨機(jī)數(shù)大致的分布。x=unifrnd(-2,3,100000,l);hist(x,50);由圖可以看到生成的隨機(jī)數(shù)很符合區(qū)間(-2,3)上面的均勻分布。4.normrnd()和randn()類似,此函數(shù)生成指定均值、標(biāo)準(zhǔn)差的正態(tài)分布的隨機(jī)數(shù)?;菊Z(yǔ)法normrnd(mu,sigma,[M,N,P,...])生成的隨機(jī)數(shù)服從均值為mu,標(biāo)準(zhǔn)差為sigma(注意標(biāo)準(zhǔn)差是正數(shù))正態(tài)分布,這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:normrnd(2,3,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式normrnd(2,3,5)%生成5行5列的隨機(jī)數(shù)矩陣normrnd(2,3,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的正態(tài)分布都是均值為2,標(biāo)準(zhǔn)差為3.生成的隨機(jī)數(shù)大致的分布。x二normrnd(2,3,100000,l);hist(x,50);分布,下半部分是用小節(jié)“randn()”中最后那段語(yǔ)句生成10萬(wàn)個(gè)標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)的大致分布。注意到上半個(gè)圖像的對(duì)稱軸向正方向偏移(準(zhǔn)確說(shuō)移動(dòng)到x=2處),這是由于均值為2的結(jié)果。而且,由于標(biāo)準(zhǔn)差是3,比標(biāo)準(zhǔn)正態(tài)分布的標(biāo)準(zhǔn)差(1)要高,所以上半部分圖形更胖(注意x軸刻度的不同)。chi2rnd()此函數(shù)生成服從卡方(Chi-square)分布的隨機(jī)數(shù)??ǚ椒植贾挥幸粋€(gè)參數(shù):自由度V?;菊Z(yǔ)法chi2rnd(v,[M,N,P,...])生成的隨機(jī)數(shù)服從自由度為v的卡方分布,這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:chi2rnd(5,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式chi2rnd(5,5)%生成5行5列的隨機(jī)數(shù)矩陣chi2rnd(5,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的卡方分布的自由度都是5生成的隨機(jī)數(shù)大致的分布。x=chi2rnd(5,100000,l);hist(x,50);frnd()此函數(shù)生成服從F分布的隨機(jī)數(shù)。F分布有2個(gè)參數(shù):v1,v2?;菊Z(yǔ)法frnd(vl,v2,[M,N,P,...])生成的隨機(jī)數(shù)服從參數(shù)為(vl,v2)的卡方分布,這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:frnd(3,5,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式frnd(3,5,5)%生成5行5列的隨機(jī)數(shù)矩陣frnd(3,5,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(v1=3,v2=5)的F分布生成的隨機(jī)數(shù)大致的分布。x=frnd(3,5,100000,l);hist(x,50);從結(jié)果可以看出來(lái),F(xiàn)分布集中在x正半軸的左側(cè),但是它在極端值處也很可能有一些取值。7.trnd()此函數(shù)生成服從t(Student'stDistribution,這里Student不是學(xué)生的意思,而是Cosset.W.S.的筆名)分布的隨機(jī)數(shù)。t分布有1個(gè)參數(shù):自由度v。基本語(yǔ)法trnd(v,[M,N,P,...])生成的隨機(jī)數(shù)服從參數(shù)為v的t分布,這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:trnd(7,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式trnd(7,5)%生成5行5列的隨機(jī)數(shù)矩陣trnd(7,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(v=7)的t分布生成的隨機(jī)數(shù)大致的分布。x=trnd(7,100000,l);hist(x,50);可以發(fā)現(xiàn)t分布比標(biāo)準(zhǔn)正太分布要“瘦”,不過(guò)隨著自由度v的增大,t分布會(huì)逐漸變胖,當(dāng)自由度為正無(wú)窮時(shí),它就變成標(biāo)準(zhǔn)正態(tài)分布了。接下來(lái)的分布相對(duì)沒(méi)有這么常用,同時(shí)這些函數(shù)的語(yǔ)法和前面函數(shù)語(yǔ)法相同,所以寫(xiě)得就簡(jiǎn)略一些——在視頻中也不會(huì)講述,你只需按照前面那幾個(gè)分布的語(yǔ)法套用即可,應(yīng)該不會(huì)有任何困難——時(shí)間足夠的話這是一個(gè)不錯(cuò)的練習(xí)機(jī)會(huì)。8.betarnd()此函數(shù)生成服從Beta分布的隨機(jī)數(shù)。Beta分布有兩個(gè)參數(shù)分別是A和B。下圖是A=2,B=5的beta分布的PDF圖形。

25beta1L111A2-A1J5-1T1\OS10J50OJ511J52ZJ5生成beta分布隨機(jī)數(shù)的語(yǔ)法是:betarnd(A,B,[M,N,P,...])9.exprnd()此函數(shù)生成服從指數(shù)分布的隨機(jī)數(shù)。指數(shù)分布只有一個(gè)參數(shù):mu,下圖是mu=3時(shí)指數(shù)分布的PDF圖形生成指數(shù)分布隨機(jī)數(shù)的語(yǔ)法是:betarnd(mu,[M,N,P,...])gamrnd()

生成服從Gamma分布的隨機(jī)數(shù)。Gamma分布有兩個(gè)參數(shù):A和B。下圖是A=2,B=5Gamma分布的PDF圖形生成Gamma分布隨機(jī)數(shù)的語(yǔ)法是:gamrnd(A,B,[M,N,P,...])lognrnd()生成服從對(duì)數(shù)正態(tài)分布的隨機(jī)數(shù)。其有兩個(gè)參數(shù):mu和sigma,服從這個(gè)這樣的隨機(jī)數(shù)取對(duì)數(shù)后就服從均值為mu,標(biāo)準(zhǔn)差為sigma的正態(tài)分布。下圖是mu=-l,sigma=l/1.2的對(duì)數(shù)正態(tài)分布的PDF圖形。

生成對(duì)數(shù)正態(tài)分布隨機(jī)數(shù)的語(yǔ)法是:lognrnd(mu,sigma,[M,N,P,...])raylrnd()生成服從瑞利(Rayleigh)分布的隨機(jī)數(shù)。其分布有1個(gè)參數(shù):B。下圖是B=2的瑞利分布的PDF圖形。生成瑞利分布隨機(jī)數(shù)的語(yǔ)法是:raylrnd(B,[M,N,P,...])wblrnd()生成服從威布爾(Weibul1)分布的隨機(jī)數(shù)。其分布有2個(gè)參數(shù):scale參數(shù)A和shape參數(shù)B。下圖是A=3,B=2的Weibull分布的PDF圖形。生成Weibull分布隨機(jī)數(shù)的語(yǔ)法是:wblrnd(A,B,[M,N,P,...])還有非中心卡方分布(ncx2rnd),非中心F分布(ncfrnd),非中心t分布(nctrnd),括號(hào)中是生成服從這些分布的函數(shù),具體用法用:help函數(shù)名查找。離散型分布隨機(jī)數(shù)離散分布的隨機(jī)數(shù)可能的取值是離散的,一般是整數(shù)。unidrnd()此函數(shù)生成服從離散均勻分布的隨機(jī)數(shù)。Unifrnd是在某個(gè)區(qū)間內(nèi)均勻選取實(shí)數(shù)(可為小數(shù)或整數(shù)),Unidrnd是均勻選取整數(shù)隨機(jī)數(shù)。離散均勻分布隨機(jī)數(shù)有1個(gè)參數(shù):n,表示從{1,2,3,...N}這n個(gè)整數(shù)中以相同的概率抽樣?;菊Z(yǔ)法:unidrnd(n,[M,N,P,...])這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:unidrnd(5,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式unidrnd(5,5)%生成5行5列的隨機(jī)數(shù)矩陣unidrnd(5,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(10,0.3)的二項(xiàng)分布生成的隨機(jī)數(shù)大致的分布。x=unidrnd(9,100000,l);hist(x,9);可見(jiàn),每個(gè)整數(shù)的取值可能性基本相同。binornd()此函數(shù)生成服從二項(xiàng)分布的隨機(jī)數(shù)。二項(xiàng)分布有2個(gè)參數(shù):n,p。考慮一個(gè)打靶的例子,每槍命中率為p,共射擊N槍,那么一共擊中的次數(shù)就服從參數(shù)為(N,p)的二項(xiàng)分布。注意p要小于等于1且非負(fù),N要為整數(shù)?;菊Z(yǔ)法:binornd(n,p,[M,N,P,...])生成的隨機(jī)數(shù)服從參數(shù)為(N,p)的二項(xiàng)分布,這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:binornd(10,0.3,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式binornd(10,0.3,5)%生成5行5列的隨機(jī)數(shù)矩陣binornd(10,0.3,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(10,0.3)的二項(xiàng)分布生成的隨機(jī)數(shù)大致的分布。x=binornd(10,0.45,100000,l);hist(x,ll);我們可以將此直方圖解釋為,假設(shè)每槍射擊命中率為0.45,每論射擊10次,共進(jìn)行10萬(wàn)輪,這個(gè)圖就表示這10萬(wàn)輪每輪命中成績(jī)可能的一種情況。16.geornd()此函數(shù)生成服從幾何分布的隨機(jī)數(shù)。幾何分布的參數(shù)只有一個(gè):p。幾何分布的現(xiàn)實(shí)意義可以解釋為,打靶命中率為p,不斷地打靶,直到第一次命中目標(biāo)時(shí)沒(méi)有擊中次數(shù)之和。注意p是概率,所以要小于等于1且非負(fù)?;菊Z(yǔ)法:geornd(p,[M,N,P,...])這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:geornd(0.4,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式geornd(0.4,5)%生成5行5列的隨機(jī)數(shù)矩陣geornd(0.4,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(0.4)的二項(xiàng)分布生成的隨機(jī)數(shù)大致的分布。x=geornd(0.4,100000,l);hist(x,50);17.poissrnd()此函數(shù)生成服從泊松(Poisson)分布的隨機(jī)數(shù)。泊松分布的參數(shù)只有一個(gè):lambda。此參數(shù)要大于零?;菊Z(yǔ)法:geornd(p,[M,N,P,...])這些隨機(jī)數(shù)排列成M*N*P...多維向量。如果只寫(xiě)M,則生成M*M矩陣;如果參數(shù)為[M,N]可以省略掉方括號(hào)。一些例子:poissrnd(2,5,l)%生成5個(gè)隨機(jī)數(shù)排列的列向量,一般用這種格式poissrnd(2,5)%生成5行5列的隨機(jī)數(shù)矩陣poissrnd(2,[5,4])%生成一個(gè)5行4列的隨機(jī)數(shù)矩陣%注:上述語(yǔ)句生成的隨機(jī)數(shù)所服從的參數(shù)為(2)的泊松分布生成的隨機(jī)數(shù)大致的分布。x=poissrnd(2,100000,l);hist(x,50);其他離散分布還有超幾何分布(Hyper-geometric,函數(shù)是hygernd)等,詳細(xì)見(jiàn)Matlab幫助文檔。(六)特殊連續(xù)分布這里我將Matlab中沒(méi)有對(duì)應(yīng)函數(shù)的分布稱為特殊分布。有多種方法可以用于生產(chǎn)服從這些分布的隨機(jī)數(shù)。這里主要介紹兩種最常見(jiàn)的。1逆CDF函數(shù)法如果我們已知某特定一維分布的CDF函數(shù),經(jīng)過(guò)如下幾個(gè)步驟即可生成符合該分布的隨機(jī)數(shù)。(其中數(shù)學(xué)推導(dǎo)等在此處略去,詳見(jiàn)相關(guān)數(shù)學(xué)書(shū)籍)計(jì)算CDF函數(shù)的反函數(shù):生成服從(0,1)區(qū)間上均勻分布的初始隨機(jī)數(shù)a令x=,則x即服從我們需要的特定分布的隨機(jī)數(shù)。為了更形象解說(shuō)這種方法,這里選取柯西(Cauchy)分布作為例子。有時(shí)也稱其為洛侖茲分布或者Breit-Wigner分布??挛鞣植加幸淮筇攸c(diǎn)就是,它是肥尾(Fat-tai1,又譯作胖尾)分布。在金融市場(chǎng)中,肥尾分布越來(lái)越受到重視,因?yàn)樵趥鹘y(tǒng)的正態(tài)分布基本不考慮像當(dāng)前次貸危機(jī)等極端情況,而肥尾分布則能很好地將很極端的情形考慮進(jìn)去。上圖是Cauchy分布和標(biāo)準(zhǔn)正態(tài)分布PDF圖對(duì)比,看看是不是Cauchy分布的尾巴(x軸兩端)更“胖”一點(diǎn)?柯西分布的PDF函數(shù)是:簡(jiǎn)化起見(jiàn)我們只考慮xf=0,Y=1情形。此時(shí)PDF函數(shù)是:1PDF函數(shù)對(duì)x作積分,就得到CDF函數(shù)(推導(dǎo)過(guò)程略):現(xiàn)在我們套用這三個(gè)步驟來(lái)生成服從Cauchy分布的隨機(jī)數(shù):1.計(jì)算得到Cauchy分布CDF函數(shù)的反函數(shù)為:2?使用rand()函數(shù)生成(0,1)區(qū)間上均勻分布的初始隨機(jī)數(shù)。我習(xí)慣一次生成一堆這種隨機(jī)數(shù)。original_x=rand(l,100000);3.將初始隨機(jī)數(shù)代入CDF反函數(shù)即可得到我們需要的Cauchy隨機(jī)數(shù)。。cauchy_x二tan((original_xT/2)*pi);上面這兩句代碼結(jié)合起來(lái)就生成了10萬(wàn)個(gè)服從參數(shù)為(xfO,Y=1)Cauchy分布的隨機(jī)數(shù)。這種方法生成隨機(jī)數(shù)與Cauchy分布有多大相似之處呢?這里有一個(gè)圖可以說(shuō)明:藍(lán)色的圖形就是用hist畫(huà)出的隨機(jī)數(shù)的樣本分布情況,紅色線條是Cauchy分布理論的PDF圖形。由此可看出生成的隨機(jī)數(shù)挺符合Cauchy分布。注意:上圖中,我略去了x軸小于-12.5和大于12.5部分的圖形因?yàn)镃auchy是胖尾分布,會(huì)生成出的不少取值很大的隨機(jī)數(shù),而那些很大的值使得我們不方便用hist函數(shù)來(lái)畫(huà)隨機(jī)數(shù)分布圖。注意,這種方法本身雖然很簡(jiǎn)單,效率也很高,但有如下受限之處:它有個(gè)可能會(huì)出錯(cuò)的地方,有的CDF函數(shù)的反函數(shù)在0或者1處的值是正/負(fù)無(wú)窮,例如此處的Cauchy分布就是這樣,倘若用(0,1)均勻分布產(chǎn)生的初始隨機(jī)數(shù)中包含0或者1,那么這個(gè)程序會(huì)出錯(cuò)。幸運(yùn)的是,迄今為止,我用Matlab的rand()函數(shù)生成的隨機(jī)數(shù)中還沒(méi)有出現(xiàn)過(guò)0或者1。但不同版本的Matlab的這種情況也許會(huì)改變。此處提醒你,如果程序出錯(cuò),不要忘記檢查是否是這個(gè)錯(cuò)誤。CDF函數(shù)必須嚴(yán)格單調(diào)遞增,這也就意味著,PDF函數(shù)在x定義域內(nèi)必須處處嚴(yán)格大于零,否則CDF的反函數(shù)不存在。即使CDF函數(shù)存在,如果它太復(fù)雜,可能導(dǎo)致計(jì)算速度太慢,甚至無(wú)法計(jì)算的后果。2?接受/拒絕法Acceptance-RejectionMethodAccelptence-Rejection方法的精髓在于“形似”,可以形象地將其比喻為制作冰雕一—二者相同之處在于都要首先堆砌出雛形,然后再用將多出的部分削去。用此法生成服從f(x)分布的隨機(jī)數(shù),分為如下幾大步驟:?首先,選用某個(gè)分布,如pdf為g(x)的分布,此時(shí)要計(jì)算一個(gè)常數(shù)C,使得對(duì)x定義域內(nèi)任意的X都成立這相當(dāng)于使cg(x)圖形完全“覆蓋”住f(x)圖形,容易理解,做冰雕時(shí),最初堆出來(lái)的那堆冰塊要比最終得到的雕塑大。.生成服從pdf為g(x)分布的隨機(jī)數(shù),假設(shè)生成的隨機(jī)數(shù)為X。。再生成一個(gè)服從(0,1)間的均勻分布的隨機(jī)數(shù)y如果,丟棄生成的x0;反之,生成的x0就是我們需要的、服從f(x)分布的隨機(jī)數(shù)。下面用一個(gè)例子結(jié)合圖形解釋這種方法,假設(shè)我們要生成的分布加止;切是:,此pdf圖形如下圖的藍(lán)色曲線。我們選用(0,2)之間的均勻分布作為原始分布,即g(x)=0.5,此分布的pdf圖見(jiàn)下圖中的綠色線。由條件:無(wú)論哪個(gè)x,都要成立,我們計(jì)算得到c要大于等于10.8。這種情況下,我們一般選擇c=1.875。因?yàn)閏選得越大,意味著我們堆砌的原始雛形越大,需要削去的部分越多,效率越低,所以我們要使得c盡量地小。生成服從(0,2)之間的均勻分布的隨機(jī)數(shù),設(shè)它為x0X0二unifrnd(0,2);然后再生成一個(gè)服從(0,1)間的均勻分布的隨機(jī)數(shù)yY=rand;L"—"…'八4—'—'—"——"—"—'—如果,丟棄生成的x0,重新生成;反之,生成的x0就是我們需要的、服從f(x)分布白以上步驟每次只能處理一個(gè)隨機(jī)數(shù),效率較低,下面這段代碼可以一次性生成一堆隨機(jī)數(shù)。N=400000;c=1.875;gx=0.5x0=unifrnd(0,2,1,N);y=rand(1,N);fx0=(x0-0.5).*(x0-0.5)/2.4;

final_x=xO(y〈二fxO./c/gx);在視頻教程中我會(huì)逐句解釋每句含義,如果沒(méi)聽(tīng)懂,一般是因?yàn)槟銓?duì)Matlab向量運(yùn)算不熟悉,請(qǐng)參照Matlab基礎(chǔ)教程學(xué)習(xí)此部分的內(nèi)容,后面章節(jié)會(huì)有很多地方用得上。這段語(yǔ)句生成的變量final_x即為服從f(x)分布的隨機(jī)數(shù)組成的一個(gè)行向量。我們可以用hist查看這些隨機(jī)數(shù)大致的分布。hist(finalx,50);title('f(x)=(x-0.5)"2/2.4');如圖所示,生成的隨機(jī)數(shù)挺符合f(x)分布。這種方法很簡(jiǎn)單,也不需要計(jì)算CDF函數(shù)的反函數(shù),但它也有如下受限之處:由于我們用隨機(jī)數(shù)y來(lái)控制是否削去某個(gè)隨機(jī)數(shù)xO,所以我們無(wú)法準(zhǔn)確預(yù)知最終得到的隨機(jī)數(shù)數(shù)量多少。選擇合適的g(x)分布是此方法最關(guān)鍵的技巧所在。g(x)的選擇原則是在完全覆蓋f(x)的前提下盡可能與f(x)形似,二者形狀越相似,需要削去的部分就越少,這種方法的效率就越高。需要記住的是:很多時(shí)候,人們不選用這種方法的原因幾乎都在于它的效率過(guò)低。(七)特殊離散分布離散分布關(guān)鍵在獲得它的分布律,有了分布律我們計(jì)算骰子擲出點(diǎn)數(shù)小于等于某個(gè)數(shù)字的累積概率分布。一個(gè)簡(jiǎn)單的例子,假設(shè)我們有一個(gè)不均勻的骰子,獲得六個(gè)點(diǎn)數(shù)的概率分別是:點(diǎn)數(shù)123456概率00000.2.2.2累積點(diǎn)數(shù)<<<<<<123456累積概率00000.6.8生成符合該分布隨機(jī)數(shù)的步驟是:

生成一個(gè)(0,1)間均勻分布的隨機(jī)數(shù)X0。依據(jù)x0介于累積概率哪個(gè)區(qū)間來(lái)決定擲出骰子的點(diǎn)數(shù)x。如0vx0v=0.1,則點(diǎn)數(shù)x為1,0.8vx0v=1,點(diǎn)數(shù)x為6。代碼是xO=rand;Fx0<0.1x=1;IIelseifx0<0.3x=2;elseifx0<0.4x=3elseifx0<0.6x=4elseifx0<0.8x=5elsex=6end這段語(yǔ)句能生成一個(gè)服從上表中離散分布的隨機(jī)數(shù)x,如果生成多個(gè)x,可以用循環(huán)語(yǔ)句,也可以考慮將上述代碼向量化。下圖是我用上述代碼生成10萬(wàn)個(gè)隨機(jī)數(shù)所畫(huà)出的分布直方圖,可見(jiàn)這些隨機(jī)數(shù)很符合上表中的分布律。1J522J51J522J533L54+J5S5LS十七、生成多維聯(lián)合分布隨機(jī)數(shù)一維隨機(jī)變量是標(biāo)量(也就是指單獨(dú)的一個(gè)數(shù)字),而多維隨機(jī)變量是一個(gè)向量。一個(gè)n維隨機(jī)變量x是有n個(gè)分量的向量,(X,X,...,X),用f(X,X,...,X)表示聯(lián)合分布,用01n01nf(X)表示第k維的邊緣分布,用f(X|X=x,X=x=x,X=x,...,X=x)表示當(dāng)KKkk1122KTKTK+1K+1nn分量X=x,X=x,....X=x,X=x,...,X=x時(shí)第k個(gè)分量x的分布。這里大寫(xiě)X表示1122k-1k-1k+1k+1nnk隨機(jī)變量某個(gè)維度上的分量,小寫(xiě)x表示具體的數(shù)值。關(guān)于邊緣分布、條件分布、聯(lián)合分布一定要明白,這些都是基礎(chǔ)數(shù)學(xué)知識(shí),非本課程內(nèi)容。如果手頭沒(méi)有書(shū),通過(guò)google搜索或上維基百科臨陣磨槍也是可以的。各種生成多維分布隨機(jī)數(shù)的方法

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論