我正在尝试理解一些在R中构建模型矩阵的代码,但在理解一些基本语法时遇到了问题。
下面是一些可重现的代码:
test_df <- data.frame(category =c("Poetry", "Narrative Film", "Music"),
country=c("GB", "US", "US"), usd_goal_real=c(1534,30000,45000),
time_int = c(59, 60, 45), state=c(0,0,0)
)
test_df2 <- data.frame(model.matrix( ~ . -1, test_df))
test_df3 <- data.frame(model.matrix( ~ . , test_df))test_df2 <- data.frame(model.matrix( ~ . -1, test_df))行中指定的确切内容是什么?
具体来说,~ . -1是什么意思?这是否从模型中排除了某个字段?iI与下一行中的公式~ . ,有什么不同?
发布于 2020-11-18 07:40:32
最简单的答案是,model.matrix中公式中的-1从模型中删除了X截距项。data.frame(model.matrix( ~ . -1, test_df))产生:
categoryMusic categoryNarrative.Film categoryPoetry countryUS usd_goal_real time_int state
1 0 0 1 0 1534 59 0
2 0 1 0 1 30000 60 0
3 1 0 0 1 45000 45 0而data.frame(model.matrix( ~ . , test_df))会产生:
X.Intercept. categoryNarrative.Film categoryPoetry countryUS usd_goal_real time_int state
1 1 0 1 0 1534 59 0
2 1 1 0 1 30000 60 0
3 1 0 0 1 45000 45 0由于模型中有一个分类变量,因此您还会注意到,当模型中存在X截距时,该变量的Music级别将消失,因为变量的第一个级别用于截距,而所有其他变量都是从该级别测量的。
这是两种不同的参数化模型的方法
https://stackoverflow.com/questions/64884326
复制相似问题