Voglio calcolare una regressione lineare utilizzando la funzione lm() in R. Inoltre, voglio ottenere la pendenza di una regressione, in cui fornisco esplicitamente l'intercetta a lm()
.Regressione lineare con intercetta fissa nota in R
Ho trovato un esempio su Internet e ho provato a leggere l'R-help "? Lm" (purtroppo non sono in grado di capirlo), ma non ci sono riuscito. Qualcuno può dirmi dov'è il mio errore?
lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin$x, lin$y)
regImp = lm(formula = lin$x ~ lin$y)
abline(regImp, col="blue")
# Does not work:
# Use 1 as intercept
explicitIntercept = rep(1, length(lin$x))
regExp = lm(formula = lin$x ~ lin$y + explicitIntercept)
abline(regExp, col="green")
Grazie per il vostro aiuto.
o 'I (x - 1.0) ~ y-1' surpresses raccordo dell'intercetta pure. –
@Joris Meys: Sì. Credo che i due modi siano sinonimi. Ho scelto l'altro modo per evitare di avere due termini '-1 'e dover spiegare quale è quale. – NPE
Ma quando traccia la curva di regressione ablina (regExp, col = "green"), non passa attraverso 1. Non ho capito come estrarre la pendenza (e/o intercetta) dall'output di lm. Per me sembra che devi sempre conoscere la posizione dei valori nell'array coef e poi estrarre (e sperare che la posizione sia corretta). Quindi, il seguente codice è la "via d'oro" per tracciare la curva di regressione corretta? 'abline (b = coef (regExp) [1], a = explicitIntercept, col =" green ")' –