J'ai quelques données où je voudrais adapter un modèle non linéaire à chaque sous-ensemble de données en utilisant nls, puis superposer les modèles ajustés sur un graphique des points de données en utilisant ggplot2. Plus précisément, le modèle est de la formeComment tracer la sortie d'un modèle nls dans ggplot2
y~V*x/(K+x)
que vous pouvez reconnaître comme Michaelis-Menten. Une façon d'y parvenir est d'utiliser geom_smooth, mais si j'utilise geom_smooth, je n'ai aucun moyen de récupérer les coefficients pour l'ajustement du modèle. Alternativement, je pourrais adapter les données en utilisant nls puis les lignes de tracé adaptées en utilisant geom_smooth, mais alors comment puis-je savoir que les courbes qui sont tracées par geom_smooth sont les mêmes que celles données par mon ajustement nls? Je ne peux pas passer les coefficients de mon nls à geom_smooth et lui dire de les utiliser à moins que je puisse obtenir geom_smooth pour utiliser seulement un sous-ensemble des données, alors je peux spécifier les paramètres de départ pour que ça fonctionne, mais ... fois que je l'ai essayé que je reçois une erreur de lecture comme suit:
Aesthetics must be either length 1 or the same as the data (8): x, y, colour
Voici quelques exemples de données maquillée J'utilise:
Concentration <- c(500.0,250.0,100.0,62.5,50.0,25.0,12.5,5.0,
500.0,250.0,100.0,62.5,50.0,25.0,12.5,5.0)
drug <- c(1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2)
rate <- c(1.889220,1.426500,0.864720,0.662210,0.564340,0.343140,0.181120,0.077170,
3.995055,3.011800,1.824505,1.397237,1.190078,0.723637,0.381865,0.162771)
file<-data.frame(Concentration,drug,rate)
où la concentration sera x dans mon intrigue et taux sera y; la drogue sera la variable de couleur. Si j'écris ce qui suit, j'obtiens cette erreur:
plot <- ggplot(file,aes(x=file[,1],y=file[,3],color=Compound))+geom_point()
plot<-plot+geom_smooth(data=subset(file,file[,2]==drugNames[i]),method.args=list(formula=y~Vmax*x/(Km+x),start=list(Vmax=coef(models[[i]])[1],Km=coef(models[[i]])[2])),se=FALSE,size=0.5)
où models [[]] est une liste de paramètres de modèle retournés par nls.
Des idées sur la façon dont je peux sous-représenter une trame de données dans geom_smooth afin que je puisse tracer individuellement des courbes en utilisant les paramètres de départ de mon ajustement nls?
double possible de [ggplot2 fonction de la parcelle avec plusieurs arguments] (https: // stackoverflow.com/questions/42598375/ggplot2-plot-function-with-several-arguments) –
Non lié, mais 'plot',' file' comme noms de variables n'est pas une bonne idée (des fonctions existent avec ces noms). – neilfws
Aussi: cela aiderait à voir le code qui a généré 'models'. – neilfws