news 2026/9/12 22:22:45

R语言进阶——众数回归模型(modalreg)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
R语言进阶——众数回归模型(modalreg)

目录

  • 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(yx)。众数回归的目标就是找到能使这个密度函数达到最大值y yy值,即条件众数Mode ( Y ∣ X = x ) \text{Mode}(Y|X=x)Mode(YX=x)

1.1、目标函数的构成

由于真实的f ( y ∣ x ) f(y|x)f(yx)未知,我们需要从样本中估计。主流方法使用两步走的局部核密度估计

1. 局部核密度估计

对于给定的x xx,我们估计其条件密度f ( y ∣ x ) f(y|x)f(yx)
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^(yx)=i=1nKh(Xix)i=1nKh(Xix)Kh(yYi)

  • ( 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^(yx)

代入f ^ ( y ∣ x ) \hat{f}(y|x)f^(yx)的表达式,由于分母在给定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=1nKh(Xix)Kh(yYi)

这个式子就是众数回归最核心的目标函数。其中,带宽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)

💡 使用建议

  1. 小数据、一元问题:优先尝试"bmr""kmr",精度和速度较均衡。
  2. 追求精度、不介意时间:可考虑"lmr",但文档显示153秒的训练时间,需谨慎。
  3. 多元自变量:目前只有"linear"方法支持,其他三种仅限一元。
  4. 自动选参:如果不确定超参数,让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.


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 7:31:10

Postgres备份恢复验证实战:用自动化脚本证明备份可恢复

备份这件事&#xff0c;很多团队其实一直处于“伪安全”状态&#xff1a;定时任务每天都在跑&#xff0c;备份文件一天比一天大&#xff0c;日志里写满了pg_dump: finished successfully&#xff0c;于是大家默认数据是安全的。但很少有人回答一个最关键的问题——当生产库真的…

作者头像 李华
网站建设 2026/9/10 15:10:43

皇室战争喷火狗球卡组攻略:熔岩猎犬与气球兵的防守反击与圣水调度

如果你在皇室战争的对局里见过这样的场面&#xff1a;熔岩猎犬慢悠悠飘向公主塔&#xff0c;气球兵在后面缓缓跟上&#xff0c;地狱飞龙从侧翼切入锁定敌方后排&#xff0c;地面防守单位只能干瞪眼——你可能会觉得&#xff0c;这个流派就是“攒费、下狗、下球、平推”。但真正…

作者头像 李华
网站建设 2026/9/10 18:47:51

STM32 DAC 实战:用 DMA 把定时器表变成波形,自制信号发生器

想用 STM32 出个正弦波、三角波、或者可调频的方波&#xff0c;最常用的笨办法是在主循环里一步步算好值、写进 DAC 数据寄存器。CPU 被这事儿占满不说&#xff0c;频率稍微高点波形就锯齿得没法看。 正确的玩法是让 DAC 自己按节奏出数&#xff1a;定时器当节拍器&#xff0c;…

作者头像 李华
网站建设 2026/9/10 12:57:07

AI安全评估独立性为何关键?谷歌组织调整背后的模型治理启示

谷歌这次调整组织归属&#xff0c;本质上动的是“AI 安全评估独立性”这根神经。公开报道显示&#xff0c;谷歌将原本与 DeepMind 研究体系同侧的 AI 责任团队&#xff0c;划入集团层面的信任与安全部门。组织架构一变&#xff0c;DeepMind 内部立刻有人担心&#xff1a;评估结…

作者头像 李华
网站建设 2026/9/11 4:43:59

Python+CNN+OpenCV+PyQt5:驾驶员疲劳检测与人脸识别系统实战

简介&#xff1a;本资源是一套面向本科毕业设计与人工智能课程实践的完整项目方案&#xff0c;聚焦驾驶员疲劳驾驶识别与人脸识别双重功能&#xff0c;适用于计算机、人工智能、智能交通等方向的学生及初学者。系统基于Python3.6开发&#xff0c;融合PyQt5构建图形界面、OpenCV…

作者头像 李华