Bonjour,
j'ai un vecteur vect quand je l'affiche j'aurai
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
Bonjour,
j'ai un vecteur vect quand je l'affiche j'aurai
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
Bonsoir,
Quelle est la nature du vecteur?
Contient-il des valeurs nulles (NA)?
Code : Sélectionner tout - Visualiser dans une fenêtre à part str(vect)
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.
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
puis
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')
et enfin quand j'ai tappé la commande suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part vect= ifelse(proba>0.5,1,0)
il m'affiche un message d'erreur all arguments must have the same length
Code : Sélectionner tout - Visualiser dans une fenêtre à part table(dat$y,vect)
et quand j'ai vérifié j'ai trouvé queet
Code : Sélectionner tout - Visualiser dans une fenêtre à part length(dat$y)=46274Que dois je faire s'il vous plait
Code : Sélectionner tout - Visualiser dans une fenêtre à part length(vect)=29917
Merci infiniment d'avance pour toute réponse
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.
predict ne prédit que les valeurs pour les lignes complètes, c'est-à-dire celles pour lesquelles :
est vrai.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cs <- complete.cases( dat[,c( "nbr1", "nbr2", "de1", "de2", "de3"])
Le tableau de contingence se calcule alors par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part table( dat$y[cs], vect)
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.
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 ?est ce que je peux remplacer les valeurs manquantes pour calculer sur toute la base ?
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.
et 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.est ce qu'on peut remplacer les valeurs NA par la moyenne( ou autre chose) si oui comment?
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.déjà R m'a demandé d'utiliser la moyenne pour les val manquante
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.
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
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.le remplacement par la moyenne il l'utilise dans la fonction plot.pca voilà le message
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.
Partager