假设我有以下数据集
bodysize=rnorm(20,30,2)
bodysize=sort(bodysize)
survive=c(0,0,0,0,0,1,0,1,0,0,1,1,0,1,1,1,0,1,1,1)
dat=as.data.frame(cbind(bodysize,survive))
我知道glm情节函数有几个不错的图表来展示你的合适, 但是我想用以下方法创建一个初始情节:
1)原始数据点 2)loigistic曲线和两者 3)预测点 4)和多个预测水平的聚合点
library(Hmisc)
plot(bodysize,survive,xlab="Body size",ylab="Probability of survival")
g=glm(survive~bodysize,family=binomial,dat)
curve(predict(g,data.frame(bodysize=x),type="resp"),add=TRUE)
points(bodysize,fitted(g),pch=20)
一切都很好。
现在我想绘制给定水平x1
的实际数据存活率dat$bd<-cut2(dat$bodysize,g=5,levels.mean=T)
AggBd<-aggregate(dat$survive,by=list(dat$bd),data=dat,FUN=mean)
plot(AggBd,add=TRUE)
#Doesn't work
我试图将AggBd与用于模型的数据集和其他所有东西相匹配,但我根本无法将两者一起绘制。有没有解决的办法? 我基本上想要沿着相同的轴重叠最后一个情节。
除了这个特定的任务,我经常想知道如何过度绘制不同的图,这些图描绘了不同的变量,但在二维图上具有相似的比例/范围。我非常感谢你的帮助。
答案 0 :(得分:2)
AggBd
的第一列是一个因素,您需要将这些级别转换为数字才能将点添加到绘图中。
AggBd$size <- as.numeric (levels (AggBd$Group.1))[AggBd$Group.1]
要将点添加到现有图表,请使用points
points (AggBd$size, AggBd$x, pch = 3)
答案 1 :(得分:1)
您最好指定y轴。也许可以使用par(new=TRUE)
plot(bodysize,survive,xlab="Body size",ylab="Probability of survival")
g=glm(survive~bodysize,family=binomial,dat)
curve(predict(g,data.frame(bodysize=x),type="resp"),add=TRUE)
points(bodysize,fitted(g),pch=20)
#then
par(new=TRUE)
#
plot(AggBd$Group.1,AggBd$x,pch=30)
显然删除或更改轴刻度以防止重叠,例如
plot(AggBd$Group.1,AggBd$x,pch=30,xaxt="n",yaxt="n",xlab="",ylab="")
,并提供: