有一个很好的解释这里介绍如何使用ggplot2创建一个散点图,使用nls来适合数据,并且在一行中绘制适合度,就像这样
我的问题是:使用这种构造,是否可以从该调用中提取实际的nls对象?我想知道我的系数,等等。现在我无法弄清楚如何在没有单独的nls调用的情况下获得它们。
div>我的问题是:使用这种构造,是否可以从该调用中提取实际的nls对象?我想知道我的系数等。
这在ggplot2中目前是不可能的。 ggplot2函数返回来自模型的预测,但不返回模型对象本身。因此,您不能从 ggplot 对象中提取 nls 对象来查找系数等。
在ggplot2和ggplot2-dev邮件列表中有两个相关的讨论:
groups.google/d/topic/ggplot2/7tiUB2sjCxM/discussion
groups.google/d/topic/ggplot2-dev/ dLGJnzIg4ko /讨论
快速提要:
已经要求能够从 ggplot 对象中提取统计信息,开发人员正在考虑它,但似乎有点反对。他们希望用户使用ggplot2进行可视化,并使用适当的建模功能来探索建模参数。但是,Hadley支持实现将模型对象传递给 ggplot()调用的能力。因此,不是试图从 ggplot 对象中提取 nls 对象,而是:
$ (m,s),se = F,start = list(m = 20,...,n) s = 5,N = 300), data = myhist) ggplot(data = myhist,aes(x = size,y = counts))+ geom_point()+ geom_smooth )这样,只需要调用一次模型,就可以做任何你想做的事情,而且您不必通过搜索 ggplot 对象来查找它。但是,我不知道何时或是否会执行此操作。
There's a nice explanation here of how to use ggplot2 to create a scatterplot, fit the data using nls, and plot the fit, all in one line, like so
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))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. Right now I can't figure out how to get them without doing a separate nls call.
解决方案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.
This is currently not possible in ggplot2. The ggplot2 functions return predictions from the model, but not the model object itself. Thus, you cannot extract an nls object from the ggplot object to find the coefficients, etc.
There are two relevant discussions in the ggplot2 and ggplot2-dev mailing lists:
groups.google/d/topic/ggplot2/7tiUB2sjCxM/discussion
groups.google/d/topic/ggplot2-dev/dLGJnzIg4ko/discussion
Quick synopsis:
While many users have asked for the ability to extract statistics from ggplot objects, the developers are considering it but seem somewhat opposed. They would prefer users to use ggplot2 for visualization, and appropriate modelling functions to explore modelling parameters. However, Hadley supports the idea of implementing the ability to pass a model object to a ggplot() call. So, instead of trying to extract the nls object from your ggplot object, you would instead:
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)That way, the model only needs to be called once, you can do anything you want to it, and you don't have to go searching through ggplot objects to find it. However, I don't know when or if this will be implemented.
更多推荐
从ggplot2创建的nls拟合中提取系数
发布评论