2013-09-28 5 views
5

Ho un modello di regressione multipla. Voglio aggiungere i valori adattati e residui all'originale data.frame come due nuove colonne. Come posso ottenerlo? Il mio modello in R è come questo:In R, come aggiungere la colonna del valore adattato al dataframe originale?

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

ho anche avuto il valore stimato

BD_fit<-fitted(BD_lm) 

Ma voglio aggiungere questo BD_fit valori come una colonna per i miei dati originali BD. Non so come. Quando ho provato a chiamare BD_fit, mi ha dato solo un sacco di numeri. Sto eseguendo un set di dati di grandi dimensioni, quindi è difficile elencarli tutti qui.

+0

Benvenuti in SO. Per favore leggi [this] (http://meta.stackoverflow.com/help/how-to-ask) e [this] (http://stackoverflow.com/questions/5963269/how-to-make-a-great -r-riproducibili-esempio/5963610 # 5963610). Per favore, mostraci anche quello che hai provato. Grazie. – Henrik

+0

Vedi questo messaggio Cross convalidato per informazioni utili sulla gestione dei valori previsti quando la regressione utilizza un sottoinsieme dei dati totali: https://stats.stackexchange.com/questions/11000/how-does-r-handle-missing-values- in-lm –

risposta

12

Supponiamo:

fm <- lm(demand ~ Time, BOD) 

Allora provate questo:

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

o questo:

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

aggiunto:

Se avete NA valori in demand quindi i valori e i residui corretti avranno una lunghezza diversa rispetto al numero di righe dei dati, il che significa che non funzionerà. In tal caso d'uso: na.exclude simili:

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

na.exclude verrà automaticamente pad le previsioni e residui con NA valori in modo che essi sono della stessa lunghezza dati originali. Ora le linee precedenti dovrebbero funzionare.

+0

Ho provato quello che mi hai suggerito, ma ho ricevuto un errore: "Errore in data.frame (..., check.names = FALSE): gli argomenti implicano un numero diverso di righe: 355027, 53467" Il 355027 è il numero di riga dei miei dati originali e 53467, non sono sicuro di cosa si tratta. forse il problema è che i miei valori adattati non sono lo stesso numero dei dati originali? sto ancora cercando di capire. – titi

+0

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

+0

@titi Mancano valori in BD? Non otterrai una previsione per qualsiasi record con valori mancanti, che renderà il tuo vettore di valori adattati più corto del tuo frame di dati originale. –

0

Pur non conoscendo il tuo caso in dettaglio, l'aggiunta a un frame di dati è abbastanza semplice. Si potrebbe jsut aggiungere una nuova colonna in questo modo:

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

Devi solo fare in modo che le colonne di dati aggiuntivi hanno la stessa lunghezza di quelli originali. Altrimenti, non sarai in grado di aggiungerli al tuo data frame.

0
BD_fit<-data.frame(BD_fit) 
BD$fit<-BD_fit[1]