为因子的每个组合(/交互)创建单独的线性模型

时间:2012-12-02 21:10:11

标签: r plyr linear-regression interaction categorical-data

我正在尝试对我的数据框执行简单的线性回归,看起来像下面的内容。实际的数据集有更多的因素和更多的预测因子(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

另外,假设我把它全部放到一个列表中,之后如何使用预测?

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

1 个答案:

答案 0 :(得分:3)

我认为你想要的只是:

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

这将为f1与f2的每个相互作用级别提供不同的预测。它只是一个模型,但可以使用predict函数使用任何所需的f1和f2组合来“查询”预测。你应该看看?公式并花一些时间来理解如何解释线性模型。