Does anyone know of a function that can create an lm object given a dataset and coefficients?
I'm interested in this because I started playing with Bayesian model averaging (BMA) and I'd like to be able to create an lm object out of the results of bicreg. I'd like to have access to all of the nice generic lm functions like diagnostic plotting, predict, cv.lm etc.
If you are pretty sure such a function doesn't exist that's also very helpful to know!
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)
There is no function that I am aware of that does this. One could of course be made. All that your magicFunction would need to do is create a list with elements:
> names(fakeModel)
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"
then make it an lm object
> class(fakeModel) <- c("lm")
Let me just say that I think that this is a bad idea though. Whose to say that the generic function that you apply will be applicable to a bicreg object. For example, how would you interpret AIC(fakeModel)?
You are better off creating your own functions to do diagnostics and prediction.
It seems you can compute your lm
object as usual, and then modify the coefficients afterwards by modifying the $coefficients
attribute of your lm()
result.
See this question and results for more details :
http://tolstoy.newcastle.edu.au/R/e2/help/07/08/24294.html
Not sure it corresponds to what you want to do, though...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With