【发布时间】:2012-08-29 17:11:02
【问题描述】:
相关: R: Marking slope changes in LOESS curve using ggplot2
这个问题试图找到最小/最大 y (slope=0);我想找到最小值/最大值
作为背景,我正在执行一些不同的建模技术,并认为在迭代神经网络结果时,我可能会使用斜率来衡量随机种子产生的最佳模型。
获取数据:
nn <- read.csv("http://pastebin.com/raw.php?i=6SSCb3QR", header=T)
rbf <- read.csv("http://pastebin.com/raw.php?i=hfmY1g46", header=T)
例如,以下是我的数据经过训练的神经网络的结果:
library(ggplot2)
ggplot(nn, aes(x=x, y=y, colour=factor(group))) +
geom_point() + stat_smooth(method="loess", se=F)
同样,这是一个 rbf 模型:
ggplot(rbf, aes(x=x, y=y, colour=factor(group))) +
geom_point() + stat_smooth(method="loess", se=F)
RBF 模型更好地拟合数据,并且与变量的背景知识更吻合。我想尝试计算拟合线的最小/最大斜率,以便修剪陡峭悬崖与更平缓曲线的 NN。识别交叉线是修剪的另一种方法,但这是一个不同的问题。
感谢您的任何建议。
注意:我在这里使用了ggplot2 并相应地标记了问题,但这并不意味着它不能通过其他一些功能来完成。我只是想直观地说明我为什么要这样做。我想一个循环可以用 y1-y0/x
【问题讨论】:
-
numericDeriv(my_loess$y)够吗? -
@CarlWitthoft:我对 R 不够熟悉,不知道
my_loess会是什么。 -
@Hendy 抱歉:这是
loess返回的对象的简写,即my_loess <- loess(rbf) -
@CarlWitthoft 我需要传递更多选项吗?我用
my_loess <- loess(x~y, data=rbf)和numericDeriv(my_loess$y)做了你的建议,我得到一个错误:Error in length(theta) : 'theta' is missing。很抱歉让你引导我完成所有事情!
标签: r ggplot2 curve-fitting