Каковы основные компоненты и функции для стандартных объектов модели в R? - PullRequest
25 голосов
/ 27 июля 2011

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

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

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

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

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

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

Ответы [ 4 ]

28 голосов
/ 27 июля 2011

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

Как минимум, укажите метод 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() должны просто работать, если вы следуете стандартным (нестандартным) правилам.

5 голосов
/ 28 июля 2011

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

Кроме того, "Компаньон R в прикладной регрессии"У Фокса и Вайсберга в главе 8 рассказывается о некоторых ключевых методах. Я обнаружил, что, ища упоминания о модельных кадрах в различных книгах R.В этой книге также есть ссылка на ту же страницу на сайте разработчиков R.

2 голосов
/ 28 июля 2011

Этот может быть другим хорошим источником.

1 голос
/ 24 декабря 2013

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

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
...