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 :

Tester tous les termes d'interaction


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Tester tous les termes d'interaction
    Bonjour à tous,

    Je recherche une solution pour estimer et tester tous les termes d'interaction dans un modèle de régression linéaire et/ou logistique.
    En effet, je pourrais tester les effets un à un mais quand on a beaucoup de variables, il y a beaucoup trop de termes d'interactions possibles, et je pense qu'il y a une solution bien plus rapide.

    En admettant que je souhaite tester les 8 premières variables de mon data frame, j'ai deux pistes :



    -> une boucle (mais celles-ci ne me sont pas encore très familières, j'ai donc forcément commis une erreur mais je ne sais pas où...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for ( i in c(1:8)) {
      for (j in c(1:8)){
      if (i !=j){
        modele<-lm(data$X~data$a+data$b+data$c+data$d+data$e+data$f+data$g+data$h+data[,i]*data[,j])
        drop<-drop1(modele,.~.,test="F")
      }
      else {}
      }
    }
    J'obtiens alors une sortie classique avec 3 lignes supplémentaires :

    data[, i] NA NA NA NA
    data[, j] NA NA NA NA
    data[, i]:data[, j] -1.223e-04 9.214e-05 -1.328 0.185295


    -> une méthode lue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    modele<- lm (data$X~data$a+data$b+data$c+data$d+data$e+data$f+data$g+data$h)
     
    modele.inter<-data.frame(add1(modele,~.^2, test="Chisq"))
    isort<- order(M.inter["Pr..Chi."])
    modele.inter[isort,]
    La sortie ici est pas mal, je pense être sur la bonne voie mais (malheureusement) rien n'est significatif et cela ne correspond pas avec le résultat attendu compte tenu de mes données...
    Dois-je récupérer une partie des interactions avec, par exemple, p<0,20 et les mettre dans mon modèle ?
    Ou me conseillez-vous plutôt une méthode pas à pas malgré sa longueur ?

    Merci par avance pour votre aide !

  2. #2
    Membre éclairé
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Points : 793
    Points
    793
    Par défaut
    D'abord un peu de syntaxe :
    Il faut toujours penser à simplifier la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modele<- lm (data$X~data$a+data$b+data$c+data$d+data$e+data$f+data$g+data$h)
    peut s'écrire de manière plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # Si une partie des colonnes sont utilisees
    modele <- lm( X ~ a + b + c + d + e + f + g + h, data=data)
     
    # Si la régression prend en compte toutes les colonnes
    modele <- lm( X ~ ., data=data)
    Ensuite, il existe une fonction step pour faire de la recherche pas-à-pas. On peut aussi utiliser stepAIC du package MASS qui a la même syntaxe mais qui n'utilise pas le même critère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modele.opt <- step( modele, scope=list( upper=~ .^2))

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Merci pour ta réponse.
    Je reviens un peu tard et finalement, après vérification, la seconde méthode fonctionne bien, et les données donnent des IA non significatives... Je recherchais donc désespérément une erreur pour rien

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

Discussions similaires

  1. Tester tous les cas de présence ou non de 3 chaînes dans un fichier !
    Par bras39 dans le forum Shell et commandes GNU
    Réponses: 27
    Dernier message: 14/11/2011, 01h40
  2. Tester tous les champs d'une table ?
    Par wahab2052 dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 23/10/2009, 16h05
  3. Prendre tous les termes d'une ListBox dans une requête
    Par amirad dans le forum Windows Forms
    Réponses: 1
    Dernier message: 31/05/2009, 20h31
  4. Initialiser tous les termes d'une matrice à 0
    Par Riowen dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/05/2008, 11h46
  5. Réponses: 9
    Dernier message: 23/11/2007, 10h47

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