Подтвердить что ты не робот

Каковы ключевые компоненты и функции для стандартных объектов модели в R?

Я внедрил новую статистическую модель в R, и она работает в моей песочнице, но я хотел бы сделать ее более стандартной. Хорошее сравнение lm(), где я могу взять модельный объект и:

  • применить функцию summary()
  • извлечь коэффициенты модели
  • извлекать остатки из установленных (учебных) данных
  • обновить модель
  • применить функцию predict()
  • применить plot() к предварительно выбранным описательным графикам
  • участвовать во многих других радостях.

Я просматривал руководства R, искал в Интернете и просматривал несколько книг, и, если я не упускаю что-то, я не могу найти хороший учебник о том, что должно входить в новый пакет модели.

Хотя меня больше всего интересуют подробные ссылки или руководства, я буду держать это сообщение сосредоточенным на вопросе с двумя компонентами:

  • Каковы ключевые компоненты, которые обычно ожидаются в модельном объекте?
  • Каковы типичные функции, которые обычно реализуются в пакете моделирования?

Ответы могут быть с точки зрения R Core (или разработчиков пакетов) или с точки зрения пользователей, например. пользователи ожидают, что смогут использовать такие функции, как сводка, предсказание, остатки, коэффициенты и часто ожидают передачи формулы при подгонке модели.

4b9b3361

Ответ 1

Поместите в объект то, что, по вашему мнению, полезно и необходимо. Я думаю, что более важным вопросом является то, как вы включаете эту информацию, а также как ее можно получить.

Как минимум, предоставьте метод 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, в частности, Томаса Ламли. Это дает много советов о том, как работать с вашей функцией, как ожидается, что функция моделирования R будет работать.

Если вы следуете этой парадигме, тогда экстракторы типа na.action() должны работать, только если вы будете следовать стандартным (нестандартным) правилам.

Ответ 2

После ответа Gavin я нашел эту страницу, также на сайте разработчика, с длинным списком полезных предложений.

Кроме того, "An R Companion to Applied Regression", Фокс и Вайсберг, имеет прохождение некоторых из ключевых методов в главе 8. Я обнаружил, что, глядя на упоминания модельных кадров в разных R-книгах. Эта книга также содержит ссылку на ту же страницу на сайте разработчика R.

Ответ 4

Следующий код:

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