我正在进行逐步回归,但在前进步骤中遇到错误:
Error in terms.default(object) : no terms component nor attribute
我不知道该怎么做。
这是我的代码:
FullModel <- glm(Disease ~ age2 + Race2 + Gender + Lab1+ Lab2 + Lab3 + Lab4 +Lab5 + Lab6 + Lab7, family=binomial, data=Data)
EmptyModel <- glm(Disease ~ 1, family=binomial, data=Data)
Data<-na.omit(Data)
backwards = step(FullModel)
formula(backwards)
Data$forwards <- step(Data$EmptyModel,scope=list(lower=Data$EmptyModel,upper=Data$FullModel), direction="forward")
错误:
terms.default(object) : no terms component nor attribute
为了解决问题,我检查确保使用的对象类是正确的:
> class(EmptyModel)
[1] "glm" "lm"
> class(FullModel)
[1] "glm" "lm"
有什么建议吗? 提前谢谢你。
答案 0 :(得分:1)
您必须仔细阅读文档 - 这无疑是不容易的。
范围:定义逐步搜索中检查的模型范围。 这应该是单个公式或包含的列表 组件'上'和'下',两个公式。见 有关如何指定公式及其方式的详细信息 使用
搜索的模型集由'scope'参数决定。 它的“下部”组件的右侧始终包含在内 模型,模型的右侧包含在 '上'组件。如果'scope'是单个公式,则指定 'upper'组件,'lower'模型为空。如果'范围' 缺少,初始模型用作“上层”模型。
'scope'指定的模型可以是将'object'更新为的模板 由'update.formula'使用。所以在'范围'公式中使用'。'意味着 '已经存在的','。^ 2'表示所有的相互作用 现有条款。
这意味着范围的元素必须是公式(或&#34;公式&#34;如果您愿意......)
所以如果你有一个完整的添加剂模型:
set.seed(101)
dd <- data.frame(y=rbinom(100,size=1,prob=0.5),
x1=rnorm(100),
x2=rnorm(100),
x3=rnorm(100),
x4=rnorm(100))
FullModel <- glm(y ~ x1+x2+x3+x4, family=binomial, data=dd)
EmptyModel <- update(FullModel, . ~ 1)
由于我编写了随机数据,逐步程序会抛弃一切......
backwards = step(FullModel)
formula(backwards) ## y ~ 1
前进逐步回归:
forwards = step(EmptyModel, scope=list(lower=.~1,
upper=formula(FullModel)),
direction="forward")
前向逐步回归也以微不足道的模型结束。
formula(forwards) ## y ~ 1
作为一种捷径,如果你想要一个包含除响应之外的数据中所有变量的加法模型,你可以使用glm(y~. , ...)
;这也可以作为scope
参数中的公式(如文档中所述)