某些包(ri
,blockTools
)要求输入矩阵的所有列都是数字。我一直在使用以下黑客,但我想知道是否有更直接的路线:首先,我运行包含变量的回归,但我喜欢它们(因素,字符,数字等),然后我提取设计矩阵,格式正确(截距除外)。 lm
如何制作设计矩阵?我可以制作那个矩阵而不会遇到运行回归的麻烦吗?
N <- 1000
gender <- sample(c("M", "F"), N, replace=TRUE)
age <- sample(18:65, N, replace = TRUE)
lincome <- rnorm(N, 10, 3)
party <- sample(c("D", "R", "I"), N, prob=c(.45, .35,.2), replace=TRUE)
education <- sample(10:20, N, replace=TRUE)
df <- data.frame(gender, age, lincome, party, education)
fit <- lm(1:N ~ gender + age + lincome + party + education, data=df)
mat <- model.matrix(fit)[,-1]
head(df)
head(mat)
这个解决方案运行正常,但感觉很烦。还有更好的方法吗?
答案 0 :(得分:0)
请参阅https://stackoverflow.com/a/5048727/4530610
在你的情况下,它将是:
mat <- model.matrix( ~ gender + age + lincome + party + education, data=df)[,-1]