当我用两个预测器拟合一个广义的加性模型时,我可以使用以下两个命令,
lm4 = gam(X3 ~ s(X1) + s(X2),data=pairmin2)
lm41 = gam(X3 ~ s(X1,X2), data=pairmin2)这两个命令有何不同?
第二个问题是关于这个GAM的预测。首先,我定义了“y12”,在这里应该对拟合模型进行评估。
x1 = x2 = seq(0.01,0.99,0.01)
y12 = data.frame(expand.grid(x1,x2))
pred4 = predict(lm4,y12)
pred41 = predict(lm41,y12)第一个命令'pred4‘运行良好,但是第二个'pred41’给出了以下错误。
Error in storage.mode(df) <- "double" : object 'X2' not found我怎么才能让它起作用?
发布于 2014-09-06 22:27:50
一般来说,你一次只想问一个问题。关于这两个调用之间的区别的第一个问题似乎是一个方法论的问题,可能更适合于stats.se。此外,如果你提供一个文件可复制的例子(我必须这样做才能回答你的第二个问题),那么帮助你就容易多了。
至于预测调用失败的原因,您应该传入一个data.frame,它的变量名称与用于将数据拟合到newdata=参数的模型相同。当您使用expand.grid时,您的变量将重新命名。下面是一个可复制的创建两种不同匹配的示例
set.seed(2) ## simulate some data...
dat <- gamSim(1,n=400,dist="normal",scale=2)
lm4<-gam(y~s(x1)+s(x2),data=dat)
lm41<-gam(y~s(x1, x2),data=dat)现在我们可以用
x1 = x2 = seq(0.01,0.99,0.01)
y12 = data.frame(expand.grid(x1=x1,x2=x2)) #note the naming here
pred4 = predict(lm4,y12)
pred41 = predict(lm41,y12)我们确实得到了不同的结果
head(pred4)
# 1 2 3 4 5 6
# 2.571626 2.590161 2.608700 2.627249 2.645825 2.66444
head(pred41)
# 1 2 3 4 5 6
# 4.392093 4.286727 4.172413 4.049871 3.920065 3.784201 https://stackoverflow.com/questions/25704228
复制相似问题