Calcul d'un taux de mortalité

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

Julien Hirschinger
Messages : 7
Enregistré le : 22 Mai 2015, 23:38

Calcul d'un taux de mortalité

Messagepar Julien Hirschinger » 23 Juin 2021, 08:16

Bonjour,

Je cherche à calculer un taux de mortalité sur une période donnée.
Voilà un extrait de mon jeu de données:
Date accueil Devenir
11/01/2015 Relache
11/01/2015 Mort
27/01/2015 Relache
...
31/12/2020 Mort

En bref, je voudrais pouvoir calculer Nb(Devenir=Mort)/Nb(Devenir total) pour une période de temps donnée (un mois ou une année).
Ca doit surement être tout bête mais je ne trouve pas la solution ...
Merci d'avance pour vos éclairages.

Julien

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Calcul d'un taux de mortalité

Messagepar Mickael Canouil » 23 Juin 2021, 14:43

Bonjour,

ne sachant pas ce que veut dire "période donnée", j'ai considéré que cétait la totalité des données ...

Code : Tout sélectionner

prop.table(table(dta[, "Devenir"])) 

Le code n'est évidemment pas testé.

Si vous voulez une réponse plus détaillée, merci de préciser davantage et surtout de suivre les liens suivants :

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Julien Hirschinger
Messages : 7
Enregistré le : 22 Mai 2015, 23:38

Re: Calcul d'un taux de mortalité

Messagepar Julien Hirschinger » 29 Juin 2021, 13:52

Bonjour,
Merci pour cette première réponse.
Je pensais pourtant avoir été clair ...

Mon jeu de données (1717 lignes) se présente sous la forme suivante:
Date accueil Devenir
11/01/2015 Relache
11/01/2015 Mort
27/01/2015 Relache
...
31/12/2020 Mort

Il se compose comme suit (exemple des 6 premières lignes) :
df<-structure(list(Date.accueil = c("11/01/2015", "11/01/2015", "27/01/2015",
"18/02/2015", "05/03/2015", "25/03/2015"), Devenir = c("Relache",
"Mort", "Relache", "Relache", "Mort", "Mort")), row.names = c(NA,
6L), class = "data.frame")

Une période peut être un mois (exemple "01/2015") ou une année (exemple "2015").

Je cherche à calculer Taux de mortalité = Nb(Devenir=Mort)/Nb(Devenir=Mort+Relache) pour une période de temps donnée.
Exemple : Tx de mortalité 01/2015 = 1/3 = 0.33

J'espère avoir été plus clair.

Merci d'avance pour vos retours.

Julien

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

Re: Calcul d'un taux de mortalité

Messagepar Gabriel Terraz » 29 Juin 2021, 14:06

Bonjour,

Tout d'abord j'aurais tendance à transformer les date pour mieux les manipuler (pour extraire facilement les mois, années...) :

Code : Tout sélectionner

df$date <- as.Date(df$Date.accueil, format = "%d/%m/%Y")
df$mois <- months(df$date)
df$year <- format(df$date, format = "%Y")


Puis ensuite, si tu veux juste pour un intervalle donné :

Code : Tout sélectionner

sum(df$Devenir == "Mort" & df$mois == "janvier") / sum(df$mois == "janvier")

Attention, si dans ton jeu de données, tu as plusieurs années :)

Si tu veux calculer pour tous les mois :

Code : Tout sélectionner

tapply(df$Devenir, df$mois, function(i) sum(i == "Mort") / length(i))


Tu peux utiliser aggregate(), ave(), by() plutôt que tapply() selon ton besoin exacte

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Calcul d'un taux de mortalité

Messagepar Mickael Canouil » 30 Juin 2021, 07:42

Il suffit de filtrer comme vous voulez, à vous définir les périodes, en reprenant strictement votre exemple avec "janvier" comme étant la période.
Ensuite, il vous suffit de faire une boucle for (initialisée et non par affectation incrémentale) ou n'importe quelle fonction de la famille des *apply()

Code : Tout sélectionner

df<-structure(list(Date.accueil = c("11/01/2015", "11/01/2015", "27/01/2015",
"18/02/2015", "05/03/2015", "25/03/2015"), Devenir = c("Relache",
"Mort", "Relache", "Relache", "Mort", "Mort")), row.names = c(NA,
6L), class = "data.frame")

Code : Tout sélectionner

df[["Date.accueil"]] <- as.POSIXct(df[["Date.accueil"]], format = "%d/%m/%Y")
prop.table(table(
  df[months(df[["Date.accueil"]]) == "janvier", "Devenir"]
))
#> 
#>      Mort   Relache 
#> 0.3333333 0.6666667  


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Julien Hirschinger
Messages : 7
Enregistré le : 22 Mai 2015, 23:38

Re: Calcul d'un taux de mortalité

Messagepar Julien Hirschinger » 21 Sep 2021, 09:55

Désolé pour le temps de réponse, je me replonge juste dans ces analyses ...
Merci pour vos éclairages.
Julien


Retourner vers « Questions en cours »

Qui est en ligne

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