首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中为SuperLearner创建包装器: testAlg$pred错误

在R中为SuperLearner创建包装器: testAlg$pred错误
EN

Stack Overflow用户
提问于 2014-07-27 20:14:47
回答 1查看 229关注 0票数 0

我的代码:

代码语言:javascript
复制
#My test wrapper
SL.test <- function(Y.temp, X.temp, newX.temp, family, ...){
  fit.test <- glm(Y.temp ~ state, data=X.temp, family=family)
  out <- predict(fit.test, newdata=newX.temp, type="response")
  fit <- list(object=fit.test)
  foo <- list(out=out, fit=fit)
  class(foo$fit) <- c("SL.glm")
  return(foo)
}

#My library
SL.library <- list("SL.test")
fit <- SuperLearner(Y=data.samp$y, X=data.samp[, c(2:7, 9:11)], SL.library=SL.library,
              family=binomial(), method="method.NNLS", verbose=TRUE)

错误:

out中的错误,s <- testAlg$pred :要替换的项数不是替换长度的倍数

如果我用现成的包装填充SL.library,就没有问题了。例如,以下内容没有错误:

代码语言:javascript
复制
SL.library <- list("SL.glm", "SL.mean")

任何想法都将不胜感激。如果有用的话,我的包装器基本上是从附录B(第585页)复制到M.J. van der Laan和S. Rose有针对性的学习:观察和实验数据的因果推断。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 21:57:22

解决办法很简单。改变

代码语言:javascript
复制
foo <- list(out=out, fit=fit)

代码语言:javascript
复制
foo <- list(pred=out, fit=fit)

成功了。显然,SuperLearner现在需要一个包装器来返回两个对象的列表: pred和fit。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24985221

复制
相关文章

相似问题

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