【发布时间】:2021-10-12 07:04:39
【问题描述】:
有时在使用这个包时,我只想评估一个或另一个参数的异质性。但是,我认为我无法做到这一点,然后一步将更完整的模型拟合到终端节点。有没有办法做到这一点?这是我想要做的代码应该看起来像(我认为),但它不起作用:
full_mod <-
function(y, x, weights = NULL, start = NULL, offset = NULL, ...) {
lm(y ~ x + 1, ...)
}
tree_1 <-
mob(
# assess heterogeneity in slope, ignoring intercepts
Sepal.Length ~ 0 + Sepal.Width | Species,
data = iris,
# fit each terminal node WITH intercepts
fit = full_mod
)
这实现了我想要做的,但我正在寻找一个单步的方式。
tree2 <-
lmtree(
Sepal.Length ~ 0 + Sepal.Width | Species,
data = iris
)
iris <-
iris %>%
mutate(prediction = predict(tree2, type = 'node'))
lms <- iris %>%
nest_by(prediction) %>%
rowwise() %>%
summarize(linear_model = list(lm(Sepal.Length ~ Sepal.Width, data = data)))
我发现这不是这里使用连续变量的最佳方法,但使用二分预测器时,我认为这可能非常强大,并且想编写一些代码来执行此操作并评估模型的这个变体(只要没有其他方法可以做到)。
在第一次编辑时添加:也许拟合此类模型的另一种方法是基于所选回归参数的同质性(而不是基于整个模型的偏差、对数似然等)来优化拟合。我对这两种解决方案都很满意,但(就个人而言)尝试使用后者时遇到了更多麻烦。
谢谢! 克里斯托弗贷款
【问题讨论】: