2012-05-13 5 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) 

Все отлично до здесь.

Теперь я хочу, чтобы построить реальные показатели выживаемости данных для данных уровней 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

Первый столбец AggBd - это фактор, вам нужно преобразовать уровни в числовые, прежде чем вы сможете добавить точки к сюжету.

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

для добавления точек на участок существующего места, используйте points

points (AggBd$size, AggBd$x, pch = 3) 
1

Вы лучше указать свои оси у. Также возможно с помощью 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

Смежные вопросы