IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Permutations aléatoires de données


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Par défaut Permutations aléatoires de données
    Bonjour à tous.

    Je possède un tableau de données de type ind*var, et je cherche à opérer des permutations aléatoires de ce tableau (nommons le tab1).
    Concrètement, je souhaite fixer un seuil de permutation x de façon à ce que dans mon tableau tab2, je retrouve mon tableau tab1 avec x% de données permutées au sein de chaque variable.
    Je ne souhaite pas ici conserver le fait qu'à un individus i1 correspond un profil ligne donné (c'est à dire que l'on permute sa valeur pour la variable p1 avec la valeur p1 d'un individus i2 sans permuter leurs valeurs de leurs autres variables).

    J'ai cherché via la fonction sample, mais elle me parait assez obscure...
    J'aurai besoin d'un coup de main, je n'attend pas, bien entendu, un joli code qui me tombe tout cuit dans la bouche, seulement un petit coup de pouce sur 1 ou 2 lignes de codes permettant la permutation de données à hauteur de x%.

    Merci d'avance!

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2010
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 74
    Par défaut
    Salut
    je viens de lire assez rapidement ta question, et elle est semble assez obscure......
    plus sérieusement, si tu veux obtenir plus rapidement de l'aide un exemple avec un jeu de donnée et le code que tu as essayé est indispensable.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Par défaut
    Je vais essayer d'illustrer avec un exemple fictif...
    Et en fait, pour faire plus simple, je ne considère qu'un vecteur de 100 données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    modif=0,05
    a_perturber<-seq(0,1,100)
    NbPermutation<-round((modif*length(a_perturber))/2)
    Je souhaite perturber les données par permutation à hauteur de "modif" (ici 5%, j'effectue donc NbPermutation (ici 3).

    Je cherche donc à permuter 3 couples de valeurs au sein de mon vecteur a_permuter. Je sais qu'une amie utilise la fonction sample pour extraire un échantillon d'individus à permuter, mais j'ai du mal à utiliser cette fonction.

    Pour la suite de mon problème, je ferai cela sur chacune de mes variables (je ne cherche pas ici à conserver la structure des données par lignes).

    J'espère que c'est plus clair,
    désolé si j'ai été un peu obscure quand j'ai posé mon problème.

    Merci d'avance!

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Il y a sûrement moyen de faire plus simple, mais en bidouillant à la main on peut par exemple faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > a_perturber<-sample(1:5,100,replace=TRUE)
    > modif<-0,05
    > NbPermutation<-round((modif*length(a_perturber))/2)
    > NbPermutation
    [1] 2
     
    > valeur_a_perturber<-sample(1:length(a_perturber),NbPermutation)
    > valeur_a_perturber
    [1] 57 80
    On va donc "perturber" les 57ème et 80ème valeurs du vecteur "a_perturber".
    Après, je ne sais pas ce que vous appellez "perturber" les valeurs, vous parlez de "permutation", donc est-ce que vous voulez par exemple faire une permutation circulaire (dans mon exemple par exemple, 1 devient 2, 2 devient 3, etc...)?
    Dans ce cas, on peut faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    > a_perturber[valeur_a_perturber[1]]
    [1] 3
    > a_perturber[valeur_a_perturber[2]]
    [1] 1
     
    > a_perturber[valeur_a_perturber[1]] <- (a_perturber[valeur_a_perturber[1]]+1)%%5
    > a_perturber[valeur_a_perturber[2]] <- (a_perturber[valeur_a_perturber[2]]+1)%%5
    > if(a_perturber[valeur_a_perturber[1]]==0) { a_perturber[valeur_a_perturber[1]]<-5 }
    > if(a_perturber[valeur_a_perturber[2]]==0) { a_perturber[valeur_a_perturber[2]]<-5 }
     
    > a_perturber[valeur_a_perturber[1]]
    [1] 4
    > a_perturber[valeur_a_perturber[2]]
    [1] 2
    Bon voilà, ce n'est pas du tout propre et je ne sais pas si ça correspond à ce que vous recherchez, mais c'est une idée qui m'est venue comme ça...

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2011
    Messages : 32
    Par défaut
    Merci beaucoup,
    j'ai pu comprendre comment fonctionnait la fonction sample du coup, et pu régler mon problème en changeant un peu la formulation de NbPermutations.

    En fait mon objectif était, avec les valeurs que tu trouves par exemple, d'échanger dans un tableau et pour une variable donnée (a_perturber dans l'exemple) la valeur de la ligne 57 avec la valeur de la ligne 80 (perturbation par permutation donc). Le tout en échangeant au final 5% des valeurs par variable.

    Merci encore,

    Hadrien

  6. #6
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Ok, je comprends mieux le sens de "permutation" ici.
    Bon eh bien, contente d'avoir pu apporter un peu d'aide alors

    Bien cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Répartition aléatoire de données
    Par lolo1960 dans le forum Access
    Réponses: 11
    Dernier message: 20/02/2014, 12h31
  2. [Tableaux] Permutation aléatoire de deux <table>
    Par s-c-a-r-a dans le forum Langage
    Réponses: 2
    Dernier message: 19/01/2009, 10h42
  3. Réponses: 9
    Dernier message: 21/05/2008, 14h56
  4. [MySQL] Perte aléatoire de données
    Par LAGARDETTE dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/12/2006, 13h13
  5. [VBA Excel] - Copie Aléatoire de données entre 2 feuilles
    Par ethan64 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2006, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo