R语言中lm和glm与lmer的区别

R语言中 ⁠lm(), ⁠glm(), ⁠lmer() 函数深度解析

这三个函数是R语言中用于建模的核心工具,它们在模型类型、适用范围和功能上有显著区别。以下是详细对比:

1. ⁠lm() - 线性模型

功能:拟合普通最小二乘(OLS)回归模型

适用:因变量为连续型且满足正态分布假设

特点

# 基本语法

model_lm <- lm(y ~ x1 + x2, data = dataset)

summary(model_lm)

典型应用

商品价格预测、产量与施肥量关系等连续变量分析

2. ⁠glm() - 广义线性模型

功能:扩展⁠lm(),处理非正态分布因变量

关键参数:⁠family指定分布类型和连接函数

常见分布族


# 不同分布族的应用

glm(y ~ x, family = gaussian)  # 同lm()(默认)

glm(y ~ x, family = binomial)  # 逻辑回归(二分类)

glm(y ~ x, family = poisson)   # 泊松回归(计数数据)

特点

典型应用

疾病预测(二分类)、客户流失分析、事故计数建模

3. ⁠lmer() - 线性混合模型

:⁠lme4包(需安装)

功能:处理包含固定效应 + 随机效应的层次数据

语法特征

library(lme4)

model_lmer <- lmer(y ~ x1 + x2 + (1 | group), data = dataset)

关键区别

特点

典型应用

学生成绩分析(学生嵌套于班级)、临床试验(患者多次测量)

核心对比总结

特征 ⁠lm() ⁠glm() ⁠lmer()
模型类型 线性模型 广义线性模型 线性混合模型
因变量要求 连续、正态 任意分布 连续、正态
效应类型 仅固定效应 仅固定效应 固定+随机效应
数据结构 独立观测 独立观测 非独立观测(层次/重复)
关键函数/包 stats (基础包) stats (基础包) lme4 (需安装)
P值输出 自动提供 自动提供 需lmerTest包
典型应用场景 连续响应预测 分类/计数数据建模 分层数据建模

进阶选择指南

graph TD

A[因变量类型] --> B

A --> C

B -->|是| D

B -->|否| C

C -->|是| E[glm]

D -->|是| F[lmer]

D -->|否| G[lm]

实际案例选择

  1. 预测房价(连续变量,独立观测) → ⁠lm()

注意:对于混合模型,建议安装⁠lmerTest包获取p值:

library(lmerTest)

model <- lmer(y ~ x + (1|group), data)

summary(model)  # 显示p值