gpt4 book ai didi

r - 将不同的模型拟合到 R 中的每个数据子集

转载 作者:行者123 更新时间:2023-12-04 09:09:06 24 4
gpt4 key购买 nike

我有一个包含多个类的大型数据集。我的目标是为每个类拟合一个模型,然后预测结果并将它们在一个方面中的每个类可视化。

对于可重现的示例,我使用 mtcars 创建了一些基本的东西。 .这适用于每个类的简单回归模型。

mtcars = data.table(mtcars)
model = mtcars[, list(fit = list(lm(mpg~disp+hp+wt))), keyby = cyl]
setkey(mtcars, cyl)
mtcars[model, pred := predict(i.fit[[1]], .SD), by = .EACHI]
ggplot(data = mtcars, aes(x = mpg, y = pred)) + geom_line() + facet_wrap(~cyl)

但是,我想尝试以下类似的方法,但目前还行不通。这个尝试是一个公式列表,但我也希望将不同的模型(一些 glms,一些树)发送到每个数据子集。
mtcars = data.table(mtcars)
factors = list(c("disp","wt"), c("disp"), c("hp"))
form = lapply(factors, function(x) as.formula(paste("mpg~",paste(x,collapse="+"))))
model = mtcars[, list(fit = list(lm(form))), keyby = cyl]
setkey(mtcars, cyl)
mtcars[model, pred := predict(i.fit[[1]], .SD), by = .EACHI]
ggplot(data = mtcars, aes(x = mpg, y = pred)) + geom_line() + facet_wrap(~cyl)

最佳答案

这是我们设置 predict 的方法对于每个模型作为未评估列表,在 data.table 内评估它们对象,gather输出,并将其传递给 ggplot :

models = quote(list(
predict(lm(form[[1]], .SD)),
predict(lm(form[[2]], .SD)),
predict(lm(form[[3]], .SD))))

d <- mtcars
d[, c("est1", "est2", "est3") := eval(models), by = cyl]
d <- tidyr::gather(d, key = model, value = pred, est1:est3)

library(ggplot2)
ggplot(d, aes(x = mpg, y = pred)) + geom_line() + facet_grid(cyl ~ model)

输出:

enter image description here

关于r - 将不同的模型拟合到 R 中的每个数据子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com