Simulation échantillon

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Sophie Miallaret
Messages : 2
Enregistré le : 28 Jan 2019, 12:28

Simulation échantillon

Messagepar Sophie Miallaret » 28 Jan 2019, 14:45

Bonjour,
J'aimerais savoir s'il est possible avec R de simuler des données ayant la même distribution qu'un échantillon donné?
j'ai testé mon échantillon et il ne suit aucune loi connu.
On m'a parlé de méthode de rejet mais peut on l'appliquer à l'aide d'un échantillon ? Avec la fonction density() peut être?

Merci de votre aide...

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Simulation échantillon

Messagepar Logez Maxime » 30 Jan 2019, 08:57

Bonjour,

tu peux te servir d'une estimation de la densité de ta variable :

Code : Tout sélectionner

x <- c(rlnorm(100), rpois(100, 5), rnorm(100), rnorm(100, 3),
  rbinom(100, 1, 0.5), rbeta(100, 0.5, 5))

d1 <- density(x)

# les tirages aléatoires
ralea <- function(n, d) {
  px <- c(0, diff(d$x)*(d$y[-1]+d$y[-length(d$y)])/2)
  px <- cumsum(px)
  y <- runif(n)
  fun <- approxfun(d$x, px)
  fun2 <- function(x, a) fun(x) - a
  interv <- range(d$x)
  fun3 <- function(a) uniroot(fun2, interval = interv, a = a)$root
  res <- sapply(y,  fun3)
  res
  }
y <- ralea(1e3, d1)
 
library(ggplot2)
ggplot(data.frame(X = c(x,y), Ori = rep(c("x", "y"), c(length(x), length(y)))), aes(X, color = Ori)) + geom_density()
Cordialement,
Maxime

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: Simulation échantillon

Messagepar Eric Wajnberg » 30 Jan 2019, 12:39

Je ne sais pas pourquoi il s'agit ici de simuler des données qui ressemblent à un échantillon déjà existant, mais, au cas ceci correspondrait à ce que vous cherchez, on peut dans ce cas simuler des données en ré-échantillonant les données dans l'échantillon que vous avez, avec la fonction sample(). On peut même "jouer" avec l'argument "prob" de cette fonction pour faire des choses plus élaborés, etc.

HTH, Eric.

Sophie Miallaret
Messages : 2
Enregistré le : 28 Jan 2019, 12:28

Re: Simulation échantillon

Messagepar Sophie Miallaret » 01 Fév 2019, 08:51

Merci pour vos réponses, j'ai finalement utilisé l'estimation de la fonction de répartition et la méthode d'inversion de la fonction de répartition:

Code : Tout sélectionner

y <- c(rlnorm(100), rpois(100, 5), rnorm(100), rnorm(100, 3),
       rbinom(100, 1, 0.5), rbeta(100, 0.5, 5))

Ecdf(y)
p=Ecdf(y)

f=function(u){
  tempo=p$x[which(p$y>=u)]
  return(min(tempo))
}

x=0
uni=runif(10000,0,1)
for(kl in 1:length(uni)){
  x=c(x,f(uni[kl]))
}
x=x[-1]
plot(density(x))
lines(density(y),col=2)

ks.test(x,y)


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité