gpt4 book ai didi

r - `glmRob()` 在给定 `newdata` 参数时不预测

转载 作者:行者123 更新时间:2023-12-04 15:10:18 25 4
gpt4 key购买 nike

以下是 glmRob() 示例中的一些稍作修改的代码。当给定 newdata 参数时,predict.glmRob() 会出错。我做错了什么吗?

suppressMessages(library(robust))
data(breslow.dat)
bres.rob <- glmRob(sumY ~ Age10 + Base4 * Trt, family = poisson(), data = breslow.dat)
predict(bres.rob, newdata = breslow.dat)

Error in NextMethod("predict"): no method to invoke

devtools::session_info()
#> ─ Session info ─────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.0.3 (2020-10-10)
#> os macOS Catalina 10.15.7
#> system x86_64, darwin17.0
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz America/Los_Angeles
#> date 2020-12-14
#>
#> ─ Packages ─────────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0)
#> callr 3.5.1 2020-10-13 [1] CRAN (R 4.0.2)
#> cli 2.2.0 2020-11-20 [1] CRAN (R 4.0.3)
#> crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0)
#> DEoptimR 1.0-8 2016-11-19 [1] CRAN (R 4.0.0)
#> desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.0)
#> devtools 2.3.2 2020-09-18 [1] CRAN (R 4.0.2)
#> digest 0.6.27 2020-10-24 [1] CRAN (R 4.0.2)
#> ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.0)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0)
#> fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0)
#> fit.models * 0.64 2020-08-02 [1] CRAN (R 4.0.2)
#> fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2)
#> highr 0.8 2019-03-20 [1] CRAN (R 4.0.0)
#> htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.0)
#> knitr 1.30 2020-09-22 [1] CRAN (R 4.0.2)
#> lattice 0.20-41 2020-04-02 [1] CRAN (R 4.0.3)
#> magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.0.2)
#> MASS 7.3-53 2020-09-09 [1] CRAN (R 4.0.3)
#> memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.0)
#> mvtnorm 1.1-1 2020-06-09 [1] CRAN (R 4.0.0)
#> pcaPP 1.9-73 2018-01-14 [1] CRAN (R 4.0.0)
#> pkgbuild 1.1.0 2020-07-13 [1] CRAN (R 4.0.0)
#> pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.0)
#> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0)
#> processx 3.4.5 2020-11-30 [1] CRAN (R 4.0.2)
#> ps 1.5.0 2020-12-05 [1] CRAN (R 4.0.2)
#> R6 2.5.0 2020-10-28 [1] CRAN (R 4.0.2)
#> remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2)
#> rlang 0.4.9 2020-11-26 [1] CRAN (R 4.0.2)
#> rmarkdown 2.5 2020-10-21 [1] CRAN (R 4.0.2)
#> robust * 0.5-0.0 2020-03-08 [1] CRAN (R 4.0.0)
#> robustbase 0.93-6 2020-03-23 [1] CRAN (R 4.0.0)
#> rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.0.2)
#> rrcov 1.5-5 2020-08-03 [1] CRAN (R 4.0.2)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0)
#> stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.2)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.0)
#> testthat 3.0.0 2020-10-31 [1] CRAN (R 4.0.2)
#> usethis 1.6.3 2020-09-17 [1] CRAN (R 4.0.2)
#> withr 2.3.0 2020-09-22 [1] CRAN (R 4.0.2)
#> xfun 0.19 2020-10-30 [1] CRAN (R 4.0.2)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0)
#>
#> [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library

reprex package 创建于 2020-12-14 (v0.3.0)

值得注意的是,完全相同的事情确实适用于常规 glm()

suppressMessages(library(robust))
data(breslow.dat)
bres.glm <- glm(sumY ~ Age10 + Base4 * Trt, family = poisson(), data = breslow.dat)
predict(bres.glm, newdata = breslow.dat)
#> 1 2 3 4 5 6 7 8
#> 2.957756 2.933407 2.704879 3.015431 3.913226 3.250763 2.979112 4.101214
#> 9 10 11 12 13 14 15 16
#> 3.360129 2.863352 3.955120 3.257157 2.912460 3.741554 4.459110 3.668917
#> 17 18 19 20 21 22 23 24
#> 3.034205 5.093412 3.131601 2.906475 2.930414 2.671553 3.110244 3.174723
#> 25 26 27 28 29 30 31 32
#> 3.873096 3.134184 2.644211 3.507451 3.917288 3.375050 2.641300 2.675629
#> 33 34 35 36 37 38 39 40
#> 2.592602 2.854897 3.163672 2.890335 2.625822 3.756825 3.201280 2.557211
#> 41 42 43 44 45 46 47 48
#> 2.784067 2.988840 3.585320 3.060731 3.448097 2.484164 3.182476 2.577124
#> 49 50 51 52 53 54 55 56
#> 5.757692 3.003209 3.274328 3.308657 3.525533 3.268830 2.863768 2.857114
#> 57 58 59
#> 2.805090 2.891444 2.892553

reprex package 创建于 2020-12-14 (v0.3.0)

最佳答案

只需取出 newdata 参数,因为您在相同的数据上运行它。

来自强大的文档 here

newdata - 可选的数据框,在其中查找用于预测的变量。如果省略,则使用拟合线性预测变量。

编辑添加

其中一位列出的作者回复并建议使用包“robustbase”(他是其维护者)而不是“robust”,因为前者使用的方法更现代,并且有更广泛的测试和支持示例。

这是我的示例代码,用于快速比较两者。请注意,robustbase 的 glmrob 中的 'r' 是小写的。

library(robustbase)
library(robust)
data(breslow.dat)

## Comparison of methods.

bres.robustbase <- glmrob(sumY ~ Age10 + Base4 * Trt, family = poisson, data = breslow.dat)
predict(bres.robustbase, newdata = breslow.dat)

bres.robust <- glmRob(sumY ~ Age10 + Base4 * Trt, family = poisson(), data = breslow.dat)
predict(bres.robust)

## predict handling test data on robustbase's glmrob object.

lastIndex = round(nrow(breslow.dat)*0.7)
train = breslow.dat[1:lastIndex,]
test = breslow.dat[(lastIndex + 1):nrow(breslow.dat),]

bres.robustbase <- glmrob(sumY ~ Age10 + Base4 * Trt, family = poisson, data = train)
predict(bres.robustbase, newdata = test)

请注意,在 glmrobglmRob 之间,您会得到不同的系数估计值和预测值。目前我无法判断哪一个更准确(希望你不会),但我已经跟进了我们的作者,看他是否可以给出可以张贴在这里的高级解释。

关于r - `glmRob()` 在给定 `newdata` 参数时不预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65294925/

25 4 0
文章推荐: python - SODA API 未返回数据集中的所有字段
文章推荐: javascript - 子元素在shadow dom中的使用