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 :

apply et interactions entre variables


Sujet :

R

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut apply et interactions entre variables
    Salut à tous!

    J'ai 2 petits problèmes!

    Tout d'abord voici mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
    b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
    c=sample(1:2,100,rep=T,p=c(0.5,0.5))
    mantelhaen.test(b,c,a)
    Je suis avec 3 variables et je fais dessus un test de Mantel. J'aimerais répéter ce test 1000 fois et je voudrais calculer le nombre de fois où ma p-valeur est > 0.05. Je pensais utilisier une fonction apply mais je ne vois pas trop comment faire...

    Puis j'aimerais savoir comment faire pour mettre une interaction entre mes variables (puisque ci-dessus, elles sont tirées indépendemment). Sauriez-vous comment lier les 3 variables en même temps?
    En vous remerciant par avance pour vos idées!!!

  2. #2
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Tout d'abord voici mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
    b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
    c=sample(1:2,100,rep=T,p=c(0.5,0.5))
    mantelhaen.test(b,c,a)
    Je suis avec 3 variables et je fais dessus un test de Mantel. J'aimerais répéter ce test 1000 fois et je voudrais calculer le nombre de fois où ma p-valeur est > 0.05. Je pensais utilisier une fonction apply mais je ne vois pas trop comment faire...
    Bonjour,
    si j'ai bien compris l'idée, on peut récupérer les 1000 p-valeurs comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     m <- rep(0,1000)
    m <- sapply(1:1000, function(i){
                       a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       c=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       m[i] <- mantelhaen.test(b,c,a)$p.value})
    Puis, on teste si ces p-valeurs sont supérieures à 0.05:
    C'est certainement perfectible...

    Bonne continuation

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Un grand merci Lilly pour la réponse à ma première question, c'est parfait!!!

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Une autre question :
    je cherche à calculer le nombre de fois où les différentes combinaisons peuvent apparaître. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       d=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       tab <- data.frame(a,b,d)
                       som=rep(1,100)
                       ressom=aggregate(som,tab,sum)
    Je veux, comme précédemment, cette fonction un certain nombre de fois. J'ai donc essayé la fonction sapply de Lilly:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    m <- rep(0,1000)
    m <- sapply(1:1000, function(i){
                       a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       d=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       tab <- data.frame(a,b,d)
                       som=rep(1,100)
                       ressom[i]=aggregate(som,tab,sum)})
    Or ce code me renvoie une erreur et je ne comprends pas pourquoi...

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Citation Envoyé par NemoParis Voir le message
    Une autre question :
    je cherche à calculer le nombre de fois où les différentes combinaisons peuvent apparaître. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       d=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       tab <- data.frame(a,b,d)
                       som=rep(1,100)
                       ressom=aggregate(som,tab,sum)
    Je veux, comme précédemment, cette fonction un certain nombre de fois. J'ai donc essayé la fonction sapply de Lilly:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    m <- rep(0,1000)
    m <- sapply(1:1000, function(i){
                       a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       d=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       tab <- data.frame(a,b,d)
                       som=rep(1,100)
                       ressom[i]=aggregate(som,tab,sum)})
    Or ce code me renvoie une erreur et je ne comprends pas pourquoi...
    Bonsoir,
    votre code ne peut pas tourner car vous avez laissé les "m" du code précédent alors que vous calculez un "ressom"

    Encore une fois, je pense que le code est perfectible, j'essaie simplement de corriger l'erreur:
    1/ en allégeant le code (le vecteur som est toujours le même, donc on le sort, non?)
    2/ en utilisant une liste car le problème de votre dernière ligne est d'inclure un data.frame dans un vecteur. Pour cela, je vous conseille de regarder les bases dans http://pbil.univ-lyon1.fr/R/cours/lang03.pdf

    Ce qui donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Test <- list()
    som=rep(1,100)
    Test <- sapply(1:100, function(i){
                       a=sample(1:3,100,rep=T,p=c(0.3,0.3,0.4))
                       b=sample(1:3,100,rep=T,p=c(0.33,0.33,0.34))
                       d=sample(1:2,100,rep=T,p=c(0.5,0.5))
                       tab <- data.frame(a,b,d)
                       Test[[i]] <- as.matrix(aggregate(som,tab,sum))})
    Voilà, j'espère vous avoir donné de quoi réfléchir...

    Bonne soirée

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 40
    Points : 41
    Points
    41
    Par défaut
    Merci pour la réponse Lilly!
    Je suis désolée de ne pas avoir vu une erreur aussi bête
    En revanche, le test me fait 100 tables or j'aimerais n'avoir qu'une seule table pour mes 100 simulations...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2014, 16h22
  2. proc mixed : interaction entre deux variables
    Par marlene2110 dans le forum SAS STAT
    Réponses: 4
    Dernier message: 14/06/2011, 16h24
  3. Réponses: 3
    Dernier message: 20/05/2010, 15h37
  4. Réponses: 6
    Dernier message: 08/04/2010, 17h19
  5. Appli web - interaction entre différents utilisateurs
    Par xufux dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 30/07/2008, 19h21

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