Regressione lineare con R

Regressione lineare

Yi = beta0 + beta1Xi + ei

lm(y~x, tabella)   ' y variabile dipendente, x regressore
coef(lm(y~x, tabella))  ' estrae solo i due coefficienti beta0 e beta1
summary(lm(y~x, tabella))   ' riepilogo dettagliato

per vedere o memorizzare solo un parametro
summary(lm(y~x, tabella))$sigma   # in questo caso estraggo solo la sd dei residui

per costruire sul grafico la retta di regressione con g = grafico già costruito
g + geom.smooth(method="lm", formula=y~x)   # posso anche omettere il parametro "formula" (di default usa y dipendente e x regressore

Usando:
lm(y~I(x-mean(x)), data=tabella))   # se voglio usare una funzione devo usare I()
In questo modo: beta1 (pendenza) rimane invariato (incremento di y per ogni incremento unitario di x)
beta0 (intercetta) diventa y atteso per valore medio di x

Per fare una previsione usando la retta di regressione:
Predict(lm([...]), newdata=data.frame(x=[valore o vettore di valori di x per previsione y[)
Il risultato è uguale a calcolare y sostituendo x e i coefficienti

resid(lm[...])   # calcola i residui (omettendo il parametro newdata usa i parametri di lm, quindi calcola tutti i residui per ogni coppia di x e y (sum(resid(lm[...])) è naturalmente 0)


SINTESI FUNZIONE lm

model <- lm(y ~ 1)     ## Intercept only (no slope coefficient)
model <- lm(y ~ x - 1) ## Slope only (no intercept coefficient)
model <- lm(y ~ x)     ## Intercept & slope (x is not a factor)
model <- lm(y ~ w)     ## Intercepts only (w is a factor)
model <- lm(y ~ x + w) ## Intercepts & slope against confounding x & w
model <- lm(y ~ x * w) ## Intercepts & slopes against interacting x & w

lm(y ~ 1)     :   yhat = B0
lm(y ~ x - 1) :   yhat = B1*x
lm(y ~ x)     :   yhat = B0 + B1*x
lm(y ~ w)     :   yhat = B0 + B2*w
lm(y ~ x + w) :   yhat = B0 + B1*x + B2*w
lm(y ~ x * w) :   yhat = B0 + B1*x + B2*w + B3*x*w


lm(y ~ I(log(x)) + w) :   yhat = B0 + B1*log(x) + B2*w
lm(y ~ I(log(x)) * w) :   yhat = B0 + B1*log(x) + B2*w + B3*log(x)*w


No comments:

Post a Comment