Comparaison de plusieurs proportions

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 Poulin
Messages : 28
Enregistré le : 19 Nov 2008, 16:45

Comparaison de plusieurs proportions

Messagepar Nicolas Poulin » 29 Juil 2009, 13:05

Bonjour,
je souhaite comparer la proportion de femelles dans 7 groupes distincts. Le nombre de femelles de chaque groupe se trouve dans la variable numbF et l'effectif total de chaque groupe dans la variable numbT :

Code : Tout sélectionner

numbF<-c(54,210,124,135,209,221,229)
numbT<-c(90,481,298,300,449,450,447)


J'utilise la fonction prop.test pour effectuer cette comparaison :

Code : Tout sélectionner

prop.test(numbF,numbT)# significatif  X-squared = 16.2711, df = 6, p-value = 0.01237

Il existe donc au moins une des proportions qui est significativement différente des autres. Reste à déterminer quelles proportions peuvent être considérées identiques et quelles sont celles qui sont significativement différentes. Il y a donc 21 tests de comparaison de 2 proportions observées à effectuer. Je pense que comme ces tests viennent à la suite d'un test sur l'ensemble des proportions, il faut faire une correction en ce qui concerne le seuil alpha. La correction de Bonferroni et celle de Sidak donnent toutes 2 des seuils d'environ 0.0024.
Voici les tests concernant le groupe avec la proportion observée la plus élevée.

Code : Tout sélectionner

prop.test(c(54,210),n=c(90,481))
prop.test(c(54,124),n=c(90,298))
prop.test(c(54,135),n=c(90,300))
prop.test(c(54,209),n=c(90,449))
prop.test(c(54,221),n=c(90,450))
prop.test(c(54,229),n=c(90,447))


La plus petite p-value que j'obtiens est 0.003203 (pour le deuxième test dans la liste ci-dessus) qui reste supérieur à mon seuil corrigé.

Je possède le livre Statistiques avec R des PUR et il y a deux fiches à ce sujet. Dans l'une d'elles (la fiche 6.5 p 119) plusieurs proportions sont testées. La différence est significative pour l'exemple qui est présenté mais les auteurs ne font pas ensuite de tests 2 à 2 mais une comparaison que je qualifierai de "à l'oeil". Est-ce que cela signifie que l'on ne peut pas faire de comparaison 2 à 2 après un test sur plusieurs proportions?
Dans la fiche précédente, les auteurs disent qu'il est possible d'utiliser la fonction binom.test pour comparer 2 proportions. J'ai essayé pour voir si les p-values obtenues différeraient de celles obtenues avec prop.test mais n'ai pas réussi à utiliser correctement la fonction binom.test autrement que pour comparer une proportion observée à une proportion théorique. Est-ce que quelqu'un a une idée sur comment faire cela?
D'avance merci

jean lobry
Messages : 746
Enregistré le : 17 Jan 2008, 20:00
Contact :

Messagepar jean lobry » 29 Juil 2009, 15:25

Bonjour,

est-ce qu'une simple représentation graphique ne suffit pas à résumer l'information de ton jeu de données ?

Code : Tout sélectionner

numbF<-c(54,210,124,135,209,221,229)
numbT<-c(90,481,298,300,449,450,447)
n <- length(numbF)
res <- vector("list", n)
mins <- maxs <- numeric(n)
for(i in 1:n){
   res[[i]] <- prop.test(numbF[i], numbT[i])
   mins[i] <- res[[i]]$conf.int[1]
   maxs[i] <- res[[i]]$conf.int[2]
}
plot(1:n, numbF/numbT, ylim = c(min(mins), max(maxs)),
  pch = 19, las = 1, ylab = "Proportion", xlab = "Groupe",
  bty = "n", xaxt = "n",
  main = "Proportion de femelles")
arrows(1:n, mins, 1:n, maxs, code = 3, angle = 90, length = 0.1)
axis(1, col ="transparent")
abline(h = sum(numbF)/sum(numbT), lty = 2)


Amicalement,

Jean

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 30 Juil 2009, 09:46

Peut-être que les auteurs ne voulaient pas s'engager dans la correction du alpha requise par les test multiples ?..

Dans la fiche précédente, les auteurs disent qu'il est possible d'utiliser la fonction binom.test pour comparer 2 proportions. J'ai essayé pour voir si les p-values obtenues différeraient de celles obtenues avec prop.test mais n'ai pas réussi à utiliser correctement la fonction binom.test autrement que pour comparer une proportion observée à une proportion théorique. Est-ce que quelqu'un a une idée sur comment faire cela?


