我正在尝试将我的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
为什么“没有意义”?它是具有相同拟合优度的同一模型,只是参数化方式不同。
—
沃尔夫冈
@digitgopher:运行回归并最终得到如下模型:,从技术上讲,您最终获得了这样的模型这:,其中这个新项始终等于“ 1”(因此,那些)。如果要在运行常规回归时消除这一列,那么最终会产生偏差模型,因为实际上是迫使每个模型都通过原点。
—
史蒂夫S
@SteveS:实际上,R非常友好,如果您尝试在
—
Scortchi-恢复莫妮卡
- 1
将单个分类预测变量表示为一个因子时尝试删除截距 (如本问题所述),它将假定您不是真的意思,而是转而使用sum-零编码;当然,这只是一个不同的参数化。太友好了,如果你问我。
@SteveS:谢谢。我应该检查一下:它切换到单元均值编码。它并没有达到您的预期,这正好符合您正确警告的“强制通过原点”模型(不过,当列为数字类型时,它将这样做)。
—
Scortchi-恢复莫妮卡