从适合GGPLOT2创建NLS提取系数(Extract coefficients from ggpl

2019-06-23 21:56发布

有一个很好的解释这里的如何使用GGPLOT2创建散点图,利用NLS拟合数据,并绘制配合,都在一条线,像这样

myhist = data.frame(size = 10:27, counts = c(1L, 3L, 5L, 6L, 9L, 14L, 13L, 23L, 31L, 40L, 42L, 22L, 14L, 7L, 4L, 2L, 2L, 1L) )

ggplot(data=myhist, aes(x=size, y=counts)) + geom_point() + 
    geom_smooth(method="nls", formula = y ~ N * dnorm(x, m, s), se=F, 
    start=list(m=20, s=5, N=300)) 

我的问题是:使用这种结构,是有可能拉出实际NLS从Call对象? 我想知道我的系数,等等。现在我无法弄清楚如何让他们没有做单独的NLS电话。

Answer 1:

我的问题是:使用这种结构,是有可能拉出实际NLS从Call对象? 我想知道我的系数等

这是目前没有GGPLOT2可能。 该功能GGPLOT2从模型返回的预测,而不是模型对象本身。 因此,你不能提取的nls从对象ggplot对象找到系数等

有在GGPLOT2和GGPLOT2开发邮件列表两个相关的讨论:

https://groups.google.com/d/topic/ggplot2/7tiUB2sjCxM/discussion

https://groups.google.com/d/topic/ggplot2-dev/dLGJnzIg4ko/discussion

快速简介:

虽然很多用户要求提取从统计数据的能力ggplot对象,开发商正在考虑,但似乎有些反对。 他们宁愿用户使用GGPLOT2可视化,以及适当的建模功能探索建模参数。 不过,哈德利支持落实到模型对象传递给一个能力的想法ggplot()调用。 因此,而不是试图提取nls从你的对象ggplot对象,则改为:

mod <- nls(y ~ N * dnorm(x, m, s), se = F, start = list(m = 20, s = 5, N = 300), 
        data = myhist)
ggplot(data = myhist, aes(x = size, y = counts)) + geom_point() + 
        geom_smooth(mod) 

这样一来,模型只需要调用一次,你可以做你想做的任何事情,而不必去通过搜索ggplot对象找到它。 但是,我不知道什么时候或者这是否会实现。



文章来源: Extract coefficients from ggplot2-created nls fit
标签: r ggplot2 nls