studio - superponer graficas en r
¿Cuáles son los componentes y funciones clave para los objetos del modelo estándar en R? (4)
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
He implementado un nuevo modelo estadístico en R y funciona en mi caja de arena, pero me gustaría hacerlo más estándar. Una buena comparación es lm()
, donde puedo tomar un objeto modelo y:
- aplicar la función de
summary()
- extraer los coeficientes del modelo
- extraer los residuos de los datos ajustados (entrenamiento)
- actualizar el modelo
- aplicar la función de
predict()
- aplicar el
plot()
a los gráficos descriptivos preseleccionados - participar en muchos otros tipos de alegría
Busqué en los manuales de R, busqué en línea y hojeé varios libros y, a menos que esté pasando por alto algo, no puedo encontrar un buen tutorial sobre lo que debería incluir un nuevo modelo de paquete.
Aunque estoy más interesado en referencias o guías completas, mantendré esta publicación centrada 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 normalmente se implementan en un paquete de modelado?
Las respuestas pueden ser desde la perspectiva de R Core (o de los 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 aprobar una fórmula al ajustar un modelo.
Pon en el objeto lo que creas que es ú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 descargue en la pantalla cuando imprima el objeto. Si proporciona un método summary()
, la convención es que ese objeto devuelva un objeto de la clase summary.foo
(donde foo
es su clase) y luego proporcione un método print.summary.foo()
--- no lo hace desea que su método de summary()
realice cualquier impresión en sí mismo.
Si tiene coeficientes, valores ajustados y residuales y estos son simples, entonces puede almacenarlos en su objeto devuelto como $coefficients
, $fitted.values
y $residuals
respectivamente. Entonces, los métodos predeterminados para coef()
, fitted()
y resid()
funcionarán sin que tenga que agregar sus propios métodos a medida. Si estos no son simples, entonces proporcione sus propios métodos para coef()
, fitted.values()
y residuals()
para su clase. Por no simple, quiero decir, por ejemplo, si hay varios tipos de residuos y necesita procesar los residuos almacenados para obtener el tipo solicitado --- entonces necesita su propio método que toma un argumento de type
o similar para seleccionar Tipos de residuos disponibles. Vea ?residuals.glm
para un ejemplo.
Si las predicciones son algo que se puede proporcionar de manera útil, entonces se podría proporcionar un método predict()
. Mire el método predict.lm()
, por ejemplo, para ver qué argumentos deben tomarse. Del mismo modo, se puede proporcionar una update()
si tiene sentido actualizar el modelo agregando / eliminando términos o modificando los parámetros del modelo.
plot.lm()
proporciona un ejemplo de un método que proporciona varios gráficos de diagnóstico del modelo ajustado. Podría 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 el suministro de 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 los intervalos de confianza en los 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 almacena en un lugar que busque el método predeterminado, su vida se hará 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 la expansión (factores convertidos en variables mediante contrastes, más cualquier transformación o función del modelo de datos del marco) Las matrices son funciones extractoras estándar. Mire los ejemplos de las funciones de modelado de 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 que se utiliza 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 document de Thomas Lumley. Esto proporciona muchos consejos para hacer que su función funcione, ya que se espera que una función de modelado R funcione.
Si sigue este paradigma, entonces los extractores como na.action()
solo deberían funcionar si sigue las reglas estándar (no estándar).
Siguiendo la respuesta de Gavin, encontré esta página , también en el sitio del desarrollador, con una larga lista de sugerencias útiles.
Además, "An R Companion to Applied Regression", de Fox y Weisberg, describe algunos de los métodos clave, en el Capítulo 8. Descubrí que al buscar 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 del desarrollador de R.
This podría ser otra buena fuente.