Erreur pour exécution d'un s.class (package ade4)

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

Nicolas Breil
Messages : 1
Enregistré le : 08 Juin 2018, 14:24

Erreur pour exécution d'un s.class (package ade4)

Messagepar Nicolas Breil » 20 Fév 2019, 15:10

Bonjour,
Voici mon problème :
Cela fait plusieurs jours que j'essaie de faire un graphique s.class à l'aide du package ade4.
Je voudrais représenter mes variables en fonction d'un facteur à deux modalités.
Lorsque j'exécute le code suivant, un message d'erreur apparait :

Code : Tout sélectionner

acp1 <- dudi.pca(na.omit(var_c2018[,c(2:17)]),
                center=T,
                scale=T,
                scannf=F,
                nf=2)
color <- c("#CC6666","#00CCCC")
s.class(acp1$li, as.factor(var_c2018$id_agri), col=color)


Error in as.matrix(t(dfdistri)) %*% dfxy[, xax] :
non-conformable arguments


Notez que mon acp s'exécute sans soucis.
Le problème arrive au moment de l'exécution de la commande s.class(...
Je peux vous fournir un échantillon de mes données si nécessaire.
Pour résumer mon jeu de donnée, il s'agit d'un ensemble de variables quantitatives récupérées sur deux parcelles conjointes.
La première colonne du jeu indique la parcelle ("id_agri"), les autres colonnes étant les variables.
En espérant que l'un de vous saura m'apporter une aide,
Bonne fin de journée à vous,
Amicalement,
Nicolas BREIL

Gabriel Terraz
Messages : 535
Enregistré le : 26 Sep 2011, 15:11

Re: Erreur pour exécution d'un s.class (package ade4)

Messagepar Gabriel Terraz » 20 Fév 2019, 17:44

Bonjour,

C'est un problème lié au fait d'exclure des lignes contenant des NA. Le facteur groupe ne fait donc pas la même longueur que le tableau initial.

Code : Tout sélectionner

df <- data.frame(grp = rep(1:2, each =7), a = rnorm(14), b = rnorm(14), c = rnorm(14))
df[2,3] <- NA
pca <- dudi.pca(na.omit(df[,-1]), nf = 2, scannf = F)
Error in as.matrix(t(dfdistri)) %*% dfxy[, xax] : arguments inadéquats


Tu peux faire ça :

Code : Tout sélectionner

s.class(pca$li, factor(df$grp[complete.cases(df)]))


Ou mettre les données manquantes à la moyenne de la colonne (attention je fais l'hypothèse que tu n'as pas de données manquantes dans la colonne groupe)

Code : Tout sélectionner

df2 <- apply(df, 2, function(x) ifelse(is.na(x), mean(x, na.rm = T), x))


Retourner vers « Questions en cours »

Qui est en ligne

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