如何在R中运行二项式模型?报错原因及解决方法
报错原因及解决方法
一、报错原因分析
- 响应变量不符合二项式模型要求:二项式GLM的响应变量必须是整数形式的成功数与失败数组合,或是0到1之间的比例值。你用
cbind(age, 30-age)作为响应变量,age是连续非整数(如17.0、18.5),且30-age和实际的事件计数无关,完全不符合模型对响应变量的定义,这直接触发了non-integer counts警告。 - 初始拟合值超出范围:由于响应变量错误,模型计算初始拟合值(
mustart)时得到了大于1的数值(1.03226),而二项式模型的链接函数(如logit)要求输入值必须在(0,1)区间内,因此抛出Value out of range (0,1)的错误。
另外,从downs.bc数据的实际含义来看:m是对应年龄段的产妇总数,r是该年龄段产下唐氏综合征患儿的数量,你的模型完全搞反了响应变量和自变量的对应关系。
二、解决方法
1. 修正响应变量与模型公式
将响应变量改为患病数r和非患病数m-r的组合,同时把age作为自变量(研究产妇年龄对唐氏综合征出生率的影响才是该数据的合理分析方向):
library(faraway) data(downs.bc) mod1 <- glm(cbind(r, m - r) ~ age, family = binomial, data = downs.bc)
2. 验证模型拟合结果
运行修正后的代码后,可通过summary(mod1)查看模型的系数、显著性等结果,确认拟合情况。如果需要加入其他自变量,直接调整公式即可,核心是保证响应变量为整数形式的成功/失败计数组合。
3. 非整数比例的特殊处理(补充)
如果确实需要用非整数比例作为响应变量(如汇总后的比例数据),可指定family=binomial(link="logit"),同时将响应变量设为0-1之间的比例值,但此案例中原始计数(r和m-r)更适合二项式模型。
内容的提问来源于stack exchange,提问作者fashionable
相关产品推荐
相关产品推荐

