我有一个“长”数据帧定义为:
q <- data.frame(Indicator.Code=factor(),Year=numeric(),Value=numeric())并且我尝试在单个xyplot中为每个不同的Indicator.Code绘制作为年份的函数的值,如下所示
xyplot( Value~Year,data=q,group=Indicator.Code)到现在为止还好。现在,我尝试添加与线性回归相对应的行
rlm(q$Value[q$Indicator.Code==a]~q$Year[q$Indicator.Code==a])用于Indicator.Code的所有值。
我不知道该怎么做。添加回归线的常用方法,即
xyplot( Value~Year,data=q,group=Indicator.Code),
panel = function(x, y) {
panel.xyplot(x, y)
panel.abline(rlm(y ~ x))
}))不能正常工作(它计算单个回归,并为整个数据集添加单个回归线)。此外,我已经计算了回归(除了图形之外,我还需要它们),并且讨厌不得不重新计算它们的想法。
有没有什么提示新手可以跟上?
发布于 2013-05-03 23:05:02
我对ggplot2上瘾了:)。ggplot2中的等价物实现了您所期望的功能:
library(ggplot2)
ggplot(q, aes(x = Year, y = Value, color = Indicator.Code)) +
geom_point() + stat_smooth(method = "rlm")请注意,我相信您会将任何函数作为method传递,但如果没有可重复的示例,就很难进行检查。
发布于 2013-05-03 23:15:52
对于为每个晶格绘制单独符号的自定义面板函数,group要求您将实际的面板函数包装在对panel.superpose()的调用中。下面是一个使用mtcars data.frame中的数据的示例。
library(lattice)
library(MASS)
myPanel <- function(x,y,...) {
panel.xyplot(x,y,...)
panel.abline(rlm(y~x), ...)
}
xyplot(mpg~disp, group = cyl, data = mtcars,
panel = function(...) panel.superpose(panel.groups = myPanel, ...))
## Or, equivalently:
xyplot(mpg~disp, group = cyl, data = mtcars,
panel = panel.superpose, panel.groups = myPanel)

https://stackoverflow.com/questions/16361766
复制相似问题