R中标准模型对象的关键组件和功能是什么?

时间:2011-07-27 18:34:00

标签: r statistics modeling

我在R中实现了一个新的统计模型,它可以在我的沙盒中工作,但我想让它更标准。一个很好的比较是lm(),我可以在这里拿一个模型对象:

  • 应用summary()功能
  • 提取模型的系数
  • 从拟合(训练)数据中提取残差
  • 更新模型
  • 应用predict()功能
  • plot()应用于预先选择的描述性地块
  • 从事许多其他类型的欢乐

我查看了R手册,在线搜索,翻阅了几本书,除非我忽略了什么,否则我找不到一个关于应该进入新模型包的好教程。

虽然我最感兴趣的是完整的参考资料或指南,但我会将这篇文章重点放在一个有两个组成部分的问题上:

  1. 通常期望在模型对象中有哪些关键组件?
  2. 通常在建模包中实现的典型函数是什么?
  3. 答案可以来自R Core(或软件包开发人员)的角度,也可以来自用户的角度,例如:用户希望能够使用汇总,预测,残差,系数等函数,并且通常希望在拟合模型时传递公式。

4 个答案:

答案 0 :(得分:28)

将您认为有用且必要的内容放入对象中。我认为一个更重要的问题是如何包含这些信息,以及如何访问它。

至少提供print()方法,以便在打印对象时不会将整个对象转储到屏幕上。如果您提供summary()方法,则约定是让该对象返回类summary.foo的对象(其中foo是您的类),然后提供print.summary.foo()方法 - - 您不希望summary()方法进行任何打印。

如果您有系数,拟合值和残差且这些很简单,那么您可以将它们分别存储在返回的对象中$coefficients$fitted.values$residuals。然后coef()fitted()resid()的默认方法无需添加您自己的定制方法即可使用。如果这些不简单,请为您的班级提供coef()fitted.values()residuals()自己的方法。简单来说,我的意思是,例如,如果存在多种类型的残差,并且您需要处理存储的残差以获取所请求的类型 - 那么您需要自己的方法,该方法采用type参数或类似从可用的残差类型中进行选择。有关示例,请参阅?residuals.glm

如果预测是可以有用的,那么可以提供predict()方法。例如,查看predict.lm()方法以查看应采用的参数。同样,如果通过添加/删除术语或更改模型参数来更新模型,则可以提供update()

plot.lm()给出了一个方法示例,该方法提供了拟合模型的几个诊断图。您可以在该函数上建模您的方法,以从一组预定义的诊断图中进行选择。

如果您的模型具有可能性,那么提供logLik()方法来计算或从拟合模型对象中提取它将是标准的,deviance()是另一个类似的函数,如果这样的事情是相关的。对于参数的置信区间,confint()是标准方法。

如果您有公式界面,那么formula()方法可以提取它。如果您将其存储在默认方法搜索的位置,那么您的生活将变得更加轻松。存储此方法的一种简单方法是将匹配的调用(match.call())存储在$call组件中。提取模型框架(model.frame())和模型矩阵(model.matrix())作为数据和扩展(使用对比转换为变量的因子,加上模型框架数据的任何转换或函数)模型的方法矩阵是标准提取器功能。查看标准R建模函数的示例,了解如何存储/提取此信息的想法。

如果使用公式界面,请尝试遵循大多数具有公式接口/方法的R模型对象中使用的标准非标准评估方法。您可以在R Developer页面上找到相关详细信息,特别是Thomas Lumley撰写的document。这提供了大量关于使您的函数工作的建议,就像期望R建模函数一样。

如果您遵循此范例,那么如果您遵循标准(非标准)规则,那么na.action()之类的提取器就可以正常工作。

答案 1 :(得分:5)

根据Gavin的回答,我在开发者网站上找到了this page,其中列出了一长串有用的建议。

此外,Fox和Weisberg撰写的“应用回归的R伴侣”在第8章中介绍了一些关键方法。我发现通过在各种R书中寻找模型框架。本书还引用了R开发者网站上的同一页面。

答案 2 :(得分:2)

This可能是另一个好消息来源。

答案 3 :(得分:1)

以下代码:

library(hints)
hints(class="lm")

将为lm提供所有函数:

Functions for lm in package ‘base’:

kappa                   Compute or Estimate the Condition Number of a
                        Matrix
base-defunct            Defunct Functions in Package 'base'
rcond                   Compute or Estimate the Condition Number of a
                        Matrix

Functions for lm in package ‘gam’:

deviance.lm             Service functions and as yet undocumented
                        functions for the gam library

Functions for lm in package ‘gdata’:

nobs                    Compute the Number of Non-missing Observations

Functions for lm in package ‘methods’:

setOldClass             Register Old-Style (S3) Classes and Inheritance

Functions for lm in package ‘stats’:

add1                    Add or Drop All Possible Single Terms to a
                        Model
alias                   Find Aliases (Dependencies) in a Model
anova.lm                ANOVA for Linear Model Fits
case.names.lm           Case and Variable Names of Fitted Models
cooks.distance.lm       Regression Deletion Diagnostics
dfbeta.lm               Regression Deletion Diagnostics
dfbetas.lm              Regression Deletion Diagnostics
drop1.lm                Add or Drop All Possible Single Terms to a
                        Model
dummy.coef.lm           Extract Coefficients in Original Coding
effects                 Effects from Fitted Model
family.lm               Accessing Linear Model Fits
formula.lm              Accessing Linear Model Fits
hatvalues.lm            Regression Deletion Diagnostics
influence.lm            Regression Diagnostics
labels.lm               Accessing Linear Model Fits
logLik                  Extract Log-Likelihood
model.frame.lm          Extracting the Model Frame from a Formula or
                        Fit
model.matrix.lm         Construct Design Matrices
plot.lm                 Plot Diagnostics for an lm Object
print.lm                Fitting Linear Models
proj                    Projections of Models
residuals.lm            Accessing Linear Model Fits
rstandard.lm            Regression Deletion Diagnostics
rstudent.lm             Regression Deletion Diagnostics
summary.lm              Summarizing Linear Model Fits
variable.names.lm       Case and Variable Names of Fitted Models
vcov                    Calculate Variance-Covariance Matrix for a
                        Fitted Model Object
case.names              Case and Variable Names of Fitted Models
dummy.coef              Extract Coefficients in Original Coding
influence.measures      Regression Deletion Diagnostics
lm.influence            Regression Diagnostics
lm                      Fitting Linear Models
lm.fit                  Fitter Functions for Linear Models
model.frame             Extracting the Model Frame from a Formula or
                        Fit
model.matrix            Construct Design Matrices
stats-defunct           Defunct Functions in Package 'stats'
lm.glm                  Some linear and generalized linear modelling
                        examples from `An Introduction to Statistical
                        Modelling' by Annette Dobson

Functions for lm in package ‘unknown’:

confint.lm              NA
extractAIC.lm           NA
qr.lm                   NA
simulate.lm             NA

Functions for lm in package ‘VGAM’:

predict.lm              Undocumented and Internally Used Functions and
                        Classes

Functions for lm in package ‘xtable’:

xtable                  Create Export Tables