You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:02:42