2013-09-28 16 views
5

Mam model regresji wielokrotnej. Chcę dodać dopasowane wartości i szczątki do oryginału data.frame jako dwie nowe kolumny. Jak mogę to osiągnąć? Mój model w R jest tak:W R, jak dodać kolumnę z dopasowaną wartością do oryginalnej ramki danych?

BD_lm <- lm(y ~ x1+x2+x3+x4+x5+x6, data=BD) 
summary(BD) 

Dostałam też wartość wyposażoną

BD_fit<-fitted(BD_lm) 

Ale chcę dodać to BD_fit wartości jako kolumny do moich oryginalnych danych BD. Nie wiem jak. Kiedy próbowałem zadzwonić pod numer BD_fit, po prostu dało mi to dużo numerów. Używam dużego zestawu danych, więc trudno tutaj wymienić wszystkie.

+0

Witamy w SO. Proszę przeczytać [to] (http://meta.stackoverflow.com/help/how-to-ask) i [this] (http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-odtwarzalny-przykład/5963610 # 5963610). Pokaż nam również, co wypróbowałeś. Dzięki. – Henrik

+0

Zobacz ten sprawdzany krzyżowo post, aby uzyskać przydatne informacje na temat obsługi przewidywanych wartości, gdy regresja używa podzbioru danych: https://stats.stackexchange.com/questions/11000/how-does-r-handle-missing-values- in-lm –

Odpowiedz

12

Załóżmy:

fm <- lm(demand ~ Time, BOD) 

Następnie spróbuj tego:

cbind(BOD, resid = resid(fm), fitted = fitted(fm)) 

czy to:

BOD$resid <- resid(fm) 
BOD$fitted <- fitted(fm) 

DODANO:

Jeśli masz NA wartości w demand wtedy twoje dopasowane wartości i reszty będą miały inną długość niż liczba wierszy danych, co oznacza, że ​​powyższe nie zadziała. W takim przypadku użytkowania: na.exclude tak:

BOD$demand[3] <- NA # set up test data 
fm <- lm(demand ~ Time, BOD, na.action = na.exclude) 

na.exclude automatycznie pad przewidywania i pozostałości z NA wartości tak, że są tej samej długości co oryginalny danych. Teraz poprzednie linie powinny działać.

+0

Próbowałem, co sugerujesz, ale mam błąd: "Błąd w data.frame (..., check.names = FALSE): argumenty sugerują różne liczby wierszy: 355027, 53467" 355027 jest numer wiersza moich oryginalnych danych i 53467, nie jestem pewien co to jest. może problem polega na tym, że moje dopasowane wartości nie są takie same jak oryginalne dane? wciąż próbuję to rozgryźć. – titi

+0

Przeczytaj to: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@titi Czy masz brakujące wartości w BD? Nie dostaniesz prognozy dla jakichkolwiek rekordów z brakującymi wartościami, które sprawią, że twój wektor dopasowanych wartości będzie krótszy niż oryginalna ramka danych. –

0

Pomimo braku szczegółowego rozpoznania sprawy, dodanie do ramki danych jest dość łatwe. Można jsut dodać nową kolumnę tak:

df <- data.frame(var1=1:10) 
df$var2 <- 11:20 

Musisz tylko upewnić się, że dodatkowe kolumny danych mają taką samą długość jak oryginalne. W przeciwnym razie nie będzie można ich dodać do ramki danych.

0
BD_fit<-data.frame(BD_fit) 
BD$fit<-BD_fit[1] 
Powiązane problemy