我使用model.matrix
函数创建了一个设计矩阵。
如果我使用有序因子数据,我会在列名称中得到L
,Q
和C
个后缀。 这些后缀的含义是什么以及它们如何映射到因子级别? model.matrix
的帮助文件在此问题上不明确。
head( model.matrix( as.formula( ~ ps ),
model.frame( as.formula( ~ ps ),
data.frame(ps = factor( x = sample(x = c( 'none', '3XLT', '41X', '3X' ),
size = 50,
replace = TRUE ),
levels = c( '3X', '3XLT', '41X', 'none' ),
ordered = TRUE ) ) ) ) )
# (Intercept) ps.L ps.Q ps.C
# 1 1 -0.2236068 -0.5 0.6708204
# 2 1 0.6708204 0.5 0.2236068
# 3 1 0.6708204 0.5 0.2236068
# 4 1 0.2236068 -0.5 -0.6708204
# 5 1 0.6708204 0.5 0.2236068
# 6 1 -0.2236068 -0.5 0.6708204
如果我使用无序因子,我可以通过列名轻松跟踪列的映射。
head( model.matrix( as.formula( ~ ps ),
model.frame( as.formula( ~ ps ),
data.frame(ps = factor( x = sample(x = c( 'none', '3XLT', '41X', '3X' ),
size = 50,
replace = TRUE ),
levels = c( '3X', '3XLT', '41X', 'none' ) ) ) ) ) )
# (Intercept) ps3XLT ps41X psnone
# 1 1 0 0 1
# 2 1 1 0 0
# 3 1 0 0 1
# 4 1 1 0 0
# 5 1 0 0 0
# 6 1 1 0 0
答案 0 :(得分:1)
我仍然不知道这些后缀的含义,可能还有一些历史原因。
调试model.matrix
函数后,调用了其中的C_modelmatrix
。
.External2(C_modelmatrix, t, data)
对于有序因子contrasts.poly
用于使用此调用中定义的make.poly
函数获取设计矩阵。获取设计矩阵后,将修改列名称,并为列2 - 4提供奇怪的后缀。第一列将被忽略,如果有超过4列,则将保留其名称,如下所示。 make.poly
功能。
contr <- make.poly(n, scores)
if (contrasts) {
dn <- colnames(contr)
dn[2:min(4, n)] <- c(".L", ".Q", ".C")[1:min(3, n - 1)]
colnames(contr) <- dn
contr[, -1, drop = FALSE]
}
总之,这些后缀没有任何意义,但是它们被映射到从2到4的有序因子的级别。对于长度大于4的因子级别,不应用重命名。请参阅下面的示例。
head( model.matrix( as.formula( ~ ps ),
model.frame( as.formula( ~ ps ),
data.frame(ps = factor( x = sample(x = c( 'none', '3XLT', '2X', '41X', '3X' ),
size = 50,
replace = TRUE ),
levels = c( '3X', '3XLT', '2X', '41X', 'none' ),
ordered = TRUE ) ) ) ) )
# (Intercept) ps.L ps.Q ps.C ps^4
# 1 1 0.0000000 -0.5345225 -4.095972e-16 0.7171372
# 2 1 0.0000000 -0.5345225 -4.095972e-16 0.7171372
# 3 1 0.3162278 -0.2672612 -6.324555e-01 -0.4780914
# 4 1 -0.6324555 0.5345225 -3.162278e-01 0.1195229
# 5 1 0.3162278 -0.2672612 -6.324555e-01 -0.4780914
# 6 1 -0.6324555 0.5345225 -3.162278e-01 0.1195229
contr
contr <- make.poly(n, scores)
Browse[6]> contr
# ^0 ^1 ^2 ^3 ^4
# [1,] 0.4472136 -0.6324555 0.5345225 -3.162278e-01 0.1195229
# [2,] 0.4472136 -0.3162278 -0.2672612 6.324555e-01 -0.4780914
# [3,] 0.4472136 0.0000000 -0.5345225 -4.095972e-16 0.7171372
# [4,] 0.4472136 0.3162278 -0.2672612 -6.324555e-01 -0.4780914
# [5,] 0.4472136 0.6324555 0.5345225 3.162278e-01 0.1195229
修改强> 有序因子对比矩阵中L,Q,C的扩展对应于线性,二次和三次项。更多度的多项式项(大于3)的命名由该多项式项的度数值表示。