2010-01-14 23 views
6

¿Alguien sabe de una función que puede crear un objeto lm dado un conjunto de datos y coeficientes?Crear objeto lm a partir de datos/coeficientes

Me interesa esto porque comencé a jugar con el promedio del modelo bayesiano (BMA) y me gustaría poder crear un objeto lm a partir de los resultados de bicreg. Me gustaría tener acceso a todas las lindas funciones genéricas de lm, como el trazado de diagnóstico, predecir, cv.lm, etc.

Si está seguro de que tal función no existe, ¡también es muy útil saberlo!

library(BMA) 
mtcars_y <- mtcars[, 1] #mpg 
mtcars_x <- as.matrix(mtcars[,-1]) 
res <- bicreg(mtcars_x, mtcars_y) 

summary(res) 
res$postmean # bma coefficients 

# The approximate form of the function 
# I'm looking for 
lmObject <- magicFunction(data=mtcars, coefficients=res$postmean) 
+0

Wow. Tengo que empezar a usar tu magicFunction todo el tiempo. :) – Shane

Respuesta

5

No hay ninguna función que yo sepa que lo haga. Por supuesto, se podría hacer. Todo lo que tendría que hacer su magicFunction es crear una lista con los elementos:

> names(fakeModel) 
[1] "coefficients" "residuals"  "effects"  "rank"   
[5] "fitted.values" "assign"  "qr"   "df.residual" 
[9] "xlevels"  "call"   "terms"   "model" 

continuación, hacer que un objeto lm

> class(fakeModel) <- c("lm") 

Me dejaron de decir que creo que esto es una mala idea sin embargo. Cuyo decir que la función genérica que aplique será aplicable a un objeto bicreg. Por ejemplo, ¿cómo interpretaría AIC (fakeModel)?

Será mejor que cree sus propias funciones para hacer diagnósticos y predicciones.

+0

Punto tomado con respecto a AIC (fakeModel). Escribiré mis propias predicciones y diagnósticos. Gracias por el consejo. –

3

Parece que puede calcular su objeto lm como de costumbre, y luego modificar los coeficientes luego modificando el atributo $coefficients de su resultado lm().

Ver esta pregunta y los resultados para más detalles:

http://tolstoy.newcastle.edu.au/R/e2/help/07/08/24294.html

No estoy seguro de que corresponde a lo que quiere hacer, aunque ...

+0

Eso podría funcionar para predecir pero para el diagnóstico, necesitaría mantener el resto del objeto sincronizado. –

Cuestiones relacionadas