2015-02-08 46 views
1

我正在使用Windows 7上的caper软件包进行系统发育多重回归,并且当我试图绘制残余杠杆图时一直接收模型框架/配方不匹配错误生成简化模型后。R:如何在减少模型公式后更新模型框架

这里是重现错误所需的最少代码:

g <- Response ~ (Name1 + Name2 + Name3 + Name4 + Name5 + Name6 + Name7)^2 + Name1Sqd 
+ Name2Sqd + Name3Sqd + Name4Sqd + Name5Sqd + Name6Sqd + Name7Sqd 

crunchMod <- crunch(g, data = contrasts) 
plot(crunchMod, which=c(5)) ####Works just fine#### 

varName <- row.names(summary(crunchMod)$coefficients)[1] 
#it doesn't matter which predictor I remove. 

Reduce(paste, deparse(g)) 
g <- as.formula(paste(Reduce(paste, deparse(g)), as.name(varName), sep=" - ")) 
#Edits the model formula to remove varName 

crunchMod <- crunch(g, data = contrasts) 
plot(crunchMod, which=c(5)) ####Error Happens Here#### 

当我尝试绘制剩余杠杆情节看的模型的复杂性的影响,我得到以下错误:

Error in model.matrix.default(object, data = list(Response = c(-0.0458443124730482, 
: model frame and formula mismatch in model.matrix() 

The code that starts this error is: plot(crunchMod, which=c(5)) where crunchMod 
holds my regression model via crunchMod <- crunch(g, data = contrasts) from the 
caper Package on Windows 7 OS. 

如何更新我的模型框架以便能够再次检查厨师的距离(图形或数字)?

回答

2

在紧缩的源代码()有实现:

data <- subset(data, select = all.vars(formula)) 

其具有使从模型帧无效一个已删除的主效应的所有交互影响的副作用。当人们意识到如果他/她只是删除了交互效应,那么将厨师的距离与杠杆作用进行比较就会发挥作用,这会变得更加明显。

因此,为了解决这个问题,在调用crunch()创建线性模型之前,必须在原始数据框中包含所有交互效果。虽然这使得稍微复杂一点的转换数据,很容易就以下两个链接添加这些相互作用:

Generating interaction variables in R dataframes(第二个答案向下)

http://www.r-bloggers.com/type-conversion-and-you-or-and-r/