library(poisson)
pois_gen <- function(lambda, time = 1000) {
return (
cumsum ( rpois(time, lambda) )
)
}
Теперь смоделируем 10 различных траекторий данного процесса:
time = 100
lambda = 2
graphics <- replicate(10, pois_gen(lambda, time))
matplot(graphics, type = "s", col = 1:10, lwd = 1, lty = 1, xlab = ("t"), ylab = ("N(t)"))
wiener_gen <- function(h, T) {
return(
cumsum ( rnorm(T/h, mean = 0, sd = h) )
)
}
Теперь смоделируем 10 различных траекторий данного процесса:
h = 0.01
T = 10
graphics <- replicate(10, wiener_gen(h, T))
matplot(graphics, type = "l", col = 1:10, lwd = 1, lty = 1, xlim = c(0, T), ylim = c(-0.1,0.1),xlab = ("t"), ylab = ("W(t)"))
3.Смоделируем геометрическое броуновское движение, которое задается следующим образом: \[dX_{t} = a X_{t} dt + s X_{t} dW_{t}, \] где \(W_{t}\) - винеровский процесс. Его решение есть \(X_{t} = X_{0}exp((a-\frac{s^2}{2})t+sW_{t})\): Для заданного начального условия и параметров зададим наш процесс:
s = 0.2
a = 0.15
x_0 = 1
func <- function(h, T, a, s) {
return (
x_0*exp ( (a - s^2/2)*seq(0,T,T/h) + s*wiener_gen(h,T) )
)
}
Смоделируем 20 траекторий данного процесса:
h = 0.01
T = 10
graphics3 <- replicate(20, func(h, T, a, s))
matplot(graphics3, type = "l", col = 1:20, lwd = 1.5, lty = 1)
Построим для них 95% доверительную область:
graphics3 <- cbind(graphics3,
apply(graphics3, 1, quantile, 0.975),
apply(graphics3, 1, quantile, 0.025)
)
matplot(graphics3, type = "l", col = c(rep("grey",20),"red","red"), lwd = c(rep(.8,20),2.5,2.5), lty = 1)