Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中的对数图上绘制非线性趋势线_R_Plot - Fatal编程技术网

在R中的对数图上绘制非线性趋势线

在R中的对数图上绘制非线性趋势线,r,plot,R,Plot,我有一些当地河流的年洪峰流量数据,我想创建一个洪水频率图。以下是我的数据示例: #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

我有一些当地河流的年洪峰流量数据,我想创建一个洪水频率图。以下是我的数据示例:

#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')
接下来,我能够计算出最佳拟合线的对数函数:

logMod = nls( max ~ (a*log10(RI)+b), data=flow, 
    start = list(a = 0, b = 0))
现在我真正的问题是如何在上面创建的日志图上绘制这条线,而不必每次检查nls函数中创建的变量是什么?我想用某种方法快速画出最佳拟合线,如果我不喜欢,把nls函数改成一种新的非线性方程。例如,如果对数线与数据不一致,我可以将nls函数中的公式更改为指数或多项式函数

您可以为此使用
predict()

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

x再次感谢Flick先生!非常有用。