Echantillonnage bootstrapé

Voir le sujet précédent Voir le sujet suivant Aller en bas

Echantillonnage bootstrapé

Message par alexv62 le Lun 3 Juil 2017 - 7:17

Bonjour à tous, je post sur ce forum pour la première fois, j'espère que vous serez en mesure de m'aider..

Je vais essayer d'être clair.
J'ai un jeu de données de comptages d'oiseaux. Ces oiseaux ont été comptés sur des places (12 places qui sont les mêmes chaque année) chaque année :

ANNEE    Num_Place    Coq_certain
2008        20                   10
2008        23                    6
......x12
2009    
......x12
2016
......x12

Je souhaite essayer de simplifier le protocole en réalisant  les comptages des 12 places sur deux années et voir si j'arrive en moyenne à obtenir la même somme d'effectifs que si j'avais réaliser le comptage sur les 12 places en une année.

Pour ce faire, j'aimerai demander à R de me choisir 2 années, puis de faire un échantillonnage  de 6 places la 1ère année et des 6 autres places la deuxième année (donc vous l'aurez compris je ne veux pas tirer deux fois la même place) pour qu'il me fasse ensuite la somme des effectifs de ces deux années. Et pour finir, je souhaite faire un bootstrap pour avoir une moyenne de la somme des effectifs obtenus en deux ans afin de pouvoir la comparer avec la moyenne des effectifs obtenus en faisant le comptage des 12 places en 1 années (cette moyenne je l'ai).

Mais le soucis que j'ai, c'est que je ne suis pas bon en stat et en programmation.. Un ami m'a envoyé un début de script pour un autre cas plus simple mais quand j'essaye de l'adapter ça ne marche pas car ça aurait été trop simple ^^

Voila ce que j'ai pour l'instant..

Code:
dat <- read.table("place_bootstrap4_massif_entier 2008-2016_modifie.txt", sep = "\t", header = TRUE, stringsAsFactors = FALSE)

nboot <- 100
sommes <- numeric(nboot)

for (i in 1:nboot) {
  
  # on prepare un vecteur vide pour les places prises
  places_prises <- character()
  
  # tant qu'il n'y a pas 12 valeurs differentes dans ce vecteur, on fait ce qui
  # est dans la boucle 'while'
  while (length(unique(places_prises)) != 12) {
    # il faut re initialiser le vecteur au debut de chaque tour de boucle
    places_prises <- character()
    annees <- sample(unique(dat$ANNEE), 2, replace = FALSE)
  
    for (cette_annee in annees) {
      # pour chaque annee on prend une place au hasard
      cette_place <- sample(dat$Num_Place[dat$ANNEE == cette_annee], 6)
    
      # on la stocke dans le vecteur 'places_prises'
      places_prises <- c(places_prises, cette_place)
    }
    # ici le programme evalue la condition de la boucle 'while', si elle bonne
    # (donc 3 places differentes), on sort de la boucle, sinon on refait un tour
  }
  
  # on a reussi a avoir 12 places differentes donc maintenant on recupere les
  # valeurs de comptage dans le vecteur 'tous_coqs'
  tous_coqs <- numeric(12)
  for (j in 1:12) {
    tous_coqs[j] <- dat$Coq_certain[dat$ANNEE == annees[j] & dat$Num_Place == places_prises[j]]
  }
  
  # et on fait la somme qu'on met dans le vecteur de sommes, puis on fait le
  # prochain tour de bootstrap
  sommes[i] <- sum(tous_coqs)
}

mean(sommes)


abline(v=mean(sommes),col="red",lwd=3) # v = vertical et lwd = epaisseur de la ligne
# abline(v=mean(x),col="green",lwd=3,lty=2) # lty = pointillés

# on cherche le quantile à 2.5 et à 97.5 :

quantile(sommes,c(0.025,0.975)) #
abline(v=quantile(sommes,c(0.025,0.975)),col="blue",lty=3,lwd=2)


Merci d'avance pour l'aide que vous pourrez m'apporter Smile

alexv62

Nombre de messages : 4
Date d'inscription : 03/07/2017

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par alexv62 le Mer 5 Juil 2017 - 7:24

Bonjour, est-ce que quelqu'un peut m'aider svp?..

Ou au moins essayer de me donner des pistes à creuser?

Merci d'avance Smile

alexv62

Nombre de messages : 4
Date d'inscription : 03/07/2017

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par c@ssoulet le Mer 5 Juil 2017 - 13:46

Je pense que personne ne comprend ce que tu veux faire.

c@ssoulet

Nombre de messages : 730
Date d'inscription : 05/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par alexv62 le Mer 5 Juil 2017 - 15:53

ah d'accord..
Je souhaite, avec le jeu de données que j'ai (qui sont des comptages annuels), simuler le comptage des 12 places sur deux ans au lieu d'un an et voir si j'arrive à obtenir en moyenne les mêmes effectifs.
Donc pour cela, je pensais faire une sélection aléatoire de deux années parmi les 8 et au sein de ces deux années, demander a R d'échantilloner aléatoirement 6 places de la 1ere année et les 6 autres places de la 2 eme année.
Pour obtenir un comptage des 12 places sur deux ans et répéter ça par bootstrap pour voir si en moyenne j'obtiens des effectifs proches de ce que j'ai dans mon jeu de donnée sur une année ou pas.

Est-ce plus clair?

alexv62

Nombre de messages : 4
Date d'inscription : 03/07/2017

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par Eric Wajnberg le Mer 5 Juil 2017 - 16:45

Je ne sais pas si cette information peut aider, mais il y a un package "bootstrap" dans R qui fait tout ceci, sans avoir à tout recoder, je pense.

HTH, Eric.
avatar
Eric Wajnberg

Nombre de messages : 557
Date d'inscription : 14/09/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par alexv62 le Jeu 6 Juil 2017 - 7:12

Oui, je l'ai vu celui-là, en fait c'est plus la partie codage de l'échantillonnage que j'ai décris au dessus qui me pose problème (avec les boucle while, for...)

alexv62

Nombre de messages : 4
Date d'inscription : 03/07/2017

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Echantillonnage bootstrapé

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum