我正在使用R的分段包构建分段回归模型。 我能够创建模型但是在使用predict.segmented函数时遇到了麻烦。它总是抛出一个错误,说"下标超出范围"
这是确切的错误消息:
Error in newdata[[nameZ[i]]] : subscript out of bounds
Traceback只是给出了这个:
1: predict.segmented(seg_model, xtest)
我创建了一个简单的案例,它给出了同样的错误:
require(segmented)
x = c(1:90, 991:1000)
y = c((x[1:10]/2), (x[11:100]*2))
lm_model = lm(y~x)
seg_model = segmented(lm_model, seg.Z=~x, psi=list(x=NA),
control=seg.control(display=FALSE, K=1, random=TRUE))
xtest = c(1:1000)
predict.segmented(seg_model, xtest)
我开始认为这可能是一个错误。我是R的新手,不知道如何调试它。任何帮助表示赞赏!
答案 0 :(得分:2)
您错误地使用了predict.segemented
。与几乎所有predict()
函数一样,您的newdata
参数应该是data.frame,而不是vector。此外,它需要具有与回归中使用的变量匹配的名称。尝试
predict.segmented(seg_model, data.frame(x=xtest))
代替。首次使用函数时,请务必阅读帮助页面(?predict.segmented
)以了解函数对每个参数的期望。