2012-11-14 7 views
8

Kiedy użyć następującego kodu R,Jak zapisać wynik glm bez danych lub tylko z współczynnikami prognozy?

model_glm=glm(V1~. , data=xx,family="binomial"); 
save(file="modelfile",model_glm); 

Wielkość modelfile będzie tyle, ile danych, które będą 1gig w moim przypadku. Jak mogę usunąć część danych w wyniku modelu_glm, więc mogę tylko zapisać mały plik.

+0

Użyj 'biglm' pakiet – hadley

+3

Set' Model = FALSE w wywołaniu 'glm' zapobieżenia model.frame od zwracane. – BenBarnes

Odpowiedz

6

Ustawienie numeru model = FALSE w swoim połączeniu z numerem glm powinno uniemożliwić zwrócenie numeru model.frame. Ustawienie wartości y = FALSE spowoduje, że wektor odpowiedzi nie zostanie zwrócony. x = FALSE jest ustawieniem domyślnym i zapobiega zwracaniu model.matrix.

Ta kombinacja powinna zmniejszyć rozmiar twojego obiektu glm.

Oczywiście, można także wyodrębnić współczynniki z coef(model_glm) lub z błędów standardowych,

summary(model_glm)$coef 
+0

Czy spojrzałeś na wynikowy model? Nadal jest bardzo ciężki: reszty, dopasowane wartości i pełna matryca qr. Pakiet 'biglm' zwraca znacznie lżejsze obiekty modelu. – hadley

+0

Tak, funkcja 'bigglm' może być realną alternatywą. Jeśli opublikujesz to jako odpowiedź, otrzyma ode mnie głos. Mimo to wciąż możliwe jest wybranie tylko pożądanych składników z obiektu 'glm' przed zapisaniem. – BenBarnes

0

Można NULL danych w modelu obiektu przed zapisaniem. Zrobiłem szybki test i wciąż generowałem prognozy.

model_glm$data <- NULL 
6

miałem ten problem, gdzie byłem z systemem GLM w ramach R w produkcji i wielkości GLM znacznie zwolnił mnie. Odkryłem, że muszę zabić więcej niż tylko $data. Here to mój post na tym przykładzie z poniższym przykładem.

> object.size(sg) 
96499472 bytes 
> sg$residuals <- NULL 
> sg$weights <- NULL 
> sg$fitted.values <- NULL 
> sg$prior.weights <- NULL 
> sg$na.action<- NULL 
> sg$linear.predictors <- NULL 
> sg$fitted.values <- NULL 
> sg$effects <-NULL 
> sg$data <- NULL 
> object.size(sg) 
3483976 bytes 
> sg$qr$qr <- NULL 
> object.size(sg) 
79736 bytes 
+0

Tylko komentarz ... Na twoim blogu ledwo można odczytać rzeczy wyróżnione na żółto –

+0

Można również zrobić coś takiego jak 'sg [c (" residuals "," weight "," fitted.values ​​")] <- NULL' gdzie wektor ten zawiera nazwy wszystkiego, czego chcesz się pozbyć. – Dason

+1

@RichardScriven Oh my - spalił moje oczy. – Dason

Powiązane problemy