2013-02-27 76 views
1

我正在做一个回归,几个分类变量和连续变量混合在一起。为了简化我的问题,我想创建一个回归模型,预测驾驶时间给予不同区域的某个驾驶员驾驶里程。这就是说,我的训练数据中有5个不同的车手和2个区域。扩展回归模型在R

我知道我可能需要建立5 * 2 = 10的回归模型进行预测。我在R中使用的是

m <- lm(driving_time ~ factor(driver)+factor(zone)+miles) 

但是好像R不会扩大组合。我的问题是,如果有任何聪明的方式在R中自动进行扩展,或者我必须逐一编写10个回归模型。谢谢。

+0

尝试'因子(司机)*因子(区)* miles'(读的*简介R *建模... – 2013-02-27 16:01:23

+0

实际(基于删除评论)您可能希望相关部分'(因子(司机):因数(区))* miles' – 2013-02-27 16:08:33

回答

1

请阅读?formula。公式中的+表示将该变量作为主要效果。您似乎在寻找driverzone之间的互动用语。您使用:运算符创建交互术语。还有一个捷径,通过*运营商获得主要和互动效果。

有一些困​​惑,你是否想miles也相互作用,但我会在这里假设不是因为你只提到2×5项。

foo <- transform(foo, driver = factor(driver), zone = factor(zone)) 
m <- lm(driving_time ~ driver * zone + miles, data = foo) 

这里我假设你的数据在数据帧foo。第一行由拟合之前转换感兴趣的变量因素分开模型规格/拟合数据处理。

该公式然后指定driverzone的主效果和交互效果以及miles的主效果。

如果你想所有三个则之间的相互作用:

m <- lm(driving_time ~ driver * zone * miles, data = foo) 

m <- lm(driving_time ~ (driver + zone + miles)^3, data = foo) 

会为你做的。