1

次のデータセットがあるとしましょう

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)ロイジスティック曲線と両方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をモデルやその他のあらゆる種類のデータセットに一致させようとしましたが、2つを一緒にプロットすることはできません。これを回避する方法はありますか?基本的に、同じ軸に沿って最後のプロットを重ね合わせたいと思います。

この特定のタスクに加えて、異なる変数をプロットするが、2次元プロットで同様のスケール/範囲を持つ異なるプロットをどのように重ね合わせるのか疑問に思うことがよくあります。よろしくお願いします。

4

2 に答える 2

2

の最初の列AggBdは因子です。プロットにポイントを追加する前に、レベルを数値に変換する必要があります。

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

既存のプロットにポイントを追加するには、次を使用しますpoints

points (AggBd$size, AggBd$x, pch = 3)
于 2012-05-13T12:30:28.637 に答える
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="")

与える:

ここに画像の説明を入力してください

于 2012-05-13T12:31:12.233 に答える