0

我正在尝试对我的数据框进行简单的线性回归,如下所示。实际的数据集有更多的因子和更多的预测变量(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 和 f2 的每种组合,趋势都会有所不同。我想要做的是为 f1 和 f2 的每个组合构建一个 lm 模型,将其存储在某种列表中,然后当我调用预测时,我应该能够使用适当的模型并根据 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

另外,假设我将所有内容都放入列表中,之后如何使用 predict ?

编辑:我意识到我可以将指标变量用于建模本身的因素,但我想避免这种情况。

4

1 回答 1

3

我想你想要的只是:

fit <- lm(y ~ x+ f1*f2, data=dfrm)

这将对 f1 与 f2 的每个交互级别给出不同的预测。它只是一个模型,但可以predict使用 f1 和 f2 的任何所需组合来“查询”该函数的预测。您应该查看 ?formula 并花一些时间了解如何解释线性模型。

于 2012-12-02T21:49:43.137 回答