我和我的意义重大。 R中的lm模型中的关键字

时间:2014-06-13 04:01:39

标签: r

我正在为我的作业创建一个线性模型:

lm(revenue ~ (max_cpc - max_cpc.mean), data = traffic)  

但它抛出:

Error in model.frame.default(formula = revenue ~ (max_cpc - max_cpc.mean),  : 
   variable lengths differ (found for 'maxcpc.mean') 

然后,通过反复试验,我稍微修改了我的代码:

lm(revenue ~ I(max_cpc - max_cpc.mean), data = traffic)

和宾果!它运作良好。

但现在我想弄清楚'我'的意义以及它如何解决我的问题。任何人都可以向我解释一下吗?

1 个答案:

答案 0 :(得分:8)

I()阻止公式接口解释参数,因此它会被传递给表达式解析部分。

在公式界面中,-x表示“从预测变量中删除x”。所以我可以y~.-x来表示'除了x'之外的所有东西。

您不希望它这样做 - 您实际上想要创建一个变量,这是两个变量的差异并对其进行回归,因此您希望公式接口解析表达。

I()为你实现了这一目标。

平方的术语(x^2)也需要相同的处理。公式界面对权力做了一些特殊的事情,如果你真的想要一个变量平方,你必须I()

I()在其他情境中也有其他一些用途。见?I