[Résolu] mettre des modalités aux facteurs

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

Tibo Neudin
Messages : 11
Enregistré le : 01 Avr 2016, 15:25

[Résolu] mettre des modalités aux facteurs

Messagepar Tibo Neudin » 08 Mar 2017, 13:17

Bonjour à tous,

Toujours dans l’otique d'apprendre à utiliser R (parce que je suis une quiche), je cherche à faire une ACM avec le package FactoMineR.

Il se trouve que j'ai trouvé des données venant de l'institutionnal Profiles Database (IDP) pour m'entrainer.

J'ai 17 variables pour chaque pays et ce sont toutes des variables qualitatives. Elles ont toutes un niveau entre 0 et 4.

J'ai essayé de faire une ACM avec res.mca=MCA() etc. Le problème est la réponse :

Code : Tout sélectionner

Error in dimnames(res) <- list(attributes(tab)$row.names, listModa) :
  length of 'dimnames' [2] not equal to array extent


Après avoir réfléchit j'ai essayé de connaitre le nombre de modalité (level ) des mes variables. (N.B: violence est le nom du doc) Or:

Code : Tout sélectionner

> sapply(violence, nlevels)
   Pays    Elec Popcorr Polcorr     Sec    Esec    Cona    Conp    Conc     Ref    Avio    Icon
     57       0       0       0       0       0       0       0       0       0       0       0
   Scon    Lcon    Popv    viop    Vioc    Vior
      0       0       0       0       0       0


C'est la première fois que j'utilise des données que je n'ai pas crées, mais je pensais que les modalités des facteurs étaient directement reprises par R (vu que mes données ont des niveaux de 0 à 4).

Voila mon problème: J'ai essayé de redonner les niveaux de facteurs à mes données:

Code : Tout sélectionner

> violence<-read.csv("violence_csv.csv", header = TRUE, sep=";", colClasses=c("numeric", "factor"))
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  scan() expected 'a real', got 'Angola'

(N.B: Angola est le premier nom de pays)
Je n'y arrive pas. Le nom des pays semble bloqué.

C'est surement une demande super idiote, mais je n'ai pas trouvé la réponse. (En faite ce sera une série de question^^)

Quelle est la commande pour mettre les niveaux aux variables?
colClasse n'est pas la bonne? (est-ce qu'on peut exclure une colonne? par exemple celle des pays)
De manière générale quand on charge des données vaut-il mieux les remettre aux bons niveaux? (sous-entendu ça ne se fait pas seul)
Est-ce bien ça qui m’empêche de faire une ACM?

Si la réponse existe et que j'ai mal cherché je vous présente mes excuses.

Par avance, Merci :)

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Debutant] mettre des modalités aux facteurs

Messagepar Serge Rapenne » 08 Mar 2017, 15:11

Bonjour,

Je pense que hormis la 1ere colonne de "violence", les colonnes ne sont pas définis comme des "factor"

Code : Tout sélectionner

dta<- data.frame(A=gl(3,4),B=gl(4,3),C=1:12) #dans ce data.frame les colonnes A et B sont des factors, C contient des entiers
sapply(dta,nlevels)
A B C
3 4 0
#je transforme C en factor
dta$C<-as.factor(toto$C)
sapply(dta,nlevels)
 A  B  C
 3  4 12


que donne

Code : Tout sélectionner

str(violence)

Serge

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: [Debutant] mettre des modalités aux facteurs

Messagepar Serge Rapenne » 08 Mar 2017, 15:15

Pour ne pas avoir à transformer les données en factor tu peux qd même compter les occurrences par colonne:

Code : Tout sélectionner

dta<-data.frame(A=gl(3,4),B=gl(4,3),C=1:12)
 sapply(dta,function(x) length(unique(x)))
A  B  C
 3  4 12

toto$C<-as.factor(toto$C)
sapply(dta,function(x) length(unique(x)))
A  B  C
 3  4 12


Serge

Tibo Neudin
Messages : 11
Enregistré le : 01 Avr 2016, 15:25

Re: [Debutant] mettre des modalités aux facteurs

Messagepar Tibo Neudin » 10 Mar 2017, 14:04

Hello,

Merci c'était bien ça.

J'ai pu faire mon ACM.

Mais j'ai deux nouvelles questions:
    J'ai fait 2 ACM: une où je déclare mes pays comme une variable illustrative et l'autre non: Lorsque je déclare pays comme illustrative, ma dimension1 à un pourcentage d'inertie plus fort. C'est une bonne idée de la déclarer en illustrative?

    Autre question: je voudrais voir si je peux améliorer l'ACM en ventilant (ou apurer, je ne sais pas trop comment on dit) je crois que la commande est, pour 2%, level.ventil=0.02 .Mais ça ne marche pas chez moi. (nous sommes d'accord ça s'utilise avec ACM?). Pour information: c'est parce que j'ai un pays(individu) particulier: le soudan. Etant pas super stable j'imagine qu'il joue beaucoup sur mes résultats

En tout qu'à c'est super sympa de pouvoir apprendre et s'améliorer.

En passant, peut être que je dois créer un nouveau sujet pour ces questions, et fermer celui-ci (le déclarer résolu)?

Merci :)

Edit: question très con....


Retourner vers « Questions en cours »

Qui est en ligne

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