为什么我不能在我的lm中添加一个级别的因子?

时间:2014-08-06 02:16:04

标签: r r-factor

我正在进行回归,我想添加一年作为因素,但我的年只是一年(2010年),当我运行等式时,我得到一个错误:

contrasts<- (tmp, value = contr.funs[1 + isOF[nn]]) : 
contrasts can be applied only to factors with 2 or more levels

我的等式:

Lanu <- lm(YFT ~ PR1*factor(DN1)*factor(NTM1)*factor(AÑO1))

我的所有因素都有相同的长度,YFT是密度,PR1是深度,因子DN1是两种类型的网络,NTM1是三个位置。我想知道我的因素中是否存在相互作用。

1 个答案:

答案 0 :(得分:4)

由于你只有1年,所以年份只是constant。没有识别变异,这是@MrFlick在他的评论中所暗示的。这就是为什么如果您尝试对比或者如果您尝试将其放入lm等式时出现错误的原因。

实际上,你不应该包括年份,因为你几年没有变化。

从技术上讲,如果您要省略默认常量(通常称为“Beta naught”), 可以 将其包含在回归中,该常量计算为平均响应时所有预测值均为零。这与人工设置你的y截距到2010年是一样的。

很难想象一个有利的情况,即使那样你就不能拥有一个常数的交互项。

以下是您的选择:

  1. 忘记包括年度
  2. 多年来
  3. 使用2010作为y截距:Lanu <- lm(YFT ~ 0 + PR1*factor(DN1)*factor(NTM1)*factor(AÑO1), offset=rep(2010, length(YFT))
  4. 使用一年,几个季度或一年的某些细分而不是一年
  5. 请注意,在等式中添加0 +- 1会删除正常的截距,offset会创建人工年截距。