1. 程式人生 > 實用技巧 >R語言中的模擬過程和離散化:泊松過程和維納過程

R語言中的模擬過程和離散化:泊松過程和維納過程

原文連結:http://tecdat.cn/?p=17303

本文中,我們討論了一個將Poisson過程與Wiener過程結合在一起的最佳演算法的問題。實際上,為了生成泊松過程,我們總是習慣於模擬跳躍之間的持續時間。我們使用給定時間間隔內跳躍的均勻性,該條件取決於跳躍的次數。

首先,我們可以生成一個可能具有漂移的維納過程,然後在其旁邊,我們可以生成指數定律(這將對應於跳躍之間的時間),還可以生成跳躍幅度 。我們在這裡

要麼。我們首先通過注意

其中增量是高斯(均值和方差),並且彼此獨立。至於跳躍之間的持續時間,它們是獨立的平均指數定律。這是程式碼,

  1. n=1000
  2. h=1/n
  3. lambda=5
  4. set.seed(2)
  5. W=c(0,cumsum(rnorm(n,sd=sqrt(h))))
  6. W=rexp(100,lambda)
  7. N=sum(cumsum(W)<1)
  8. T=cumsum(W[1:N])
  9. X=-rexp(N)

問題是對於維納過程,我們必須離散化,而對於複合泊松過程,我們不能離散化。但是,他們有相同的時間範圍。第一種方法是建立trunc函式

  1. W[trunc(n*t)+1]+sum(X[T<=t])+lambda*t

然後視覺化

  1. L=Vectorize(Lt
  2. plot(u,L(u),type="l

另一種可能性是使用我在引言中提到的泊松過程的均勻性。因為泊松過程滿足一個特性:如果是第i個跳躍發生的日期,則有條件基於以下事實:,變數

對應於的訂單統計獨立變數,是均勻分佈

該屬性可在Wolff(1982)中找到。我們從一個(單個)跳躍開始,

即我們找到一個統一的分佈函式。然後,我們進行2跳,3跳等迭代。

這個想法的R翻譯很簡單

N=rpois(1,lambda)

然後,一種策略是離散化Poisson過程,與Wiener過程的時間步長相同,

  1. indice=trunc(T*n
  2. processus=W+cumsum(saut)+lambda*u

我們發現與以前相同的軌跡

通過此過程,我們不能在同一時間間隔內有兩次跳躍。泊松過程的特徵是

因此,極少有機會同時進行兩次跳躍,尤其是在時間步長較小的情況下。如果我們生成數千條軌跡,那麼一次出現問題的可能性就可以忽略不計。

有一個主意是採用離散均勻分佈,

T=c(0,sort(sample((1:(n-1)/n),size=N,replace=FALSE)))

以避免同時發生兩次跳躍。

為此,我們可以做一些測試。例如,生成一些模擬以具有一百次跳躍(因此兩次跳躍之間的持續時間為一百次),然後進行指數定律檢驗。

  1. VT=0
  2. for(ns in 1:20){
  3. N=rpois(1

我們在這裡做了20個迴圈

lambda=5

我想進行一百次觀察來進行檢驗。然後,我們可以進行指數擬合檢驗,

ks.test(VT[-1],"pexp",lambda)$p.value

如果我們重複很多次,則通過更改時間步長(或時間間隔的細分數),實際上,如果時間步長很大(在左下方),我們將通常拒絕,指數定律也是如此。但是很快,這是一個不成立的假設,

我們有兩個不錯的演算法來生成萊維過程。


最受歡迎的見解

1.R語言泊松Poisson迴歸模型分析案例

2.R語言進行數值模擬:模擬泊松迴歸模型

3.r語言泊松迴歸分析

4.R語言對布豐投針(蒲豐投針)實驗進行模擬和動態視覺化

5.用R語言模擬混合制排隊隨機服務排隊系統

6.GARCH(1,1),MA以及歷史模擬法的VaR比較

7.R語言做複雜金融產品的幾何布朗運動的模擬

8.R語言進行數值模擬:模擬泊松迴歸模型

9.R語言對巨災風險下的再保險合同定價研究案例:廣義線性模型和帕累託分佈Pareto distributions