如何在R中将分组线性模型(LM)代码适配为广义线性模型(GLM)?
将分组LM代码修改为GLM实现
你只需要对现有代码做两处关键调整,就能实现按种群分组运行广义线性模型:
- 把模型函数从
lm()替换为glm() - 为
glm()指定分布族(family)参数——这是GLM区别于LM的核心,必须根据你的因变量y的类型选择合适的分布:- 若
y是连续型数据(和LM场景一致):用family = gaussian() - 若
y是二分类数据(0/1):用family = binomial() - 若
y是计数数据:用family = poisson() - 其他特殊需求可参考R的
?glm文档选择对应分布族
- 若
修改后的完整代码如下:
powerana7 <- data_sim6 %>% nest(data = -squid_pop) %>% mutate(model = map(data, ~glm(y~ early_diet_group + later_diet_group + early_diet_group*later_diet_group + age + SVL + egg_batch + individual, data = ., family = gaussian())), # 替换为你的数据对应的分布族 tidied = map(model, tidy)) %>% unnest(tidied)
额外说明
- 务必根据
y的实际数据类型选择正确的family,否则模型结果会失真 - 如果需要自定义链接函数,可以在
family参数里补充指定,例如二分类数据用family = binomial(link = "probit")(默认是logit链接,可省略)
内容的提问来源于stack exchange,提问作者Josie
相关产品推荐
相关产品推荐

