Linear Regression with R
Linear Regression:
Yi = beta0 + beta1Xi + ei
lm(y~x, tab) #y dependent variable, x regressor
coef(lm(y~x, tab)) #estract the coefficient beta0 and beta1
summary(lm(y~x, tab)) #detailed summary
To print only a parameter:
summary(lm(y~x, tabella))$sigma #only residual sd
To plot the regression line (g is a pre builded graph):
g + geom.smooth(method="lm", formula=y~x) #formula is optional (y~x is the default)
I() if I want to use a function:
lm(y~I(x-mean(x)), data=tab))
beta1 (slope) unchanged (y increase for each increase of x)
beta0 (intercept) became y expected for each average value of x
To predict using the regression line:
Predict(lm(y~x, tab), newdata=data.frame(x=z)) #z is a vector with x values
Residuals:
resid(lm(y~x, tab))
Without "newdata" it uses the lm parameters, so it calculates residuals for each x and y
SUMMARY LM FUNCTION
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 = B1x
lm(y ~ x) yhat = B0 + B1x
lm(y ~ w) yhat = B0 + B2w
lm(y ~ x + w) yhat = B0 + B1x + B2w
lm(y ~ x \ w) yhat = B0 + B1x + B2w + B3x\w
lm(y ~ I(log(x)) + w) yhat = B0 + B1log(x) + B2w
lm(y ~ I(log(x)) * w) yhat = B0 + B1log(x) + B2w + B3*log(x)*w