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 :

longueur d'un vecteur


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut longueur d'un vecteur
    Bonjour,
    j'ai un vecteur vect quand je l'affiche j'aurai
    Nom : vect.png
Affichages : 2998
Taille : 30,5 Ko
    normalement quand je tape length(vect) il me donne 46274
    alors qu'il donne 29917
    quel est le problème s'il vous plait ?
    merci infiniment d'avance pour toute réponse

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    Bonsoir,
    Quelle est la nature du vecteur?
    Contient-il des valeurs nulles (NA)?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Bonjour,
    Citation Envoyé par kmtdev Voir le message
    Bonsoir,
    Quelle est la nature du vecteur?
    Named num [1:29917] 0 0 0 0 0 0 0 0 0 0 ...
    - attr(*, "names")= chr [1:29917] "239" "240" "241" "242" ...

    Citation Envoyé par kmtdev Voir le message
    Contient-il des valeurs nulles (NA)?
    non pas de valeurs NA

  4. #4
    Membre émérite
    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
    Par défaut
    Je pense que le problème d'affichage provient des options d'affichage, notamment de l'option max.print, qui limitent le nombre de valeurs affichées à la console. Même si l'affichage est long, fait View( vect) qui affichera le vecteur dans une autre fenêtre au lieu de la console. Tu devrais bien avoir tes 29917 valeurs.

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Citation Envoyé par faubry Voir le message
    Je pense que le problème d'affichage provient des options d'affichage, notamment de l'option max.print, qui limitent le nombre de valeurs affichées à la console. Même si l'affichage est long, fait View( vect) qui affichera le vecteur dans une autre fenêtre au lieu de la console. Tu devrais bien avoir tes 29917 valeurs.
    bonjour, je ne cherche pas à voir le vecteur mais le problème est la longueur du vecteur quand j'affiche la dernière valeur elle a pour indice 46274 donc normalement la longuer du vecteur doit être égale à 46274 alors que si je tape length(vect) ça donne 29917 !

  6. #6
    Membre émérite
    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
    Par défaut
    J'avais regardé trop rapidement et ce n'est pas un problème de limites d'affichage. Le vecteur fait bien 29917 valeurs et ce sont ces 29917 valeurs qui sont affichées. Par contre chaque élément du vecteur a reçu un nom qui est une chaine de caractères codant un chiffre (attr( *, names) donné par str). Dans ce cas, R affiche au-dessus de la valeur de chacun des éléments son nom. Donc la valeur 46274 n'indique pas qu'il y a 46274 éléments dans le vecteur mais que le dernier élément a comme nom "46274". Tu peux récupérer ces noms par names( vect) et tu verras que ce vecteur de noms a aussi 29917 éléments.

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Citation Envoyé par faubry Voir le message
    J'avais regardé trop rapidement et ce n'est pas un problème de limites d'affichage. Le vecteur fait bien 29917 valeurs et ce sont ces 29917 valeurs qui sont affichées. Par contre chaque élément du vecteur a reçu un nom qui est une chaine de caractères codant un chiffre (attr( *, names) donné par str). Dans ce cas, R affiche au-dessus de la valeur de chacun des éléments son nom. Donc la valeur 46274 n'indique pas qu'il y a 46274 éléments dans le vecteur mais que le dernier élément a comme nom "46274". Tu peux récupérer ces noms par names( vect) et tu verras que ce vecteur de noms a aussi 29917 éléments.
    en fait moi je veux que le vecteur soit de 46274 en effet ce que je suis entrain de faire est une matrice de confusion pour déterminer le taux de bon classement
    d'individus
    ce que j'ai fait est d'abord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logit = glm(y ~ nbr1 + nbr2 + nbr3+de1+de2+de3, data = dat, family = "binomial")
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    proba=predict(logit,data=dat,type='response')
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vect= ifelse(proba>0.5,1,0)
    et enfin quand j'ai tappé la commande suivante
    il m'affiche un message d'erreur all arguments must have the same length
    et quand j'ai vérifié j'ai trouvé que et Que dois je faire s'il vous plait
    Merci infiniment d'avance pour toute réponse

  8. #8
    Membre émérite
    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
    Par défaut
    Si vect (ou proba) n'a pas une longueur égale au nombre de lignes de dat (longueur du vecteur dat$y), cela signifie qu'il y a des lignes pour lesquelles au moins un des colonnes utilisées dans l'analyse contient des NA. Pour les trouver, il suffit d'utiliser la fonction complete.cases à appliquer sur dat.

    Note : évites d'utiliser un nom de fonction qui, de plus, est utilisée par glm, comme résultat de l'analyse.

  9. #9
    Membre émérite
    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
    Par défaut
    predict ne prédit que les valeurs pour les lignes complètes, c'est-à-dire celles pour lesquelles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cs <- complete.cases( dat[,c( "nbr1", "nbr2", "de1", "de2", "de3"])
    est vrai.

    Le tableau de contingence se calcule alors par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table( dat$y[cs], vect)

  10. #10
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Bonjour, et merci. Est-ce que je peux remplacer les valeurs manquantes pour calculer sur toute la base ?
    Si oui comment ?
    Merci encore pour toute aide.

  11. #11
    Membre émérite
    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
    Par défaut
    est ce que je peux remplacer les valeurs manquantes pour calculer sur toute la base ?
    Quel est l'objectif de cette prédiction ? Si c'est simplement pour estimer les performances en termes de précision, ce n'est pas la bonne approche et il faut utiliser une approche par validation croisée. Si c'est pour avoir une idée de la réponse pour un ensemble de combinaisons des prédicteurs, pourquoi ne pas construire la grilles des combinaisons d'intérêt, par exemple en utilisant la fonction expand.grid ?

  12. #12
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Citation Envoyé par faubry Voir le message
    Quel est l'objectif de cette prédiction ? Si c'est simplement pour estimer les performances en termes de précision, ce n'est pas la bonne approche et il faut utiliser une approche par validation croisée. Si c'est pour avoir une idée de la réponse pour un ensemble de combinaisons des prédicteurs, pourquoi ne pas construire la grilles des combinaisons d'intérêt, par exemple en utilisant la fonction expand.grid ?
    j'ai pas compris le vocabulaire que vous avez utilisé , en effet, ce que je veux savoir est le taux de bon classement combien d'indiv appartient à la classe 1 après prédiction sachant qu'il est en classe 1 de même pour la classe 0 .

  13. #13
    Membre émérite
    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
    Par défaut
    Donc, l'objectif est d'estimer les performances du modèle en termes de classification, c'est-à-dire sa précision (accuracy en anglais). L'approche que tu utilises n'est pas bonne car il y a sur-apprentissage puisque l'échantillon de test (permettant de mesurer la précision) est le même que celui d'apprentissage. Il faut donc que tu utilises une méthode par validation croisée. Pour démarrer, tu peux consulter la page wikipedia sur le sujet. Ensuite, on peut compléter l'analyse des performances en utilisant les courbes ROC. Le package Zelig contient des procédures qui peuvent aussi aider à interpréter les résultats de l'analyse.

  14. #14
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    et est ce qu'on peut remplacer les valeurs NA par la moyenne( ou autre chose) si oui comment?

  15. #15
    Membre émérite
    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
    Par défaut
    est ce qu'on peut remplacer les valeurs NA par la moyenne( ou autre chose) si oui comment?
    Non. Les données n'existant pas on ne peut pas les inventer. De plus, comme je l'ai déjà dit dans mes réponses précédentes, la procédure que tu emploies pour calculer les performances de ton modèle n'est pas la bonne.

  16. #16
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    Citation Envoyé par faubry Voir le message
    Non. Les données n'existant pas on ne peut pas les inventer
    comment? déjà R m'a demandé d'utiliser la moyenne pour les val manquante en effet ya pas de colonne entière avec des NA non ?

  17. #17
    Membre émérite
    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
    Par défaut
    déjà R m'a demandé d'utiliser la moyenne pour les val manquante
    R ne demande rien. Il se peut que tu utilises une procédure donnée d'un certain package qui propose de remplacer les valeurs manquantes par les moyennes mais il est nécessaire que tu indiques quelle est cette procédure, de quel package elle est extraite et dans quel contexte elle est utilisée pour juger de la pertinence de cette imputation des valeurs manquantes.

    Si une des valeurs des prédicteurs manque, il est impossible de prédire un résultat dans ce cas. En effet, si le prédicteur a une influence sur la réponse, la réponse peut alors selon sa valeur (éventuellement combinée avec celle des autres prédicteurs), valoir 0 ou 1. Donc, dans le cas de la prédiction à partir de glm, on ne peut pas inventer des données qui n'existent pas.

  18. #18
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 185
    Par défaut
    le remplacement par la moyenne il l'utilise dans la fonction plot.pca voilà le message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    In PCA(dat, scale.unit=TRUE, graph=T, quali.sup=which( names( dat) == "y"):
      Missing values are imputed by the mean of the variable: you should use the imputePCA function of the missMDA package

  19. #19
    Membre émérite
    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
    Par défaut
    le remplacement par la moyenne il l'utilise dans la fonction plot.pca voilà le message
    De quel "il" parles-tu ? Ce n'est pas R qui est un simple langage de programmation. Ce remplacement des valeurs manquantes par la moyenne est codé dans la fonction PCA par l'équipe qui a écrit cette fonction. Ce choix du remplacement par la moyenne dans une ACP se justifie par des raisons théoriques trop longues à développer ici. Pour cela, je te renvoies aux ouvrages fondamentaux sur l'ACP.

    Cependant, cela ne signifie pas que ce type de remplacement se justifie aussi pour glm. C'est un traitement différent fondé sur des hypothèses et des critères très différents et pour lesquels le remplacement par la moyenne n'a pas de sens. Intuitivement, suppose qu'il te manque une valeur de y. Vas-tu la remplacer par mean( y, na.rm=TRUE) alors que par construction y ne peut valoir que 0 (absence du caractère) et 1 (présence du caractère). Cela n'a aucun sens. De même, suppose qu'on a une valeur z qui dépend linéairement de x, sous la forme z = x. J'ai 20 valeurs de z allant de 1:20 et 20 valeurs de x dont la première est manquante (c( NA, 2:20)). Vas-tu remplacer le x manquant par mean( x, na.rm=TRUE), c'est-à-dire 11 ? Non car dans le cas des modèles linéaires (généralisés ou non) ce type d'imputation des valeurs manquantes n'a pas de sens.

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/06/2012, 23h47
  2. Générer un Graph Plot, longueur de vecteur
    Par 1ma91nat10n dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/12/2011, 18h16
  3. Mélanger 2 vecteurs de même longueur
    Par ced dans le forum R
    Réponses: 2
    Dernier message: 20/06/2011, 09h11
  4. longueur d'un vecteur
    Par rom44 dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 28/08/2010, 22h33

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