外推曲线R二项式模型

时间:2018-07-22 17:48:58

标签: r model predict extrapolation

这是我使用的代码:

data<-read.table("YB.txt",header=T)
attach(data)
fit2<-glm(cbind(success,fail)~time*col,data=data,family=binomial)
summary(fit2)
predict.data<-as.data.frame(predict(fit2,newdata=temp.data,type="link",se=TRUE))
new.data<-cbind(temp.data,predict.data)
std<-qnorm(0.95/2+0.5)
new.data$ymin<-fit2$family$linkinv(new.data$fit-std*new.data$se)
new.data$ymax<-fit2$family$linkinv(new.data$fit+std*new.data$se)
new.data$fit<-fit2$family$linkinv(new.data$fit)
op<-cbind(success/(Neggs))
p<-ggplot(data,aes(x=time,y=op,fill=col,color=col))+geom_point()

p+geom_ribbon(data=new.data,aes(y=fit,ymin=ymin,ymax=ymax),alpha=0.1,linetype="dashed")+geom_line(data=new.data,aes(y=fit),linetype="solid")+labs(x="patatou",y="patata",title="patati")+theme_calc()+scale_color_manual(values=c("#CC6666", "#9999CC"))+labs(colour="Eggs color",linetype="Eggs color",shapes="Eggs color")

=>我得到了两条漂亮的预测曲线。但是,我收集的数据开始于5天,结束于13天。我想在0-5天和13天后(即:到20天)绘制曲线。为了预测我应该得到什么。所以我尝试了这个:

NewData<-as.matrix(cbind(time,col))
colnames<-(NewData)
colnames(NewData)<-c("time","col")
 predict(fit2,NewData,se.fit=TRUE,scale=NULL,df=Inf,interval=c("none","confidence","prediction"),level=0.95)

行不通...有人有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

predict()使用拟合模型为您提供与newdata参数中x变量的值相对应的y变量的值。因此,如果仅提供5到13范围内的x变量值,则只会获得相应的y变量预测值。为了“延伸”预测线,您需要在要绘制的整个范围内提供x变量值,例如0到20。您将需要以下内容:

x_coords <- seq(from=0, to=20, by=0.1)
y_coords <- predict(fitted_model, newdata=data.frame(x=x_coords))
plot(x, y, xlim=c(0,20))
points(x=x_coords, y=y_coords, type="l")

我的答案(link)提供了一个使用ISLR包中的“自动”数据集的有效示例。