目录
- 0、引言
- 1、核心思想
- 1.1、目标函数的构成
- 1.2、与均值和中位数的关系
- 2、R语言包——modalreg
- 2.1、包的简介
- 2.2、快速上手安装
- 安装与加载
- 2.3、使用案例
- 生成模拟数据(内置工具)
- 训练模型
- 查看结果与预测
- 2.4、关键参数说明
- 💡 使用建议
- ⚠️ 注意事项
- 3、相关文献
- 奠基性工作
- 关键方法论突破
- 权威综述
0、引言
本文主要介绍众数回归模型,以及其在R语言中的函数包modalreg。
1、核心思想
在给定自变量X = x X = xX=x的条件下,因变量Y YY有一个条件密度函数f ( y ∣ x ) f(y|x)f(y∣x)。众数回归的目标就是找到能使这个密度函数达到最大值的y yy值,即条件众数Mode ( Y ∣ X = x ) \text{Mode}(Y|X=x)Mode(Y∣X=x)。
1.1、目标函数的构成
由于真实的f ( y ∣ x ) f(y|x)f(y∣x)未知,我们需要从样本中估计。主流方法使用两步走的局部核密度估计:
1. 局部核密度估计
对于给定的x xx,我们估计其条件密度f ( y ∣ x ) f(y|x)f(y∣x):
f ^ ( y ∣ x ) = ∑ i = 1 n K h ( X i − x ) ⋅ K h ( y − Y i ) ∑ i = 1 n K h ( X i − x ) \hat{f}(y|x) = \frac{ \sum_{i=1}^{n} K_h(X_i - x) \cdot K_h(y - Y_i) }{ \sum_{i=1}^{n} K_h(X_i - x) }f^(y∣x)=∑i=1nKh(Xi−x)∑i=1nKh(Xi−x)⋅Kh(y−Yi)
- ( X i , Y i ) (X_i, Y_i)(Xi,Yi):第i ii个样本点。
- K h ( ⋅ ) K_h(\cdot)Kh(⋅):带带宽h hh的核函数,用于给“近邻”样本加权。
- 分母是对给定x xx下所有样本权重的加总,起归一化作用。
2. 最大化密度函数
条件众数的估计值m ^ ( x ) \hat{m}(x)m^(x)就是最大化上述估计密度函数的解:
m ^ ( x ) = arg max y f ^ ( y ∣ x ) \hat{m}(x) = \arg\max_{y} \ \hat{f}(y|x)m^(x)=argymaxf^(y∣x)
代入f ^ ( y ∣ x ) \hat{f}(y|x)f^(y∣x)的表达式,由于分母在给定x xx下是常数,不影响最大值的位置,优化目标可简化为:
m ^ ( x ) = arg max y ∑ i = 1 n K h ( X i − x ) ⋅ K h ( y − Y i ) \boxed{\hat{m}(x) = \arg\max_{y} \sum_{i=1}^{n} K_h(X_i - x) \cdot K_h(y - Y_i)}m^(x)=argymaxi=1∑nKh(Xi−x)⋅Kh(y−Yi)
这个式子就是众数回归最核心的目标函数。其中,带宽h hh控制着模型的平滑程度,是影响估计结果的关键参数。
1.2、与均值和中位数的关系
用一个简单的例子来说明:假设在某城市调查“月收入”与“是否拥有房产”的关系。
均值回归告诉你:在有房产的群体中,平均月收入是2万元。但这个平均值可能被少数高收入者拉高。
中位数回归告诉你:在有房产的群体中,月收入的中位数是1.5万元。意味着有一半人收入高于1.5万,一半人低于1.5万。
众数回归告诉你:在有房产的群体中,最多人的收入水平是1.2万元。这说明该群体最普遍的收入水平是1.2万。
总结:均值关注“平均”,中位数关注“排序中间”,而众数关注“最可能”。当数据对称且没有异常值时,三者结果可能接近;但当数据偏态、多峰或有重尾时,众数回归能提供均值和中位数都无法揭示的“最典型”信息。
2、R语言包——modalreg
2.1、包的简介
这个包最大的优势是一站式提供了四种不同的众数回归方法:
| 方法名称 | 方法代码 | 特点 | 适用场景 |
|---|---|---|---|
| 线性众数模型 | "linear" | 参数方法,假设线性关系 | 变量间近似线性,支持多元 |
| B样条众数回归 | "bmr" | 非参数,基于B样条基函数 | 一元回归,平滑灵活 |
| 核方法众数回归 | "kmr" | 非参数,基于核密度估计 | 一元回归,理论基础扎实 |
| 局部多项式众数回归 | "lmr" | 非参数,局部多项式拟合 | 一元回归,精度高但计算量大 |
2.2、快速上手安装
安装与加载
# 安装devtools(如未安装)install.packages("devtools")library(devtools)# 安装modalreg包install_github("yuanwanli1995/modalregression/modalreg")# 加载包library(modalreg)2.3、使用案例
生成模拟数据(内置工具)
# 生成200个样本,误差服从gamma分布,真实函数为expdata<-datagenerater(n=200,e="gamma",f="exp")x_train<-data$x y_train<-data$y训练模型
# 1. B样条方法,手动指定超参数bmr1<-modalreg(x_train,y_train,method="bmr",hyperparameters=c(2,1))# 2. B样条方法,自动选择超参数(基于预测覆盖率)bmr2<-modalreg(x_train,y_train,method="bmr",bandwidth_criterion="predict")# 3. 核方法,自动选择(基于MSE准则)kmr1<-modalreg(x_train,y_train,method="kmr",bandwidth_criterion="mse")# 4. 线性方法(支持多元自变量)linear1<-modalreg(x_train,y_train,method="linear")查看结果与预测
# 查看模型摘要modal.summary(bmr1)# 可视化拟合效果modal.plot(bmr1)# 预测新数据pred<-modalpredict(bmr1,x_train)2.4、关键参数说明
| 参数 | 作用 | 备注 |
|---|---|---|
hyperparameters | 两个超参数:稳健性参数 + 光滑性参数 | 可手动指定或自动选择 |
bandwidth_criterion | 自动选参准则:"mse"或"predict" | 前者基于最小二乘,后者基于预测覆盖率 |
interval1,interval2 | 超参数的搜索区间 | 可自定义,默认seq(0.05, 1, 0.05) |
💡 使用建议
- 小数据、一元问题:优先尝试
"bmr"或"kmr",精度和速度较均衡。 - 追求精度、不介意时间:可考虑
"lmr",但文档显示153秒的训练时间,需谨慎。 - 多元自变量:目前只有
"linear"方法支持,其他三种仅限一元。 - 自动选参:如果不确定超参数,让
bandwidth_criterion帮你选。
⚠️ 注意事项
- 该包主要面向一元回归(除线性方法外),使用时注意数据类型。
- 非参数方法的系数解释性较弱(如
kmr的n个系数),重点看拟合效果和MAE。 - 如果你要处理复杂数据或需要更丰富的功能,可能需要结合其他包(如
ModalCens用于删失数据)。
3、相关文献
以下是众数回归领域核心文献的规范格式,按发表时间排列:
奠基性工作
Lee, M. J. (1989).Mode regression.Journal of Econometrics, 42(3), 337–349.
Lee, M. J. (1993).Quadratic mode regression.Journal of Econometrics, 57(1-3), 1–19.
关键方法论突破
Kemp, G. C. R., & Santos Silva, J. M. C. (2012).Regression towards the mode.Journal of Econometrics, 170(1), 92–101.
摘要:提出了半参数众数回归估计量,放宽了对误差分布对称性的要求,给出了可处理的渐近分布性质。
Yao, W., & Li, L. (2014).A new regression model: Modal linear regression.Scandinavian Journal of Statistics, 41(3), 656–671.
摘要:提出了模态线性回归(MODLR)模型,通过EM算法估计回归系数,在无需误差密度对称假设的条件下给出了估计量的渐近性质。
权威综述
Chen, Y. C. (2018).Modal regression using kernel density estimation: A review.Wiley Interdisciplinary Reviews: Computational Statistics, 10(4), e1431.
Xiang, S., Yao, W., & Cui, X. (2026).Advances in modal regression: From theoretical foundations to practical implementations.Wiley Interdisciplinary Reviews: Computational Statistics, 18(1), e70061.