我用包装中的数据“ vitamind”拟合cosinor模型,然后尝试使用newdata根据cosinor.fit进行预测。尽管我在newdata中使用了与'vitamind'中相同的变量名,但是运行predict(cosinor.fit, newdata = mydata)
时却收到错误消息:
cosinor.fit <- cosinor.lm(Y ~ time(time) + X + amp.acro(X), data = vitamind)
summary(cosinor.fit)
predict(cosinor.fit) # worked fine
predict(cosinor.fit, newdata = mydata) # did not work, error message as below
# Error in eval(predvars, data, env) : object 'rrr' not found
我使用自己的数据作为newdata进行了测试,它给出了相同的错误消息
predict(cosinor.fit, newdata = vitamind) # did not work either
# Error in eval(predvars, data, env) : object 'rrr' not found
有人可以给我一些提示吗?非常感谢!
答案 0 :(得分:0)
您需要在新数据中转换时间变量:
newdat <- vitamind
period <- 12 #the default in cosinor.lm
newdat$rrr <- cos(2 * pi * newdat[, "time"]/period)
newdat$sss <- sin(2 * pi * newdat[, "time"]/period)
predict(fit, newdata = newdat) #works
#test if result is the same (within numerical precision)
all(abs(predict(fit) - predict(fit, newdata = newdat)) < 1e-10)
#[1] TRUE
可以说,预测方法应该为您做到这一点。您可以与软件包维护者联系并提出改进建议。