我在R中实现了一个新的统计模型,它可以在我的沙盒中工作,但我想让它更标准。一个很好的比较是lm()
,我可以在这里拿一个模型对象:
summary()
功能predict()
功能plot()
应用于预先选择的描述性地块我查看了R手册,在线搜索,翻阅了几本书,除非我忽略了什么,否则我找不到一个关于应该进入新模型包的好教程。
虽然我最感兴趣的是完整的参考资料或指南,但我会将这篇文章重点放在一个有两个组成部分的问题上:
答案可以来自R Core(或软件包开发人员)的角度,也可以来自用户的角度,例如:用户希望能够使用汇总,预测,残差,系数等函数,并且通常希望在拟合模型时传递公式。
答案 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