我有一个包含多个类的大型数据集。我的目标是为每个班级拟定一个模型,然后预测结果并在一个方面为每个班级形象化他们。将不同的模型拟合到R中的每个数据子集
对于一个可重复的例子,我创建了一些基本的使用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)
数据表真的有必要吗? – rawr
不,但在大型数据集上更快。 dplyr也可以。 – Divi
我只是暗示瓶颈将会被预测,lm,ggplot。是'list(fit = lapply(form,lm,data = .SD))'你想要什么 – rawr