逐步回归中的错误:terms.default(object)中的错误:没有术语组件也没有属性"

时间:2017-01-07 23:39:02

标签: r

我正在进行逐步回归,但在前进步骤中遇到错误:

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" 

有什么建议吗? 提前谢谢你。

1 个答案:

答案 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参数中的公式(如文档中所述)