如何在R中合并GLM分析中LS均值一致的区域变量并重构模型?
在R中合并区域变量并重建GLM(对应SAS ESTIMATE合并操作)
你需要先创建合并后的新区域变量,再用该变量重新拟合广义线性模型,具体操作步骤如下:
1. 创建合并后的新区域变量
假设你的数据框为df,原区域变量名为Region,要合并的目标区域是BB、KE、ZA,可通过两种方式实现:
方式一:基础R实现
# 生成新变量,将目标区域合并为"BB-KE-ZA",其余区域保留原名称 df$new_Region <- ifelse(df$Region %in% c("BB", "KE", "ZA"), "BB-KE-ZA", as.character(df$Region)) # 转换为因子类型(若原Region为因子,保持分类变量属性) df$new_Region <- factor(df$new_Region)
方式二:dplyr包实现(更简洁)
library(dplyr) df <- df %>% mutate(new_Region = case_when( Region %in% c("BB", "KE", "ZA") ~ "BB-KE-ZA", TRUE ~ as.character(Region) )) %>% mutate(new_Region = factor(new_Region))
2. 重新构建GLM模型
假设原模型以family_income为因变量,包含education、num_children、industry、Region作为自变量,合并后只需将Region替换为新变量new_Region:
# 原GLM模型(示例,需根据数据调整family参数,如gaussian、poisson等) original_glm <- glm(family_income ~ education + num_children + industry + Region, data = df, family = gaussian) # 合并区域后的新GLM模型 new_glm <- glm(family_income ~ education + num_children + industry + new_Region, data = df, family = gaussian)
3. 验证合并结果(可选)
若需确认合并后的最小二乘(LS)均值与SAS中ESTIMATE语句结果一致,可使用emmeans包计算验证:
library(emmeans) # 计算新区域变量的LS均值 emmeans(new_glm, ~ new_Region) # 对比原模型中三个目标区域的均值平均值,验证是否与合并后的均值一致 original_emm <- emmeans(original_glm, ~ Region) mean(original_emm[original_emm$Region %in% c("BB", "KE", "ZA")]$emmean)
内容的提问来源于stack exchange,提问作者Sofia Bániková
相关产品推荐
相关产品推荐

