我正在尝试对我的数据框执行简单的线性回归,看起来像下面的内容。实际的数据集有更多的因素和更多的预测因子(x)都试图预测y。
f1 f2 x y
x a 1 3.3
x a 2 3.2
x a 3 3.04
x b 1 4.5
x b 2 4.9
x b 3 8
y a 1 20.1
y a 2 20.3
y a 3 21.9
y b 1 101.2
y b 2 201.8
y b 3 332.8
注意,对于f1和amp;的每个组合f2趋势各不相同。我想要做的是为f1和amp;的每个组合建立一个lm模型。 f2,将它存储在某种列表中然后当我调用预测时,我应该能够使用适当的模型并根据x预测y。我想我应该用ldply创建一个模型列表,如下所示
lm.model.list = ldply(x,.(f1,f2),function(x) {
fit = lm(x$y ~ x$x)
return(fit)
}
这会出错,
Error: attempt to apply non-function
另外,假设我把它全部放到一个列表中,之后如何使用预测?
编辑:我意识到我可以将指标变量用于建模本身的因素,但我想避免这种情况。
答案 0 :(得分:3)
我认为你想要的只是:
fit <- lm(y ~ x+ f1*f2, data=dfrm)
这将为f1与f2的每个相互作用级别提供不同的预测。它只是一个模型,但可以使用predict
函数使用任何所需的f1和f2组合来“查询”预测。你应该看看?公式并花一些时间来理解如何解释线性模型。