En effet je ne vois pas le rapport avec binom.test(), c'est plutot fisher.test()

Nicolas Poulin
Messages : 28
Enregistré le : 19 Nov 2008, 16:45

Messagepar Nicolas Poulin » 30 Juil 2009, 10:03

Merci à vous deux pour vos réponses.
J'ai opté pour la représentation graphique qui, c'est vrai parle d'elle même et est suffisante pour ce que je dois faire.
J'aurai pu y penser tout seul.
Désolé et encore merci

Stéphane Laurent
Messages : 1557
Enregistré le : 05 Déc 2006, 19:07

Messagepar Stéphane Laurent » 30 Juil 2009, 11:13

Touche bayésienne, avec les lois a posteriori de référence :

Code : Tout sélectionner

for(i in 1:7){
   bounds <- qbeta(c(2.5,97.5)/100,numbF[i]+0.5,numbT[i]-numbF[i]+0.5)
   x <- seq(bounds[1],bounds[2],length=50)
   y <- dbeta(x,numbF[i]+0.5,numbT[i]-numbF[i]+0.5)/20
   lines(y+i,x,lty=2,col=2)
}


Image

Elise Tancoigne
Messages : 4
Enregistré le : 09 Sep 2009, 14:18

comparaison de plusieurs proportions - d'autres solutions ?

Messagepar Elise Tancoigne » 09 Sep 2009, 15:09

Bonjour,

je suis dans le même cas de figure que N. Poulin, mais la réponse graphique ne me convient pas.
Y-a-t-il d'autres solutions que de faire un à un les tests de comparaison deux à deux ?

Je n'ai pas réussi à trouver d'autre documentation R sur ce sujet des comparaisons multiples de proportions.

Cordialement,

Elise

jean lobry
Messages : 746
Enregistré le : 17 Jan 2008, 20:00
Contact :

Re: comparaison de plusieurs proportions - d'autres solution

Messagepar jean lobry » 09 Sep 2009, 15:20

Elise Tancoigne a écrit :je suis dans le même cas de figure que N. Poulin, mais la réponse graphique ne me convient pas.

code ? Si tu veux de l'aide il faut donner le code permetant de reproduire ta figure. Voir ?dput pour les données.

Amicalement,

Jean

Elise Tancoigne
Messages : 4
Enregistré le : 09 Sep 2009, 14:18

Messagepar Elise Tancoigne » 09 Sep 2009, 16:51

Merci pour votre réponse.
Mes données sont un tableau de contingence concernant des espèces biologiques nouvellement décrites. On veut savoir, pour différents taxons, quels sexes sont connus lors de la description (les deux, mâle ou femelle seulement ; asexué ou hermaphrodite).

Code : Tout sélectionner

tot <-matrix(c(589, 199, 324, 62, 50, 10, 18, 24, 16, 5, 4, 115), nrow=3, ncol=4,
byrow=T, dimnames=list(c("arthropoda", "chordata", "other"),
c("Both", "Female", "Male", "Unknown")))


Les questions sont les suivantes :

1- est-ce que cela varie avec les taxons ?

Code : Tout sélectionner

chisq.test(tot)
chisq.test(tot[1:2,])
chisq.test(tot[1:3,])
chisq.test(tot[2:3,])

Les p-value sont très inférieures à 0.05 : j'en déduis que oui, cela varie avec les taxons.

2- quelles sont les catégories qui diffèrent, exactement, entre les taxons ?

"Lire à l'oeil", ou grâce à un graphique, ce qui est la même chose, me paraît incertain.
Donc, comment faire, sans avoir à faire les tests deux par deux ?

Code : Tout sélectionner

chisq.test(tot[1:2,c(1,2)])
chisq.test(tot[1:2,c(1,3)])
...

L'ennui est que j'ai beaucoup de tableaux du même type, et pas seulement celui-là...
Dois-je faire moi-même une fonction itérative, qui calcule automatiquement un seuil alpha, parcourt la matrice, et fait les tests au fur et à mesure ?

Merci !

Elise

Edit : Il y a un autre post sur le sujet, qu propose des méthodes complémentaires : viewtopic.php?t=326&highlight=fr%E9quences+marginales


Retourner vers « Questions en cours »

Qui est en ligne

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