2017-05-22 42 views
0

我有一些数据,我已经对使用r进行了7阶多项式回归;该曲线类似于钟形曲线。查找并绘制r中曲线的第二个最陡峭部分

我需要找到曲线的两个最陡的部分。到目前为止,我已经设法找到并显示最陡峭的上坡,现在我需要最陡峭的下坡。

这是我到目前为止有:

attach(DATA1) 
names(DATA1) 

"dist" "ohms" 

plot(dist,ohms) 
reg<-lm(ohms~poly(dist,7)) 
summary(reg) 
lines(smooth.spline(dist,predict(reg))) 
xv<-seq(min(dist),max(dist),0.02) 
yv<-predict(reg,list(dist=xv)) 
lines(xv,yv,lwd=2) 
plot(xv,yv,type="l") 
xv[which(abs(diff(yv))==max(abs(diff(yv))))] 
abline(v=xv[which(abs(diff(yv))==max(abs(diff(yv))))]) 

有谁知道如何找坡最陡的下降部分?

感谢

+0

发布代码来加载我们没有的对象似乎毫无意义,甚至令人讨厌。为了你的任务,为什么不分割你正在做的范围,你在最大值以下和以上搜索2个部分? –

回答

0

我认为你在这里有一个问题:

abs(diff(yv))==max(abs(diff(yv))) 

在这一行,diff(yv)几乎是yv的衍生物。通过取其绝对值,你忽略了是否增加或减少yv,所以你会得到最陡峭的上升或下降,但你不知道哪一个。

既然你有兴趣在寻找最陡的上升和下降试试这个:

diff(yv) == max(diff(yv)) 
diff(yv) == min(diff(yv)) 

首先应该当YV的变化是最大返回true(最陡的上升),第二个它有最陡的下降。

+0

很好的答案,这有很大的帮助。我有另一个关于同一主题的查询。一些钟形曲线图显示曲线一端或两端的急剧下降/上升。但是,我只对剧情中心区域的斜坡陡峭感兴趣。有没有办法可以从命令中排除某些x值,即在上限和下限x范围内搜索斜率最陡的部分? –