繁体   English   中英

如何确定地将RMSE错误添加到texreg表

[英]How to definitively add RMSE error to texreg tables

我正在制作一张表格,通过texreg包使用r和Latex比较不同的线性模型(这是我第一次使用此包)。 我发现此程序包非常有用,但是我真的无法理解为什么extract.lm方法中不包含RMSE。

我以这种方式修改了extract.lm方法,将其作为选项包括在内:

extract.lm<-  function (model, include.rsquared = TRUE, include.adjrs = TRUE, include.rmse = TRUE, 
                include.nobs = TRUE, ...) 
      {
        s <- summary(model, ...)
        names <- rownames(s$coef)
        co <- s$coef[, 1]
        se <- s$coef[, 2]
        pval <- s$coef[, 4]
        rs <- s$r.squared
        adj <- s$adj.r.squared
        sig<-s$sigma ##added it
        n <- nobs(model)
        gof <- numeric()
        gof.names <- character()
        gof.decimal <- logical()
        if (include.rsquared == TRUE) {
          gof <- c(gof, rs)
          gof.names <- c(gof.names, "R$^2$")
          gof.decimal <- c(gof.decimal, TRUE)
        }
        if (include.adjrs == TRUE) {
          gof <- c(gof, adj)
          gof.names <- c(gof.names, "Adj. R$^2$")
          gof.decimal <- c(gof.decimal, TRUE)
        }
        if (include.rmse == TRUE) { ##added it
          gof <- c(gof, sig)
          gof.names <- c(gof.names, "RMSE")
          gof.decimal <- c(gof.decimal, TRUE)
        }
        if (include.nobs == TRUE) {
          gof <- c(gof, n)
          gof.names <- c(gof.names, "Num. obs.")
          gof.decimal <- c(gof.decimal, FALSE)
        }
        tr <- createTexreg(coef.names = names, coef = co, se = se, 
                           pvalues = pval, gof.names = gof.names, gof = gof, gof.decimal = gof.decimal)
        return(tr)
      }

然后我在控制台中运行它并搜索以使用它来最终覆盖它

setMethod("extract", signature=className("lm","stats"), definition=extract.lm, where="package:texreg")

这也是作者在rforge上建议的方式,但是我有这个错误

Error in setMethod ...
  the environment "texreg" is locked; cannot assign methods for function

我也尝试过fixInNamespace(),但是即使在终端中插入其名称或使用body()函数,即使可以访问该函数的源,也不会显示body函数(这是我访问并修改它)。

我的错误在哪里? 我该怎么做?

注意:提取是S4的泛型。

请,我想在软件包环境中明确地覆盖该功能。

谢谢!

该错误是由您尝试覆盖程序包环境中的对象引起的。 我建议在您的本地环境中创建该方法,当您结合使用texregextract.lm方法时,R将优先考虑该方法:

setMethod("extract", signature = className("lm", "stats"), 
    definition = extract.lm)

请参阅《统计软件杂志》上文章的第6节: http : //www.jstatsoft.org/v55/i08/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM