我正在尝试在ggplot2中进行指数回归。所以首先我的skript:
g <- ggplot(data, aes(x=datax, y=datay), color="black") +
geom_point(shape=1) + stat_smooth(method = 'nls', formula = y~a*exp(b*x), aes(colour = 'Exponential'), se = FALSE)
g <- g + theme_classic()
g <- g + theme(panel.grid.major=element_blank())
g <- g + theme(panel.grid.minor=element_blank())
g <- g + theme(axis.line.x=element_line(color="black"),
axis.line.y=element_line(color="black"),
panel.border=element_blank(),
panel.background=element_blank())
g <- g + labs(x="\ndatax",y="datay\n")
g <- g + theme(axis.text.y=element_text(size=14))
g <- g + theme(axis.text.x=element_text(size=14))
g <- g + theme(axis.title.y=element_text(size=18,vjust=1))
g <- g + theme(axis.title.x=element_text(size=18,vjust=1))
g
这是我得到的图像
作为R-beginner,我通过混合我和互联网的脚本来完成脚本。我总是收到以下错误:
“在(函数(公式,数据= parent.frame(),start,control = nls.control(),):没有为某些参数指定起始值。 将'a','b'初始化为'1'。考虑指定'start'或使用selfStart模型“
我还没有找到更好的方法来制作指数图。
此外,我想将图表的颜色更改为黑色并删除图例,我想在图表中使用R²和p值。 (也许还有置信区间?)
答案 0 :(得分:3)
如果没有可重复的例子和许多问题,要回答并不容易。 您确定您报告的消息是错误而不是警告吗?在我自己的笔记本电脑上,数据集'iris',我收到了警告......
但是,如何阅读R文档中的文件页面,您应该通过参数“start”提供一个初始值来启动估算以帮助找到收敛。如果你不提供它,nls()本身应该使用一些虚拟默认值(在你的情况下,a和b设置为1)。
您可以尝试这样的事情:
g <- ggplot(data, aes(x=datax, y=datay), color="black") +
geom_point(shape=1) + stat_smooth(method = 'nls',
method.args = list(start = c(a=1, b=1)),
formula = y~a*exp(b*x), colour = 'black', se = FALSE)
你告诉R,情节的颜色是“指数”,我认为这样可行(我尝试使用R-base数据集'iris'并且工作)。 您可以注意到我将start参数作为传递给'method.args'的列表的元素传递:这是ggplot v2.0.0中的新功能。
希望这有帮助
修改强>: 为了完整起见,我附上了我在笔记本电脑上使用默认数据集重现的代码:(请注意,这种数据集没有任何意义,但代码在没有警告的情况下运行)
library(ggplot2)
data('iris')
g1 <- ggplot(data=iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(color='green') +geom_smooth(method = 'nls',
method.args = list(start=c(a=1, b=1)), se = FALSE,
formula = y~a*exp(b*x), colour='black')
g1