model.matrix.default中的错误(mt,mf,对比):变量1没有级别

时间:2016-09-07 20:07:08

标签: r

我一直在主题行中收到错误消息。我正在使用R中的应用程序“统计学习简介”一书,似乎必须完成本书的所有内容。我甚至将代码中的代码直接复制并粘贴到R Studio中,它仍会拍摄错误消息。我将在这里粘贴我的代码。提前谢谢你的帮助。

library(ISLR)
attach(Smarket)

glm.fit=glm(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume,
            family=binomial)
summary(glm.fit)
glm.probs=predict(glm.fit, type = "response")
glm.probs[1:10]
glm.pred=rep("Down", 1250)
glm.pred[glm.probs>.5] = "Up"
glm.pred
table(glm.pred, Direction)
mean(glm.pred==Direction)
train=(Year>2005)
Smarket.2005=Smarket[!train,]
dim(Smarket.2005)
Direction.2005=Direction[!train]
glm.fit = glm(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume, family = binomial, subset = train)

它在最后一行(glm.fit =)之后发出错误。

  

错误消息(再次):model.matrix.default中的错误(mt,mf,对比):     变量1没有水平

1 个答案:

答案 0 :(得分:2)

查看Year变量的分布:

> table(Year)
Year
2001 2002 2003 2004 2005 
 242  252  252  252  252 

没有行的值大于2005年。

所以当你定义火车时:

train=(Year>2005)

对于向量的每个元素,该条件的计算结果为FALSE

subset = train调用中指定glm时,您选择的是没有行的子集。