/ / Tracé d’une ligne de tendance non linéaire sur un graphique logarithmique dans R - r, graphique

Tracé d'une ligne de tendance non linéaire sur un graphique logarithmique dans R - r, graphique

J'ai des données de pointe sur les débits annuels d'un flux local et je veux créer un graphique de fréquence d'inondation. Voici un échantillon de mes données:

#Set up maximum flow data
flow=sample(seq(10,1000,20),100,replace=TRUE)
#Order flows from largest to smallest
flow=as.data.frame(flow[order(flow, decreasing=TRUE)])
names(flow)="max"
#rank flows from largest to smallest
flow$"rank"=seq(1,nrow(flow),1)
#Calculate the return interval in years
flow$"RI"=(nrow(flow)+1)/flow$"rank"
plot(flow$"max"~flow$"RI",type="p", log="xy",xlab="Return Interval", ylab="Max flow")

Ensuite, j'ai été capable de comprendre la fonction logarithmique de la droite de meilleur ajustement avec:

logMod = nls( max ~ (a*log10(RI)+b), data=flow,
start = list(a = 0, b = 0))

Maintenant, ma vraie question est de savoir comment tracer cette lignesur le graphique log-log créé ci-dessus sans avoir à vérifier à chaque fois quelles étaient les variables créées dans ma fonction nls? Je voudrais un moyen de tracer rapidement la ligne du meilleur ajustement, et si je ne l’aime pas, allez changer la fonction nls en un nouveau type d’équation non linéaire. Par exemple, si la ligne logarithmique ne s'aligne pas bien avec les données, je pourrais changer la formule de la fonction nls en une fonction exponentielle ou polynomiale.

Réponses:

2 pour la réponse № 1

Vous pouvez utiliser predict() pour ça

x <- seq(min(flow$RI), max(flow$RI), length.out=100)
y <- predict(logMod, data.frame(RI=x))
lines(x,y, col="red")