2010-01-14 14 views
6

Czy ktoś wie o funkcji, która może utworzyć obiekt Lm, biorąc pod uwagę zestaw danych i współczynniki?Utwórz obiekt Lm z danych/współczynników

Jestem zainteresowany tym, ponieważ zacząłem grać z uśrednieniem modelu Bayesian (BMA) i chciałbym móc stworzyć obiekt Lm z wyników bicreg. Chciałbym mieć dostęp do wszystkich ładnych ogólnych funkcji lm, takich jak drukowanie, prognozowanie, cv.lm itp.

Jeśli jesteś pewien, że taka funkcja nie istnieje, to również bardzo pomocne!

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. Muszę cały czas używać twojego magicFunction. :) – Shane

Odpowiedz

5

Nie ma funkcji, o której jestem świadomy, że to robi. Można oczywiście zrobić. Wszystko to Twój magicFunction musiałby zrobić, to stworzyć listę elementów:

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

następnie sprawiają, że obiekt lm

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

Powiem tylko, że myślę, że jest to zły pomysł, chociaż. Którego powiesz, że funkcja ogólna, którą zastosujesz, będzie miała zastosowanie do obiektu bicreg. Na przykład, jak byś interpretował AIC (fakeModel)?

Lepiej jest tworzyć własne funkcje do wykonywania diagnostyki i prognozowania.

+0

Punkt podjętych w odniesieniu do AIC (fakeModel). Napiszę własne przewidywania i diagnostykę. Dzięki za radę. –

3

Wygląda na to, że możesz jak zwykle obliczyć swój obiekt lm, a następnie zmodyfikować współczynniki, modyfikując atrybut $coefficients swojego wyniku lm().

Patrz na to pytanie i wyników więcej szczegółów:

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

Nie pewien, że odpowiada to, co chcesz zrobić, choć ...

+0

To może zadziałać, ale w przypadku diagnostyki potrzebuję zsynchronizować resztę obiektu. –