Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Erreur AFC
4 participants
Page 1 sur 1
Erreur AFC
Bonjour,
Quelqu'un saurait me dire ce que veut dire ce message d'erreur, quand je fais lire mon script AFC ?
> z<-dudi.coa(df=matrice,scannf=F, nf=3)
Erreur dans matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, :
'data' doit être de type vecteur, il était 'NULL'
J'ai un tableau à deux entrées, une pour des types de milieux, l'autres pour des espèces d'araignées, avec présence/absence selon les milieux (1 ou 0).
Merci !
Quelqu'un saurait me dire ce que veut dire ce message d'erreur, quand je fais lire mon script AFC ?
> z<-dudi.coa(df=matrice,scannf=F, nf=3)
Erreur dans matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, :
'data' doit être de type vecteur, il était 'NULL'
J'ai un tableau à deux entrées, une pour des types de milieux, l'autres pour des espèces d'araignées, avec présence/absence selon les milieux (1 ou 0).
Merci !
durdurdur- Nombre de messages : 3
Date d'inscription : 12/07/2013
Re: Erreur AFC
Bonjour, si tu veux faire des ACM (ou AFC, c'est la même chose sauf qu'il y a deux variables), je te conseille de regarder les tutoriels de ce programmeur :
https://www.youtube.com/watch?v=ny4IxoLgdeY&list=PLnZgp6epRBbQu2QtCyqYL80In1P-A_Iud
N'oublie pas que pour l'AFC et l'ACM, il faut privilégier le codage de te variables en (1, 2, 3, ...) plutôt qu'en (0, 1, 2, ...).
R a tendance à ne pas digérer les "0".
C'est peut-être de là que vient ton problème.
https://www.youtube.com/watch?v=ny4IxoLgdeY&list=PLnZgp6epRBbQu2QtCyqYL80In1P-A_Iud
N'oublie pas que pour l'AFC et l'ACM, il faut privilégier le codage de te variables en (1, 2, 3, ...) plutôt qu'en (0, 1, 2, ...).
R a tendance à ne pas digérer les "0".
C'est peut-être de là que vient ton problème.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Erreur AFC
ce n'est pas un problème de 0 et il ne faut surtout pas recoder ta matrice de présence-absence si tu veux que ton AFC fonctionne !
Tout simplement est-ce que toutes tes colonnes sont en 0 et 1 ou est-ce que ta première colonne ne contient pas le nom ou le type des milieux ?
cdlt
Tout simplement est-ce que toutes tes colonnes sont en 0 et 1 ou est-ce que ta première colonne ne contient pas le nom ou le type des milieux ?
cdlt
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Erreur AFC
Pourquoi ne faut-il surtout pas recoder les 0 et 1 en 1 et 2 ?
Qu'est-ce que ça engendre étant donné que c'est du factoriel ?
Qu'est-ce que ça engendre étant donné que c'est du factoriel ?
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Erreur AFC
parce que l'AFC se fait sur un table de contingence et que tu calcules les fréquences relatives en ligne et en colonnes qui ne seront plus les memes, donc le tableau transformé ne sera pas le meme non plus donc les résultats ne seront pas les memes n'ont plus! Par contre pour une acm ça ne changera rien.
Pour s'en convaincre :
cdlt
Pour s'en convaincre :
- Code:
tab <- matrix(rbinom(100,1,0.5),20)
coa1 <- dudi.coa(tab, scannf=F)
coa2 <- dudi.coa(tab+1, scannf=F)
cor(coa1$li, coa2$li)
Axis1 Axis2
Axis1 -0.09404225 -0.89476931
Axis2 -0.93857326 0.07121361
# acm
tab2 <- as.data.frame(tab)
tab3 <- tab2+1
for (i in 1:ncol(tab2)) {
tab2[,i] <- as.factor(tab2[,i])
tab3[,i] <- as.factor(tab3[,i])
}
cor(dudi.acm(tab2, scannf=F)$li, dudi.acm(tab3, scannf=F)$li)
Axis1 Axis2
Axis1 1.00000e+00 -1.80602e-16
Axis2 -1.80602e-16 1.00000e+00
cdlt
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Erreur AFC
ça va complètement changer les fréquences marginales car R va comprendre les 1 et les 2 comme des fréquences absolues...donc complètement bouleverser l'AFC qui n'aura plus rien à voir avec le sens d'origine.Pourquoi ne faut-il surtout pas recoder les 0 et 1 en 1 et 2 ?
Comme le sous-entend Droopy, ici on a typiquement un pb de format des données dans le tableau. On peut suggérer à durdurdur de faire
- Code:
str(sontableau)
Et, je ne sais pas où tu as vu que R "a du mal à digérer les 0". C'est inexact.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Erreur AFC
Oui vous avez raison, je vois où se trouve ma confusion.
J'ai pour habitude d'utiliser un tableau de base avec variables x individus et non des tableaux de contingence pour les analyses en correspondances.
"R a du mal à digérer les 0" : je parlais des ACM
parfois tout bug à cause des 0 et il faut recoder un niveau au dessus.
J'ai pour habitude d'utiliser un tableau de base avec variables x individus et non des tableaux de contingence pour les analyses en correspondances.
"R a du mal à digérer les 0" : je parlais des ACM
parfois tout bug à cause des 0 et il faut recoder un niveau au dessus.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Erreur AFC
Je vois pas trop à quoi tu fais référence. Tant que tes variables sont bien des facteurs alors cela ne pose aucun souci car tout est pris en charge lors du passage en codage disjonctif complet (indicatrices)
ex :
Si tu as des problèmes c'est généralement qu'une des variables n'est pas de classe "factor". Du coup, tu ne peux pas avoir un passage en indicatrice car tout simplement tu n'as pas d'attribut "levels".
Bon après je ne prétend pas connaitre tous les cas mais là c'est assez bizarre.
ex :
- Code:
scatter(dudi.acm(data.frame(gl(5,20,labels=0:4),gl(10,10,labels=0:9),gl(4,25,labels=0:3)),scannf=F,nf=4))
Si tu as des problèmes c'est généralement qu'une des variables n'est pas de classe "factor". Du coup, tu ne peux pas avoir un passage en indicatrice car tout simplement tu n'as pas d'attribut "levels".
Bon après je ne prétend pas connaitre tous les cas mais là c'est assez bizarre.
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Erreur AFC
En faite, quand je parle de 0 et 1, je parle du codage des modalités de chaque variable.
Par exemple, j'utilise 0=non muté / 1=muté. J'ai donc mon tableau rempli :
var
id1 1
id2 0
id3 0
id4 1
et lorsque j'utilise le package factominer, je dois tout recoder un cran au dessus car les fonctions ne comprennent pas les 0.
var
id1 2
id2 1
id3 1
id4 2
res=FAMD(table,tab.comp=complete)
Moi personnellement je n'ai aucun soucis, je n'ai pas besoin d'aide à ce niveau là. C'est juste que je ne comprenais pas qu'il faille avoir des tableaux de contingence avec des fréquences des modalités.
Par exemple, j'utilise 0=non muté / 1=muté. J'ai donc mon tableau rempli :
var
id1 1
id2 0
id3 0
id4 1
et lorsque j'utilise le package factominer, je dois tout recoder un cran au dessus car les fonctions ne comprennent pas les 0.
var
id1 2
id2 1
id3 1
id4 2
res=FAMD(table,tab.comp=complete)
Moi personnellement je n'ai aucun soucis, je n'ai pas besoin d'aide à ce niveau là. C'est juste que je ne comprenais pas qu'il faille avoir des tableaux de contingence avec des fréquences des modalités.
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Erreur AFC
ah mais c'est pour ça...il faut utiliser des vrais packageset lorsque j'utilise le package factominer
Je plaisante bien sûr, je voudrais pas froisser les gens de Rennes
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Re: Erreur AFC
haha, en tout cas je te conseille très fortement ce package, j'ai utilisé ade4 et factominer et franchement y'a pas photo.
Beaucoup plus d'options sur factorminer, des interfaces spéciales pour la classification et bien plus encore !
Beaucoup plus d'options sur factorminer, des interfaces spéciales pour la classification et bien plus encore !
zezima- Nombre de messages : 939
Date d'inscription : 26/02/2013
Re: Erreur AFC
Pas si sûr...j'ai utilisé ade4 et factominer et franchement y'a pas photo.
FactomineR a un aspect sympa et pratique notamment pour les aspects graphiques mais est finalement pauvre en terme d'analyse voire même très pauvre.
Donc pour le plus d'options, c'est très relatif. Tout ce qui est dispo sous factomineR peut être refait sous ade4, l'inverse n'est pas vrai sauf au prix d'un effort de programmation qui s'approche plus du développement d'un package que de la "simple" programmation.
Mais on s'égare, on s'égare...
Mais que font les modos !!!
Nik- Nombre de messages : 1606
Date d'inscription : 23/05/2008
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum