我有一个逻辑回归模型,我用它来预测帝王蟹在成熟时的大小,但是我在使用启动包设置引导代码时遇到了问题。这就是我所拥有的:
#FEMALE GKC SAM#
LowerChatham<-read.table(file=file.choose(),header=TRUE)
#LOGISTIC REGRESSION FIT#
glm.out<-glm(Mature~CL,family=binomial(link=logit),data=LowerChatham)
plot(Mature~CL,data=LowerChatham)
lines(LowerChatham$CL,glm.out$fitted,col="red")
title(main="Lower Chatham")
summary(glm.out)
segments(98.9,0,98.9,0.5,col=1,lty=3,lwd=3)
SAM<-data.frame(CL=98.97)
predict(glm.out,SAM,type="response")
我想引导统计数据CL = 98.97,因为我对50%的螃蟹成熟的大小感兴趣,但我不知道如何设置我的函数来指定该统计数据,更不用说引导程序了功能一般来说我的95%CI任何帮助将不胜感激!谢谢!
答案 0 :(得分:3)
在每次bootstrap迭代中,你想要做类似
的事情range <- 1:100 # this could be any substantively meaningful range
p <- predict(glm.out, newdata = data.frame(CL=range), "response")
range[match(TRUE,p>.5)] # predicted probability of 50% maturity
您可以在其中指定CL的值范围以达到所需的精度。然后计算每个级别的预测成熟概率。然后在预测概率跨越0.5的范围内找到阈值。这是你想要引导的统计数据。
您也不需要boot
来执行此操作。如果您定义一个对该统计信息进行采样并输出结果的函数,则可以执行replicate(1000, myfun)
来获取引导程序分布,如下所示:
myfun <- function(){
srows <- sample(1:nrow(LowerChatham),nrow(LowerChatham),TRUE)
glm.out <- (Mature ~ CL, family=binomial(link=logit), data=LowerChatham[srows,])
range <- 1:100 # this could be any substantively meaningful range
p <- predict(glm.out, newdata = data.frame(CL=range), "response")
return(range[match(TRUE,p>.5)]) # predicted probability of 50% maturity
}
bootdist <- replicate(1000, myfun()) # your distribution
quantile(unlist(bootdist),c(.025,.975)) # 95% CI