首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R logistic回归model.matrix

R logistic回归model.matrix
EN

Stack Overflow用户
提问于 2017-08-18 12:56:09
回答 1查看 1.1K关注 0票数 1

我是R的新手,我正在尝试理解逻辑回归的解决方案。到目前为止所做的一切是删除未使用的变量,将数据拆分为训练和测试数据集。我正在试着理解其中关于model.matrix的部分内容。我刚开始学习R和统计学,我不知道什么是model.matrix,什么是合同。代码如下:

代码语言:javascript
复制
## create design matrix; indicators for categorical variables (factors)
Xdel <- model.matrix(delay~.,data=DataFD_new)[,-1]
xtrain <- Xdel[train,]
xnew <- Xdel[-train,]
ytrain <- del$delay[train]
ynew <- del$delay[-train]
m1=glm(delay~.,family=binomial,data=data.frame(delay=ytrain,xtrain))
summary(m1)

有人能告诉我model.matrix的用法吗?为什么我们不能直接创建分类变量的虚拟变量并将它们放入glm中?我很困惑。model.matrix的用途是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-08-21 08:41:32

Marius的评论解释了如何做到这一点-下面的代码只是给出了一个例子(我觉得这是有帮助的,因为海报仍然是混乱的)。

代码语言:javascript
复制
# Create example dataset. 'catvar' represents a categorical variable despite being coded with numbers.
X = data.frame("catvar" = sample(c(1, 2, 3), 100, replace = T),
               "numvar" = rnorm(100), 
               "y" = sample(c(0, 1), 100, replace = T))

# Check whether you're categorical variables are coded correctly. (They'll say 'factor' if so)
sapply(X, class) #catvar is coded as 'numeric', which is wrong.

# Tell 'R' that catvar is categorical. If your categorical variables are already classed as factors, you can skip this step
X$catvar = factor(X$catvar)
sapply(X, class) # check all variables are coded correctly

# Fit model to dataframe (i.e. without needing to convert X to a model matrix)
fit = glm(y ~ numvar + catvar, data = X, family = "binomial")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45748819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档