Boucle Chi2/Fisher

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

Mélanie Henriques
Messages : 7
Enregistré le : 27 Sep 2018, 11:51

Boucle Chi2/Fisher

Messagepar Mélanie Henriques » 28 Sep 2018, 10:21

Bonjour,
Je suis doctorante et j'ai vraiment beaucoup de mal avec R. Mon étude porte sur la distinction entre les chutes et les coups via la répartition, le nombre et le type de fracture présent sur le squelette.
Pour le moment, mon tableau excel comporte 259 individus (lignes) et 1148 variables (colonnes).
Sur les 1148, la 1ere colonne est le n° d'individu, la 2e l'âge, la 3e le sexe, la 4e le contexte (Chute/Coup), la 5e les détails du contexte (4mètre, Barre, Escaliers...) et toutes les autres données sont en 0: absent, 1: 1 fracture, 2: 2 fractures et plus.
J'aimerais pouvoir faire un test de Fisher et chi2 en boucle au vu de toutes ces données et ainsi avoir un p-value afin de déterminer quels critères sont liés à l'âge ou au sexe. J'ai déjà vu des discussions portant sur ces sujets mais rien ne marche dans mon cas.
Voici donc les manipulations que j'ai réalisées sur R mais en vain..Quelqu'un pourrait-il m'aider svp?

> library(readxl)
> test <- read_excel("~/Desktop/test.xlsx")
> View(test)
> edit(test)
> edit(test[,1:5])
> dim(test)
[1] 259 1148
> str(test)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 259 obs. of 1148 variables:
*R liste toutes mes données (au vu de leur taille, je vous épargne le liste !)
> for(i in 6:1148)test[,i]=as.factor(test[,i])
Error in sort.list(y) : 'x' doit être atomique pour 'sort.list'
Avez-vous appelé 'sort' sur une liste ?
> for (i in 6:1148) test[,i]=as.factor(test[,i])
Error in sort.list(y) : 'x' doit être atomique pour 'sort.list'
Avez-vous appelé 'sort' sur une liste ?
> sapply(test[,6:1148],function(x) chisq.test(test$Facteur,x)$statistic)
Show Traceback

Rerun with Debug
Error in chisq.test(test$Facteur, x) :
'x' et 'y' doivent avoir la même longueur De plus : Warning message:
Unknown column 'Facteur'
> sapply(Exemple[,6:1148],function(x) chisq.test(Exemple$Facteur,x)$statistic)
Error in lapply(X = X, FUN = FUN, ...) : objet 'Exemple' introuvable
> for (i in 6:1148) {chisq.test(test[,2],test$age)}
There were 50 or more warnings (use warnings() to see the first 50)
> warnings()... =
Erreur : unexpected symbol in "warnings()..."


En vous remerciant,
Mélanie

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Boucle Chi2/Fisher

Messagepar Pierre-Yves Berrard » 28 Sep 2018, 12:53

Bonjour,

Pour la première erreur qui apparaît :

Code : Tout sélectionner

> for(i in 6:1148)test[,i]=as.factor(test[,i])

Remplacer test[,i] par test[[i]].
(car test[,i] est un data.frame d'une seule colonne, donc une liste)
PY

Mélanie Henriques
Messages : 7
Enregistré le : 27 Sep 2018, 11:51

Re: Boucle Chi2/Fisher

Messagepar Mélanie Henriques » 28 Sep 2018, 13:05

Bonjour,
Merci pour votre réponse. Voici ce que m'indique R après modification du script:

> for(i in 6:1148)test[[,i]]=as.factor(test[[,i]])
Error in `[[.data.frame`(test, , i) :
l'argument "..1" est manquant, avec aucune valeur par défaut

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Boucle Chi2/Fisher

Messagepar Pierre-Yves Berrard » 28 Sep 2018, 13:23

Il y a une virgule en trop à l'intérieur des crochets.
PY

Mélanie Henriques
Messages : 7
Enregistré le : 27 Sep 2018, 11:51

Re: Boucle Chi2/Fisher

Messagepar Mélanie Henriques » 28 Sep 2018, 13:40

> for(i in 6:1148)test[[i]]=as.factor(test[[i]])
Error in .subset2(x, i, exact = exact) : indice hors limites


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité