¿Cuáles son los componentes y funciones clave para los objetos modelo estándar en R?
He implementado un nuevo modelo estadístico en R y funciona en mi sandbox, pero me gustaría hacerlo más estándar. Una buena comparación es lm()
, donde puedo tomar un objeto modelo y:
- aplica la función
summary()
- extraer los coeficientes del modelo
- extraer los residuos de los datos ajustados (de entrenamiento)
- actualizar el modelo
- aplica la función
predict()
- aplicar
plot()
a las parcelas descriptivas preseleccionadas - participar en muchos otros tipos de alegría
He mirado a través de los manuales de R, buscado en línea, y hojeado a través de varios libros, y, a menos que estoy pasando por alto algo, no puedo encontrar un buen tutorial sobre lo que debe ir en un nuevo paquete modelo.
Aunque estoy más interesado en referencias exhaustivas o guías, mantendré este post enfocado en una pregunta con dos componentes:
- ¿Cuáles son los componentes clave que normalmente se espera que estén en un objeto modelo?
- ¿Cuáles son las funciones típicas que generalmente se implementan en un paquete de modelado?
Las respuestas podrían ser desde la perspectiva del Núcleo R (o desarrolladores de paquetes) o desde la perspectiva de los usuarios, por ejemplo, los usuarios esperan poder usar funciones como resumen, predicción, residuos, coeficientes, y a menudo esperan pasar una fórmula cuando se ajusta un modelo.
4 answers
Pon en el objeto lo que creas útil y necesario. Creo que una pregunta más importante es cómo incluir esta información, así como cómo se accede a ella.
Como mínimo, proporcione un método print()
para que el objeto completo no se vierta en la pantalla cuando imprima el objeto. Si proporciona un método summary()
, la convención es que ese objeto devuelva un objeto de clase summary.foo
(donde foo
es su clase) y luego proporcione un método print.summary.foo()
- - - no desea que su summary()
método de hacer cualquier impresión en sí mismo.
Si tiene coeficientes, valores ajustados y residuos y estos son simples, entonces puede almacenarlos en su objeto devuelto como $coefficients
, $fitted.values
y $residuals
respectivamente. A continuación, los métodos predeterminados para coef()
, fitted()
y resid()
funcionará sin necesidad de agregar sus propios métodos a medida. Si estos no son simples, a continuación, proporcionar sus propios métodos para coef()
, fitted.values()
y residuals()
para su clase. Por no simple, me refiero, por ejemplo, si hay varios tipos de residuales y necesita procesar los residuos almacenados para obtener el tipo solicitado --- entonces necesita su propio método que tome un argumento type
o similar para seleccionar entre los tipos de residuales disponibles. Véase ?residuals.glm
para un ejemplo.
Si las predicciones son algo que se puede proporcionar útilmente, entonces se podría proporcionar un método predict()
. Mire el método predict.lm()
por ejemplo para ver qué argumentos se deben tomar. Del mismo modo, se puede proporcionar un update()
si tiene sentido actualizar el modele agregando / eliminando términos o alterando parámetros del modelo.
plot.lm()
da un ejemplo de un método que proporciona varias gráficas de diagnóstico del modelo ajustado. Puede modelar su método en esa función para seleccionar de un conjunto de gráficos de diagnóstico predefinidos.
Si su modelo tiene una probabilidad, entonces proporcionar un método logLik()
para computarlo o extraerlo del objeto modelo ajustado sería estándar, deviance()
es otra función similar si tal cosa es pertinente. Para la confianza intervalos en parámetros, confint()
es el método estándar.
Si tiene una interfaz de fórmula, entonces los métodos formula()
pueden extraerla. Si lo guardas en un lugar que busca el método predeterminado, entonces tu vida será más fácil. Una forma sencilla de almacenar esto es almacenar la llamada coincidente (match.call()
) en el componente $call
. Métodos para extraer el marco del modelo (model.frame()
) y la matriz del modelo (model.matrix()
) que son los datos y los expandidos (factores convertidos en variables utilizando contrastes, más cualquier transformaciones o funciones de los datos del marco del modelo) la matriz del modelo son funciones estándar del extractor. Vea ejemplos de funciones de modelado R estándar para obtener ideas sobre cómo almacenar/extraer esta información.
Si utiliza una interfaz de fórmula, intente seguir el método de evaluación estándar no estándar utilizado en la mayoría de los objetos del modelo R que tienen una interfaz/método de fórmula. Puede encontrar detalles de eso en la página R Developer , en particular el documento de Thomas Lumley. Esto da un montón de consejos sobre cómo hacer que su función funcione como uno espera una función de modelado R para trabajar.
Si sigues este paradigma, entonces los extractores como na.action()
deberían funcionar si sigues las reglas estándar (no estándar).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-27 19:46:29
Siguiendo la respuesta de Gavin, encontré esta página, también en el sitio del desarrollador, con una larga lista de sugerencias útiles.
También, "An R Companion to Applied Regression", por Fox y Weisberg, tiene un recorrido por algunos de los métodos clave, en el Capítulo 8. Lo encontré buscando menciones de marcos de modelos en varios libros de R. Este libro también tiene una referencia a la misma página en el sitio de desarrolladores de R.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-04 06:52:32
Esta podría ser otra buena fuente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-28 03:31:56
El siguiente código:
library(hints)
hints(class="lm")
Proporcionará todas las funciones para lm como:
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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-24 16:32:23