使用名为seg部分的数据集显示在
下面 n position age vehicle
1 0 0.61095890 29 1989
2 0 0.66301370 30 1989
3 1 0.99452055 42 1994
4 0 0.87397260 43 1994
5 0 0.04383562 44 1994
6 0 0.07397260 44 1994
gam1= gam(n~s(age)+ s(vehicle) + offset(log(position)),data=seg,family=Poisson)
ag<-seq(min(age),max(age),len=10)
veh<-seq(min(vehicle),max(vehicle),len=10)
data<-expand.grid(age=ag,vehicle=veh)
fit.gam1<-matrix(predict(gam1,data),10,10)
persp(ag,veh,fit.gam1,theta=45,phi=30,ticktype='detailed',xlab='age',ylab='vehicle',
zlab='n',expand=2/3,shade=.5)
我收到了这条消息
Error in model.frame.default(ff, data = newdata, na.action = na.act) :
variable lengths differ (found for 'age')
In addition: Warning messages:
1: In predict.gam(gam1, data) :
not all required variables have been supplied in newdata!
2: 'newdata' had 100 rows but variable(s) found have 39075 rows
请问我做得对不对?
由于
答案 0 :(得分:0)
predict
调用时更有可能抛出错误。我认为创建'log_pos'变量然后在执行predict
之前将该数据帧传递给gam可能更安全。那么你就不需要确定西蒙伍德是否在解释机制中进行了完整的公式解释。鉴于您已经拥有模型,您可以通过运行快速找到:
data<-expand.grid(age=ag,vehicle=veh, position=0.7)
fit.gam1<-matrix(predict(gam1,data),10,10)
此外:
1)您的示例太小,无法支持测试。
2)你正在使用附加(而不是承认你的罪的性质。)