首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >广义加性模型中的两个预测因子?

广义加性模型中的两个预测因子?
EN

Stack Overflow用户
提问于 2014-09-06 20:03:10
回答 2查看 370关注 0票数 1

当我用两个预测器拟合一个广义的加性模型时,我可以使用以下两个命令,

代码语言:javascript
复制
lm4 = gam(X3 ~ s(X1) + s(X2),data=pairmin2)
lm41 = gam(X3 ~ s(X1,X2), data=pairmin2)

这两个命令有何不同?

第二个问题是关于这个GAM的预测。首先,我定义了“y12”,在这里应该对拟合模型进行评估。

代码语言:javascript
复制
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’给出了以下错误。

代码语言:javascript
复制
Error in storage.mode(df) <- "double" : object 'X2' not found

我怎么才能让它起作用?

EN

Stack Overflow用户

回答已采纳

发布于 2014-09-06 22:27:50

一般来说,你一次只想问一个问题。关于这两个调用之间的区别的第一个问题似乎是一个方法论的问题,可能更适合于stats.se。此外,如果你提供一个文件可复制的例子(我必须这样做才能回答你的第二个问题),那么帮助你就容易多了。

至于预测调用失败的原因,您应该传入一个data.frame,它的变量名称与用于将数据拟合到newdata=参数的模型相同。当您使用expand.grid时,您的变量将重新命名。下面是一个可复制的创建两种不同匹配的示例

代码语言:javascript
复制
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)

现在我们可以用

代码语言:javascript
复制
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)

我们确实得到了不同的结果

代码语言:javascript
复制
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 
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25704228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档