首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:如何手动创建类"rq“的对象?

R:如何手动创建类"rq“的对象?
EN

Stack Overflow用户
提问于 2021-09-24 15:19:30
回答 1查看 61关注 0票数 0

如何手动创建类"rq“的对象,以便以后可以使用它运行predict函数?

感谢您非常有用的答复,在本例中,mymdl现在属于"rq“类。将class(mymdl$coefficients) ="numeric"添加到代码中解决了我的主要问题:predict(mymdl)工作。

有趣的是,class(mdl$terms)class(mymdl$terms)有不同之处。如果我设置了class(mymdl$terms) = class(mdl$terms),那么predict(mymdl)会生成NAs。我想知道为什么会这样..。

代码语言:javascript
复制
library(quantreg)

data(engel)                                 #load dataset
engel2 <- engel[1:100,]                     #keep subset for prediction
reg_formula <- foodexp ~ income             #define regression formula
mdl <- rq(reg_formula,.5, data = engel)     #run regression

#------------------------------------------
#remove non-essential information from mdl
#mdl$coefficients <- NULL
mdl$x <- NULL
mdl$y <- NULL
mdl$residuals <- NULL
mdl$dual <- NULL
mdl$fitted.values <- NULL
mdl$formula <- NULL
#mdl$terms <- NULL
mdl$xlevels <- NULL
mdl$call <- NULL
mdl$tau <- NULL
mdl$rho <- NULL
mdl$method <- NULL
mdl$model <- NULL

#Only mdl$coefficients and mdl$terms are
#essential for predicting
#------------------------------------------

engel2$foodexp_pr <- predict(mdl, newdata = engel2) #predict


#create own regression model
mymdl <- NULL
mymdl[["coefficients"]][["(Intercept)"]] <- 81.48225
mymdl[["coefficients"]][["income"]] <- 0.5601806
mymdl$terms <- reg_formula

class(mymdl) <- "rq"
class(mymdl$coefficients) ="numeric"

engel2$foodexp_pr2 <- predict(mymdl, newdata = engel2) #works

#Minor question: why does predict produce NAs in this case?
class(mymdl$terms) = class(mdl$terms)
engel2$foodexp_pr3 <- predict(mymdl, newdata = engel2) #produces NAs

我刚开始上课。欢迎任何帮助和建议。

编辑1:我扩展了我的示例,并包含了您非常有用的反馈。mymdl现在是一个"rq"-class。我还确定了predict函数使用的最基本信息(即mdl$coefficientsmdl$terms)。

编辑2:将我的解决方案添加到示例中。然而,仍有一个小的未决问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 15:27:21

S3类系统非常松散。只需将该对象添加到其类中,就可以使对象成为类"rq“:

代码语言:javascript
复制
class(mymdl) <- "rq"

或者更一般的

代码语言:javascript
复制
class(mymdl) <- c("rq", class(mymdl))

这并不意味着predict.rq会工作;为此,您需要检查它需要什么,这并不总是那么容易。

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

https://stackoverflow.com/questions/69317466

复制
相关文章

相似问题

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