régression ordinale polr()

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

Chloé Magnin
Messages : 16
Enregistré le : 24 Avr 2017, 06:45

régression ordinale polr()

Messagepar Chloé Magnin » 30 Juil 2017, 15:43

Bonjour à tous,

je souhaiterais intégrer dans une fonction une régression ordinale sur deux variables avec la fonction polr().
Voici le code :

Code : Tout sélectionner

RegLog<-function(Data.log,col_Y,col_variety,col_rep){
    j2<-col_Y[1]-1
   
    fit.polr<-vector("list",length = length(col_Y))# Initialisation liste modeles
    summary.polr<-vector("list",length = length(col_Y))# Initialisation  liste Resumes

    for (j in col_Y){
    fit.polr[[j-j2]]<-polr(Data.log[,j]~Data.log[,col_variety]+Data.log[,col_rep],data=Data.log)# modeles polr
    summary.polr[[j-j2]]<-summary(fit.polr[[j-j2]])# resumes des modeles
    }
  }


col_Y est un vecteur regroupant les numéros de colonnes des variables d'intérêt. Lorsque je lance la fonction RegLog sur la fonction polr(), ça marche. Mais l'étape du summary non...
Fit.polr est une liste regroupant les deux modèles et summary.polr les résumés de chaque modèle.

L'erreur suivante est renvoyée :

Code : Tout sélectionner

Error in eval(expr, envir, enclos) : object 'Data.log' not found
Called from: eval(expr, envir, enclos)


Auriez-vous une explication et un moyen de remédier à ce problème?

Merci de votre aide,
Chloé

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

Re: régression ordinale polr()

Messagepar Logez Maxime » 31 Juil 2017, 09:24

Bonjour,

Dans ce genre de cas il est préférable de :
1. créer la formule dans une chaîne de caractères
2. la transformer en objet de classe formula en spécifiant l'environnement (local)
3. de se servir de cette formule dans le modèle

Code : Tout sélectionner

RegLog<-function(Data.log,col_Y,col_variety,col_rep){
    j2<-col_Y[1]-1
   
    fit.polr<-vector("list",length = length(col_Y))# Initialisation liste modeles
    summary.polr<-vector("list",length = length(col_Y))# Initialisation  liste Resumes

    coln <- colnames(Data.log)
    env <- environment()

    for (j in col_Y){
      form <- sprintf("%s ~ %s + %s, coln[j], coln[col_variety], coln[col_rep])
      form <- as.formula(form, envir = env)
      fit.polr[[j-j2]]<-polr(form, data = Data.log)# modeles polr
      summary.polr[[j-j2]] <- summary(fit.polr[[j-j2]])# resumes des modeles
    }
  # manque une ou des commandes pour renvoyer les résultats stockés
  }
Cordialement,
Maxime

Chloé Magnin
Messages : 16
Enregistré le : 24 Avr 2017, 06:45

Re: régression ordinale polr()

Messagepar Chloé Magnin » 02 Aoû 2017, 12:29

Merci pour cette indication Maxime ! ça marche!

Chloé


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité