partykit::mob()设置分割模型后为终端节点拟合不同模型的方法
问题解答:partykit包实现指定参数异质性检验+终端节点完整模型拟合
你需要的功能已经在partykit的lmtree/mob框架中内置实现,核心是使用parm参数指定需要检验异质性的参数即可,单步实现代码如下:
library(partykit) tree_1 <- lmtree( # 完整模型公式,自带截距项 Sepal.Length ~ Sepal.Width | Species, data = iris, # 仅检验Sepal.Width斜率的异质性用于节点分割,截距视为同质不参与分割检验 parm = "Sepal.Width" )
方案说明
- 运行后每个终端节点拟合的都是包含截距项的完整线性模型,调用
coef(tree_1)即可查看各节点的截距和斜率估计值 - 节点分割阶段只会检验
parm指定参数的异质性,不会因为截距的波动触发节点分割,完全符合你的需求
原写法报错原因
你之前的写法存在问题的核心原因是公式Sepal.Length ~ 0 + Sepal.Width | Species强制移除了截距项,传入自定义fit函数的特征矩阵本身就不包含截距列,因此在fit函数内部补+1也无法生成截距估计。
补充思路说明
你提到的「基于选定回归参数的同质性优化拟合」就是parm参数的原生设计逻辑,mob框架默认的分割检验逻辑就是对parm指定的参数进行得分检验,不需要自行编写底层逻辑。
内容的提问来源于stack exchange,提问作者Chrr1s
相关产品推荐
相关产品推荐

