r - 从ggplot2创建的nls拟合中提取系数

标签 r ggplot2 nls

here有一个很好的解释,说明如何使用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对象?我想知道我的系数等。现在,我不知道如何在不进行单独的nls调用的情况下获取它们。

最佳答案

My question is: using this construction, is it possible to pull out the actual nls object from that call? I'd like to know my coefficients, etc.



目前在ggplot2中是不可能的。 ggplot2函数返回来自模型的预测,但不返回模型对象本身。因此,您无法从nls对象中提取ggplot对象来查找系数等。

ggplot2和ggplot2-dev邮件列表中有两个相关的讨论:

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

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

快速简介:

尽管许多用户要求从ggplot对象提取统计信息的功能,但开发人员正在考虑使用它,但似乎有些反对。他们希望用户使用ggplot2进行可视化,并使用适当的建模功能来探索建模参数。但是,Hadley支持实现将模型对象传递给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对象来查找它。但是,我不知道什么时候或是否会实现这一点。

关于r - 从ggplot2创建的nls拟合中提取系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302851/

相关文章:

r - 用于工作项目调度和优化的遗传算法或模拟退火

r - 循环遍历数据框的列以使用 ggplot2 创建图

r - R 中的 nls() 函数

r - ggplot : fit a curve (geom_smooth method ="nls") with CI95% bands

r - 使用 R 的甘特图 - 无法使用 DiagrammeR 和 R Studio 输出

r - 数据文件中不同行间隔的多个标题

r - 维恩图中标签位置、形状和重叠颜色的问题

r - Lattice中的facet_wrap相当于什么

r - 使用多个 geom_step 将图例添加到 ggplot 的最简洁方法是什么?

r - geom_smooth 提供与单独的 nls 不同的拟合