1

我有一个模型,其中包含 7 年的时间趋势变量(因此 2000=1,2001=2,...,2006=7)以及其中 6 年的虚拟变量(因此每年都有一个二进制变量不包括 2000 年的年份)。当我要求 R 拟合这个线性模型时:

olsmodel=lm(lnyield ~ lnx1+ lnx2+ lnx3+ lnx4+ lnx5+ x6+ x7+ x8+ timetrend+ 
                     yeardummy2001+ yeardummy2002+ yeardummy2003+ yeardummy2004+ 
                     yeardummy2005+ yeardummy2006)

我为模型摘要中的最后一个虚拟变量生成了 NA。连同以下“系数:(1 由于奇异性而未定义)”。

我不知道为什么会发生这种情况,因为所有 x_i 变量都是连续的,并且没有虚拟子集和时间趋势是彼此的线性组合。

任何有关为什么会发生这种情况的帮助将不胜感激!

4

1 回答 1

1

问题是当您将年份趋势设置为1:n并且还包括每年的虚拟变量时,它恰好会产生一个非全列秩协变量矩阵:

假设只有 3 个类别:r1、r2、r3,模型是y ~ trend + c2 + c3,您将拥有的协变量矩阵是:

> mat
     int trend c2 c3
[1,]   1     1  0  0
[2,]   1     1  0  0
[3,]   1     2  1  0
[4,]   1     2  1  0
[5,]   1     3  0  1
[6,]   1     3  0  1

并且您会发现协变量矩阵的列秩mat只有 3 而不是您需要估计的系数个数 (4),即t(mat)%*%mat是奇异的。这可能会导致错误。

于 2012-11-19T21:21:50.640 回答