1

我正在使用 R 的 Segmented 包构建分段回归模型。我能够创建模型,但无法使用 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 新手,也不知道如何调试它。任何帮助表示赞赏!

4

1 回答 1

2

您使用predict.segemented不正确。与几乎所有predict()函数一样,您的newdata参数应该是 data.frame,而不是向量。此外,它的名称需要与回归中使用的变量相匹配。尝试

predict.segmented(seg_model, data.frame(x=xtest))

反而。首次使用函数时,请务必阅读帮助页面 ( ?predict.segmented) 以了解函数对每个参数的期望。

于 2015-01-17T07:19:00.270 回答