我正在使用Windows 7上的caper软件包进行系统发育多元回归,并且在生成简化模型后尝试绘制剩余杠杆图时,我一直在接收模型框架/公式不匹配错误。
以下是重现错误所需的最少代码:
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.
如何更新我的模型框架以便能够再次(以图形或数字方式)检查厨师的距离?
答案 0 :(得分:2)
在crunch()的源代码中有实现:
data <- subset(data, select = all.vars(formula))
具有副作用,即在模型框架中使删除的主要效果的所有交互效果无效。当人们意识到如果他/她只删除交互效应时,绘制厨师的距离与杠杆将会起作用,这一点就会变得更加明显。
因此,为了解决这个问题,在调用crunch()创建线性模型之前,所有交互效果必须包含在原始数据框中。虽然这使得转换数据稍微复杂一些,但是很容易在这两个链接之后添加这些交互: