【发布时间】:2011-11-12 08:36:29
【问题描述】:
我在 R 中运行 summary(lm(...)) 函数。当我打印系数时,我得到了除最后一个变量之外的所有变量的估计值。我得到“NA”的最后一个变量。
我尝试用另一列切换最后一列数据,最后一列中的任何内容都得到了“NA”,但其他所有内容都得到了估计。
关于数据的一点点:我有大约 5 个变量,每行都有数据,然后我有 12 个季节性变量,例如,如果月份是 1 月,则 1 月的每一天都有 1,否则为 0。对于二月变量,如果月份是二月,则为 1,否则为 0,依此类推。有谁知道在系数估计的最后一列中会产生什么“NA”?所以我第一次运行它时,它是 12 月虚拟变量的系数。是因为我每月的虚拟变量吗?谢谢
这是我的可重现示例。
dat<- data.frame(
one<-c(sample(1000:1239)),
two<-c(sample(200:439)),
three<-c(sample(600:839)),
Jan<-c(rep(1,20), rep(0,220)),
Feb<-c(rep(0,20),rep(1,20),rep(0,200)),
Mar<-c(rep(0,40),rep(1,20),rep(0,180)),
Apr<-c(rep(0,60),rep(1,20),rep(0,160)),
May<-c(rep(0,80),rep(1,20),rep(0,140)),
Jun<-c(rep(0,100),rep(1,20),rep(0,120)),
Jul<-c(rep(0,120),rep(1,20),rep(0,100)),
Aug<-c(rep(0,140),rep(1,20),rep(0,80)),
Sep<-c(rep(0,160),rep(1,20),rep(0,60)),
Oct<-c(rep(0,180),rep(1,20),rep(0,40)),
Nov<-c(rep(0,200),rep(1,20),rep(0,20)),
Dec<-c(rep(0,220),rep(1,20)
)
attach(dat)
summary(lm(one ~ two + three + Jan + Feb +
Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec))
【问题讨论】:
-
让我们从一个可重现的例子开始:stackoverflow.com/questions/5963269/…
-
虚拟变量的个数总是比因子个数少1。所以在你的情况下,如果有 12 个月,你应该定义 11 个假人。您可能正在定义 12,这就是为什么最后一个未被估计的原因。
-
没错,拉姆纳特。我用的是 12。为什么我们少用 1?我不清楚这将如何工作,因为我的数据是一年中的每一天。所以会有一个月根本拿不到假人?
-
如果您保留
month作为一个因素并使用包含month-1的公式(例如y~month-1),R 将为您设置虚拟变量并抑制截距...如果您提供一个可重复的示例,我(或其他人)将向您展示它是如何工作的 -
好的,添加了一个可重现的例子。
标签: r