为什么model.matrix中的intercept列替换第一个因子?


9

我正在尝试将我的factor列转换为虚拟变量:

str(cards$pointsBin)
# Factor w/ 5 levels ".lte100",".lte150",..: 3 2 3 1 4 4 2 2 4 4 ...

labels <- model.matrix(~ pointsBin, data=cards)

head(labels)

#     (Intercept) pointsBin.lte150 pointsBin.lte200 pointsBin.lte250 pointsBin.lte300
# 741           1                0                0                0                0
# 407           1                1                0                0                0
# 676           1                0                0                1                0
# 697           1                1                0                0                0
# 422           1                0                1                0                0
# 300           1                0                1                0                0

我的因子(".lte100")的第一个值没有列,这是第一行应归类的内容。如何获得这些数据?似乎全为1的Intercept列是什么意思?


3
当您有“ K”个虚拟变量时,您得到的模型将具有a。)截取项(一列)和b。)“ K-1”个附加列。原因是因为否则结果矩阵的列将不是线性独立的(因此,您将无法执行OLS)。
史蒂夫·S

2
为什么“没有意义”?它是具有相同拟合优度的同一模型,只是参数化方式不同。
沃尔夫冈

2
@digitgopher:运行回归并最终得到如下模型:,从技术上讲,您最终获得了这样的模型这:,其中这个新项始终等于“ 1”(因此,那些)。如果要在运行常规回归时消除这一列,那么最终会产生偏差模型,因为实际上是迫使每个模型都通过原点。ÿ^=β0+β1个X1个ÿ^=β0X0+β1个X1个X0
史蒂夫S

2
@SteveS:实际上,R非常友好,如果您尝试在- 1将单个分类预测变量表示为一个因子时尝试删除截距 (如本问题所述),它将假定您不是真的意思,而是转而使用sum-零编码;当然,这只是一个不同的参数化。太友好了,如果你问我。
Scortchi-恢复莫妮卡

2
@SteveS:谢谢。我应该检查一下:它切换到单元均值编码。它并没有达到您的预期,这正好符合您正确警告的“强制通过原点”模型(不过,当列为数字类型时,它将这样做)。
Scortchi-恢复莫妮卡

Answers:


10

考虑以下:

require(mlbench)

data(HouseVotes84, package = "mlbench")
head(HouseVotes84)

labels <- model.matrix(~ V1, data=HouseVotes84)
head(labels)

labels1 <- model.matrix(~ V1+1, data=HouseVotes84)
head(labels1)

labels0 <- model.matrix(~ V1+0, data=HouseVotes84)
head(labels0)

labels_1 <- model.matrix(~ V1-1, data=HouseVotes84)
head(labels_1)

前两个命令是相同的。最后两个命令指定不产生截距,并保留产生的两个虚拟变量。


1
谢谢-这说明了我想要的代码。但这并不能解释原因或无法帮助我理解。
digitgopher 2015年

2
@digitgopher:请参阅ats.ucla.edu/stat/r/library/contrast_coding.htm,以获取对参考级编码和其他编码方案的说明。
Scortchi-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.