2012-05-13 43 views
1

比方說,我有以下數據集的R - 與骨料分後勤曲線圖

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) 

所有罰款到這裏。

現在我要繪製的實際數據生存率

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以用於模型的數據集和所有種類的其他東西,但我只是X1給定的水平無法將兩者結合在一起。有沒有解決的辦法? 我基本上想要沿着相同的軸向上繪製最後一個繪圖。

除了這個特定的任務,我經常想知道如何繪製不同的繪圖,繪製不同的變量,但在二維圖上具有相似的比例/範圍。我將衷心感謝您的幫助。

回答

2

AggBd的第一列是一個因素,在將點添加到圖之前,您需要將級別轉換爲數字。

AggBd$size <- as.numeric (levels (AggBd$Group.1))[AggBd$Group.1] 

到添加點等植物學情節,使用points

points (AggBd$size, AggBd$x, pch = 3) 
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="") 

,並提供:

enter image description here