Bonjour à tous, j'ai un projet de simulation en R à réaliser. Pour nous pousser à manipuler les méthodes vues en cours, on a pour consigne de n'utiliser AUCUNE librairie. Parmi les lois a simuler il y a celle ayant pour densité f dans mon code. J'ai réalisé une méthode de rejet en majorant par une loi expo que je sais facilement simuler. Je voulais savoir si vous aviez des conseils pour rendre ma simulation plus efficaces, ou même une approche différente. Merci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
f <- function(x,a,b,c,d,alpha,sigma){
 
  c*exp(-x/d)*(1 - alpha*cos(2*pi*(x-a)/sigma))
}
 
M <- function(c,d, alpha){
  c*(1+alpha)*d
}
 
rvol <- function(n, params){
 
  f_bis <- function(x){
      exp(-x/params$d)*(1 - params$alpha*cos(2*pi*(x-params$a)/params$sigma))
  }
 
  c <- 1/(integrate(f_bis, params$a, params$b)$value)
 
  simu <- function(u){
 
    repeat{
      v<- -(params$d)*log(1-runif(1, 1-exp(-(1/params$d)*params$a), 1-exp(-(1/params$d)*params$b)))
      w <- runif(1, 0, M(c, params$d, params$alpha))
      if (w <= f(v, params$a, params$b, c, params$d ,params$alpha, params$sigma)/dexp(v, 1/params$d) )
      {break}
    }
    u*v
  }
  z<-sapply(rep(1,n),simu)
  return(z)
 
 
}