Intervalles de confiance incidences, fonction glm

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

Lotfi Dahmane
Messages : 2
Enregistré le : 03 Avr 2019, 14:35

Intervalles de confiance incidences, fonction glm

Messagepar Lotfi Dahmane » 03 Avr 2019, 17:17

Bonjour,

Je suis nouveau sur R, ainsi que sur le forum. Je tiens à l'avance à m'excuser si la façon dont je présente le problème n'est pas optimale, mais ceci est mon premier message. N'hésitez pas à dire ce que je dois corriger dans la forme notamment.

Je dispose d'un dataframe avec chaque ligne correspondant à une bactérie, une année, un département, plusieurs incidences. Les colonnes correspondent à l'année, le département, le nom de bactérie, incidence 1, incidence 2, incidence 3, effectif 1, effectif 2, effectif 3, population.

Voici un exemple où je réduit un peu les données :

Code : Tout sélectionner

df <- data.frame(annee=c(2013,2013, 2013,2013), departement=c(92,92,92,92), bacterie=c("Pneumo","Pneumo","Pneumo","Pneumo"), I1=c(0.2, 4.8, 2, 3.8),
                   I2=c(3, 5, 0, 8), eff1=c(2, 15,8, 9), eff2=c(9, 18, 0, 22), population=c(298012, 298012,298012,298012))


Ce qui donne le tableau suivant :

Code : Tout sélectionner

annee departement bacterie  I1 I2 eff1 eff2 population
1  2013          92   Pneumo 0.2  3    2    9     298012
2  2013          92   Pneumo 4.8  5   15   18     298012
3  2013          92   Pneumo 2.0  0    8    0     298012
4  2013          92   Pneumo 3.8  8    9   22     298012


Je souhaite avoir l'intervalle de confiance de chaque taux d'incidence (1, 2 et 3). Je n'ai pas un gros bagage stat malheureusement, mais j'ai eu la confirmation par mon encadrant qu'il fallait que j'utilise la loi de poisson pour effectuer le calcul de l'intervalle de confiance. Pour cela, j'ai fait mes petites recherches, et j'ai trouvé la fonction glm qui semble correspondre à ce que je dois produire. J'ai donc utilisé le code suivant :

Code : Tout sélectionner

n <- 65
d <- 860815
fit <- glm(n~offset(log(d)), family=poisson)
100000*exp(confint(fit))


Ne sachant pas comment faire les intervalles de confiance pour toutes les lignes de façon automatisée, j'ai donc dû taper, à la main, chaque effectif (n) avec la population correspondante (d), faire tourner la commande, et rentrer à la main l'intervalle de confiance dans ma base Excel... Ceci pour une seule colonne d'incidence (en sachant qu'il y en a trois. Je n'ai pas fait les deux autres (il y a plus d'une centaine de lignes).
J'ai cherché un moyen de rendre la tâche plus facile, mais je n'y suis pas arrivé. Je me suis donc inscrit ici pour savoir si vous pouviez m'aider à coder la chose, ce qui permettrait de m'aider dans mon travail, mais surtout de me faire progresser dans le codage R.

L'autre question, mais qui reste secondaire, c'est que je souhaite réaliser les courbes d'incidence en fonction des années, pour chaque bactérie, et chaque département.
J'ai donc commencé par faire un subset de mon dataframe, en ne sélectionnant les chiffres que pour une seule bactérie. J'obtiens donc 6 fois moins de lignes (car 6 bactéries différentes à traiter) dans mon tableau, avec autant de variables. Ca ne doit pas être le plus pratique, ni le plus rapide, mais encore une fois, étant débutant sur R, j'essaie de faire ce que je peux avec mes propres moyen ^^
Ensuite j'utilise le code suivant :

Code : Tout sélectionner

qplot(x=annee, y=incidepi, data = ECpopHa) +
  geom_point()+geom_line()+
  facet_grid(~ departement)+
  theme_bw()


Ainsi, j'obtiens 4 courbes mises côte à côte, traçant l'incidence d'une bactérie (y) en fonction de l'année (x). Chaque courbe correspond à un département (4).
Si j'arrive à obtenir les intervalles de confiance, j'aimerais savoir s'il est possible au niveau de chaque point (seulement 5 par courbe), de tracer un intervalle de confiance vertical, afin de mieux visualiser les choses.

Idéalement, mais ça c'est vraiment pas au programme tout de suite, j'aimerais si possible, pour chaque bactérie, sur chacun des 4 départements, avoir à chaque fois 3 courbes cumulées, correspondant aux 3 incidences différentes. Jusque là, ma commande me permet, pour chaque bactérie, de tracer 4 courbes, 1 par département donc, mises côte à côte, mais je recommence le code pour chaque bactérie, ainsi que pour chaque incidence (1, 2 et 3), ce qui me fait 6 x 3 = 18 commandes à faire tourner. Ca n'est pas commode mais pour l'instant c'est ce qui m'a permis d'avancer.


Voilà. Si je présente mal le problème n'hésitez pas à me poser d'autres questions.

Un grand merci à ceux qui pourront, je l'espère, m'aider dans mon apprentissage.

Lotfi.

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: Intervalles de confiance incidences, fonction glm

Messagepar François Bonnot » 04 Avr 2019, 06:24

je n'ai pas encore compris comment reproduire des dataframe sur le forum

Bonjour,
Sous réserve que votre data frame ne dépasse pas quelques centaines de lignes :
http://forums.cirad.fr/logiciel-R/viewtopic.php?f=1&t=3302
François

Lotfi Dahmane
Messages : 2
Enregistré le : 03 Avr 2019, 14:35

Re: Intervalles de confiance incidences, fonction glm

Messagepar Lotfi Dahmane » 04 Avr 2019, 08:37

François Bonnot a écrit :
je n'ai pas encore compris comment reproduire des dataframe sur le forum

Bonjour,
Sous réserve que votre data frame ne dépasse pas quelques centaines de lignes :
http://forums.cirad.fr/logiciel-R/viewtopic.php?f=1&t=3302



Message édité, merci.


Retourner vers « Questions en cours »

Qui est en ligne

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