为何广义回归模型中两相似列一正常一报因子水平数错误?
问题原因与解决办法
你遇到的报错核心原因是:当拟合b ~ Grade的二项式模型时,去除响应变量b的缺失值后,自变量Grade只剩下唯一的水平(8),而GLM拟合需要自变量因子至少有2个水平才能计算对比矩阵,所以抛出错误。
验证结论
运行以下代码查看两列非NA数据对应的Grade分布:
# 查看a列非NA对应的Grade水平 table(goyo$Grade[!is.na(goyo$a)]) # 查看b列非NA对应的Grade水平 table(goyo$Grade[!is.na(goyo$b)])
输出结果会显示:
- a列的非NA数据对应的Grade包含6、7、8三个水平,满足模型拟合的基本要求;
- b列的非NA数据对应的Grade仅包含8这一个水平,无法构建对比矩阵,直接触发报错。
解决思路
- 检查数据收集环节,确认是否遗漏了Grade为6、7时
b列的有效观测值; - 若业务逻辑上确实只有Grade=8的
b列数据,那么无法用Grade作为自变量拟合预测b,需要更换其他自变量或调整模型形式; - 若只是样本的偶然缺失,可以补充对应Grade水平的
b列数据后再重新拟合模型。
内容的提问来源于stack exchange,提问作者Ba Lalo
相关产品推荐
相关产品推荐

