叠加 2 个 allEffects 图
Overlay 2 allEffects graphs
我有以下型号
require(effects)
fit<-lme(x ~ y, data, random= ~1|item)
plot(allEffects(fit)
fit2<-lme(x ~ y, data2, random = ~1|item)
plot(allEffects(fit2)
如何绘制 fit 和 fit2 叠加层?我试过 par(new=T),但它不起作用。这些图表单独绘制得很好。
我不确定是否有非常的好方法来做到这一点。我通常从效果结构中提取信息并用 ggplot 绘制它(也可以使用格子)。
这是一个例子:
library(effects)
library(nlme)
library(plyr) ## utilities
将模型拟合到一个标准示例数据集的前半部分和后半部分:
fm1 <- lme(distance ~ age, random = ~1|Subject,
data = Orthodont[1:54,])
fm2 <- update(fm1, data = Orthodont[55:108,])
a1 <- allEffects(fm1)
a2 <- allEffects(fm2)
从 efflist
对象中提取信息。这是不完全通用的部分……困难的部分是找出预测变量。
as.data.frame.efflist <- function(x) {
ldply(x,
function(z) {
r <- with(z,data.frame(fit,
var=variables[[1]]$levels,
lower,upper))
return(plyr::rename(r,setNames(z$variables[[1]]$name,"var")))
})
}
为了方便,用ldply
把两个模型的结果放在一起:
comb <- ldply(list(fm1=a1,fm2=a2),as.data.frame,.id="model")
现在剧情:
library(ggplot2); theme_set(theme_bw())
ggplot(comb,aes(age,fit,
ymin=lower,ymax=upper,
colour=model,fill=model))+
geom_line()+
geom_ribbon(alpha=0.2,colour=NA)+
geom_rug(sides="b")
地毯图组件在这里有点傻。
我有以下型号
require(effects)
fit<-lme(x ~ y, data, random= ~1|item)
plot(allEffects(fit)
fit2<-lme(x ~ y, data2, random = ~1|item)
plot(allEffects(fit2)
如何绘制 fit 和 fit2 叠加层?我试过 par(new=T),但它不起作用。这些图表单独绘制得很好。
我不确定是否有非常的好方法来做到这一点。我通常从效果结构中提取信息并用 ggplot 绘制它(也可以使用格子)。
这是一个例子:
library(effects)
library(nlme)
library(plyr) ## utilities
将模型拟合到一个标准示例数据集的前半部分和后半部分:
fm1 <- lme(distance ~ age, random = ~1|Subject,
data = Orthodont[1:54,])
fm2 <- update(fm1, data = Orthodont[55:108,])
a1 <- allEffects(fm1)
a2 <- allEffects(fm2)
从 efflist
对象中提取信息。这是不完全通用的部分……困难的部分是找出预测变量。
as.data.frame.efflist <- function(x) {
ldply(x,
function(z) {
r <- with(z,data.frame(fit,
var=variables[[1]]$levels,
lower,upper))
return(plyr::rename(r,setNames(z$variables[[1]]$name,"var")))
})
}
为了方便,用ldply
把两个模型的结果放在一起:
comb <- ldply(list(fm1=a1,fm2=a2),as.data.frame,.id="model")
现在剧情:
library(ggplot2); theme_set(theme_bw())
ggplot(comb,aes(age,fit,
ymin=lower,ymax=upper,
colour=model,fill=model))+
geom_line()+
geom_ribbon(alpha=0.2,colour=NA)+
geom_rug(sides="b")
地毯图组件在这里有点傻。