Bonjour à tous,
je reviens vers vous pour un nouveau problème concernant mon analyse sur les courbes de croissances, un peu plus compliqué cette fois.
Je possède un jeu de données avec de nombreux individus. Pour chacun de ces individus, je possède le poids pour différents âges suivant l’extrait de tableau ci-dessous :
Sur ce jeu de données, j’ai réussi à obtenir un script me permettant de faire fitter la courbe d’un modèle de croissance sur chaque individu et de récupérer les paramètres du modèle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ID Sex Age Weight M15N00010 Mal 0 41.2 M15N00010 Mal 1 39.3 M15N00010 Mal 2 42.3 M15N00010 Mal 3 46.3 M15N00010 Mal 4 53.4 M15N00010 Mal 5 71.5 .. M15N00012 Mal 0 37.3 M15N00012 Mal 1 34.6 M15N00012 Mal 2 36.3 M15N00012 Mal 3 39.7 M15N00012 Mal 4 47.5 M15N00012 Mal 5 47.3
Le script :
Ce qui me donne alors la sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 dataTestSubM<-read.table("TestSubsetM.txt",header=T) MMFfunc<-function(a,b,c,d,Age){(a*b+c*Age^d)/(b+Age^d)} startTestM=c(a=60,b=2376,c=1904,d=1.8) individus <- unique(dataTestSubM$ID) ; dummy <- rep(NA, length(individus)) resultat <- data.frame(ID=individus, a=dummy, b=dummy, c=dummy, d=dummy) resultat compteur <- 0 for(i in individus) {model <- nls(Weight~(a*b+c*Age^d)/(b+Age^d),start=startTestM, data=dataTestSubM, subset= ID==i,trace=TRUE) compteur <- compteur + 1 resultat[compteur,] <- c(i,coef(model))} resultat
J’aimerai à présent obtenir les coordonnées du point d’inflexion, encore une fois pour chaque individu. Pour d’autres modèles que celui-ci que j’utilise, ce point d’inflexion est directement caractérisé par un des paramètres. Malheureusement pour moi, le modèle qui correspond le mieux à mes données est différent. Je pensais donc passer par la méthode de la dérivée seconde pour retrouver ce point d’inflexion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ID a b c d 1 M15N00010 16.2395632915754 356.799398578187 1305.53520677308 1.43990147008223 2 M15N00012 49.030270721997 405.497708156275 581.118646640876 1.84670902621133
Une idée que j’ai eu (peut-être en aurait vous une meilleur ou saurez-vous m’aider à développer celle-ci) était de coder un nouveau dataframe avec en colonne : le nom de l’individu, l’âge de l’individu de 0 à 365 et le poids « théorique » de l’individu pour chaque âge, calculé grâce à l’équation de mon modèle et les coefficients spécifiques récupérés avec le code précédent.
Je pensais ensuite récupérer les coordonnées du point lorsque la dérivée seconde s’annule.
J’ai tenté de me débrouiller mais je ne parviens pas d’entrée de jeu à créer le nouveau dataframe et en essayant de réfléchir à la manière de coder le reste, je n’ai pas eu plus de succès.
Merci pour l’aide que vous pourrez m’apporter,
Aurélie
Partager