GLM预测概率自助法置信区间报错:apply函数dim(X)长度异常
问题解决:
apply函数报错dim(X) must have a positive length 错误原因
你用car包的Boot()生成的bcLFish是一个**Boot类对象**,并非直接的矩阵或数据框。apply()仅能处理具备正维度的结构(如矩阵、数据框),直接传入Boot对象会触发维度相关错误。
解决方案
从Boot对象中提取bootstrap重复的系数矩阵(存储在对象的t元素中),再用apply()处理该矩阵:
# 预测函数保持不变 predPFish <- function(cf, x) exp(cf[1]+cf[2]*x)/(1+exp(cf[1]+cf[2]*x)) # 提取Boot对象内的bootstrap系数样本矩阵 boot_coef_matrix <- bcLFish$t # 对每个bootstrap样本(矩阵每行)计算预测概率 p32Fish <- apply(boot_coef_matrix, 1, predPFish, x=21.7) # 计算95%置信区间对应的分位数 quantile(p32Fish, c(0.025, 0.975))
额外验证
若要确认系数矩阵的结构,可运行:
str(bcLFish$t)
输出会显示这是一个999×2的矩阵(对应你设置的R=999次bootstrap重复,以及logistic模型的2个系数),符合apply()的处理要求。
补充说明
原教程的bootCase()函数会直接返回系数矩阵,而car包的Boot()将结果封装为Boot对象,包含更多元信息(如原模型、重复次数等),因此需要手动提取t元素来获取系数样本。
内容的提问来源于stack exchange,提问作者DeepSeaG
相关产品推荐
相关产品推荐

