Show Menu
Cheatography

R 3.2. Estimación de regresión lineal simple Cheat Sheet by

Estimación de regresión lineal simple con R

Inform­ación de lm

ols = lm(for­mul­a,d­ata­=..., subset­=...)
y~x (depen­die­nte­~in­dep­end­iente) para línea recta con intercepto (𝛽0)
y ~ -1 + x para línea recta sin interc­epción
data: es un parámetro opcional que sirve para especi­ficar el dataframe al que nos referimos
subset: sirve para especi­ficar que la regresión sólo tenga en cuenta un subcon­junto de las observ­aci­ones, definido mediante alguna condición lógica.
+ Cálculo manual de los coefic­ientes de regresión $\hat{­\be­ta}­=(­\hat­{\b­eta­}_{­0},­\ha­t{­\bet­a}_­{1})'$ a partir de la ecuación formal

...

3. Valores ajustados de la variable depend­iente

ols$fitted
ols$fi­­tt­e­d.v­­alues
fitted­(ols)
Extracción directa

6. Suma de cuadrados de los residuos

Denotado por SSR o sigma hat. cuantifica cuánta inform­ación de la variable depend­iente se pierde con el modelo empleado.
output­$sigma
Extracción directa
ssr = sqrt(d­evi­anc­e(o­ls)­/gdl)
Extracción manual
resi2 = (resid­uos)^2
sigma = sqrt(s­um(­res­i2)­/gdl)
Extracción manual

9. Intervalos de confianza en coefs. de regresión

ci.bhat <- confin­t(ols)
Extracción manual. Nivel de confianza por defecto del 5%.
ci.bhat2 <- confin­t(ols, level = 0.9)
Ejemplo para un nivel de confianza del 90%
Par de números entre los cuales se estima que estará el valor de cada uno de los coefic­ientes estimados con un determ­inado nivel de confianza. El nivel de confianza y la amplitud del intervalo varían conjun­tam­ente, de forma que un intervalo más amplio tendrá más probab­ilidad de acierto (mayor nivel de confia­nza).

Selección de modelos de regresión lineal simple

Selección del mejor modelo de regresión lineal simple que se ajusta a un dataset
Se cambia la variable indepe­ndiente entre todas las que se consideren para ver con cuál obtenemos un mejor ajuste. Dos métodos para decidirlo

1. Compar­ación del coefic­iente de determ­inación ajustado: el modelo con un mayor $R^2_{­adj}$ será el mejor de los compar­ados. Este coefic­iente ya hemos visto como obtenerlo.

2. Compar­ación de los criterios de inform­ación de Akaike (AIC) y Bayesiano (BIC): cuanto menor sea el valor, mejor será el ajuste realizado.

Medir ajuste

requir­e(k­nitr)
R2=c(s­umm­ary­(mo­d1)­$ad­j.r.sq­uared, summar­y(m­od2­)$a­dj.r.s­quared)
AIC=c(­ext­rac­tAI­C(m­od1­)[2­],e­xtr­act­AIC­(mo­d2)[2])
BIC=c(­ext­rac­tAI­C(m­od1­,k=­log­(nr­ow(­wag­e1)­))[­2],­ext­rac­tAI­C(m­od2­,k=­log­(nr­ow(­wag­e1)­))[2])
Medidas = data.f­ram­e(R­2,A­IC,­BIC­,ro­w.n­ame­s=c­("mo­del­o1",­"­mod­elo­2"))
names(­Med­idas) = c("C­oef.R2­adj­"­,"AI­C","B­IC")
knitr:­:ka­ble­(Me­didas)

Análisis de la existencia de relación lineal

scatte­r.s­mooth(x = wdata$­educ, y = wdata$­wage, main = "Wage ~ Educ")
Evidencia gráfica a través del gráfico de dispersión (librería graphics)
requir­e(g­gplot2)
ggplot­(data = wdata, aes(x = educ, y = wage)) + geom_p­oin­t(c­olour = "­red­4") + ggtitl­e("G­ráfico de disper­sio­́n") + theme_bw() + theme(­plo­t.title = elemen­t_t­ext­(hjust = 0.5))
Evidencia gráfica a través del gráfico de dispersión (librería ggplot2)
cor(wd­ata­$wage, wdata$­educ)
Evidencia numérica
cor.te­st(­wda­ta$­wage, wdata$­educ)
Evidencia contra­stada (Pearson's produc­t-m­oment correl­ation, más datos que cor, muestra p-valor)
 

1. Regression output

output = summar­y(ols)
Columna Std Error: Errores típicos de los parámetros estimados 𝛽̂ 0 y 𝛽̂ 1.
Columna t value: Resultado de dividir cada estimado (estimate) entre su error típico. Es la base para llevar a cabo los contrastes de signif­ica­tividad sobre los parámetros estimados 𝐻0:𝛽̂ 0=0 y 𝐻0:𝛽̂ 1=0.
Columna Pr(>|t|) p-valores. Si son menores que el nivel de signif­cación por defecto (5%), se rechaza la hipótesis nula y por tanto, es estadí­sti­camente signif­icativo el coefic­iente estimado para 𝛽̂1 o 𝛽̂0 .
Residual standard error: (estimador de la desviación típica de los errores 𝜎).
Los degrees of freedom se calculan como el número total de oberva­ciones - número de parámetros estimados

4. Residuos estimados

Diferencia entre el valor ajustado y el valor real en cada individuo
uhat = ols$re­siduals
uhat = resid(ols)
Extracción directa
residuos <- wdata$­wag­e-yhat
Extracción manual
$\hat{­\ep­silon}$

7. Errores de los parámetros estimados (b0 y b1)

Los errores estándar de los parámetros estimados (Std. Error) se obtienen a partir de la raíz cuadrada de la diagonal de la matriz de varian­zas­-co­var­ianzas estimada
output­$co­ef[,2]
Extracción directa
varcov­=vc­ov(ols) # Matriz
se = sqrt(d­iag­(va­rcov)) # Errores estándar
Cálculo manual
X = as.mat­rix­(cb­ind­(ct­e=1­,wd­ata­[,2]))
varcov2 = sigma^2 solve(t(X) %% X)
se2 = sqrt(d­iag­(va­rcov2))
Cálculo manual

10. Extraer el estadí­stico F y su p-valor

anova.ols = anova(ols)
Utilizamos la función anova para contrastar la signif­ica­tividad global del conjunto de parámetros beta siendo la hipótesis nula H0: B0 = B1 = 0

Modifi­cac­iones modelo de regresión lineal

ols.nc <- lm(wage ~ 0 + educ, data = wdata)
output.nc <- summar­y(o­ls.nc)
Modelo de regresión lineal simple sobre el origen: si queremos un modelo sin término constante que pase por el origen (0,0) (alter­nativa 1)
ols.cte <- lm(wage ~ 1, data = wdata)
output.cte <- summar­y(o­ls.cte)
Modelo de regresión lineal simple sobre una constante: si queremos que la recta sea horizontal y la pendiente sea igual a 0. bhat = yhat (media)
plot(w­dat­a$educ, wdata$­wage)
abline­(ols, lwd = 2, lty = 1)
abline­(ol­s.nc, lwd = 2, lty = 2)
abline­(ol­s.cte, lwd = 2, lty = 3)
legend­("to­ple­ft", c("C­omp­let­o", "Pasa por origen­", "Solo consta­nte­"), lwd = 2, lty = 1:3)
Repres­ent­ación gráfica de los tres modelos (el tercero es solo la constante)

Proceso

Estimación
de los modelos de regresión lineal múltiple
Interp­ret­ación
de la salida de los modelos de regresión lineal múltiple
Selección
del mejor modelo de regresión lineal múltiple que se ajusta a un dataset
Diagnosis
del modelo de regresión lineal múltiple elegido
 

2. Coefic­ientes de regresión estimados

output­­$coef
Estimate, Std. Error, t value, Pr(>|t|)
bhat = coef(ols)
Devuelve únicamente el valor estimado (estimate) para b0 y b1
+ Cálculo manual de los coefic­­ientes de regresión $\hat{­­\b­e­t­a}­­=(­­\ha­t­{­\b­­eta­­}_­{­0­},­­\ha­­t{­­\b­et­­a}_­­{1})'$ a partir de la ecuación formal

\begin­­{a­l­ign*}
\hat{­­\be­t­a­}_­­{1}­­&­=­­\fr­­ac{­­Co­v­(­x,­­y)}­­{V­a­r­(x)}\\
\hat{­­\be­t­a­}_­­{0}­­&­=­­\ba­­r{y­­}-­­\h­at­­{\b­­et­a­}­_{­­1}­­\bar{x}
\end{a­­lign*}

5. Grados de libertad (degrees of freedom)

(número de observ­­ac­iones - número de parámetros que hemos estimado, b0 y b1) 𝑔.𝑑.𝑙.=𝑛−𝑘 siendo 𝑛 el número de oberva­­ciones totales y 𝑘 el número de parámetros estimados.
output­$df[2]
df.res­idu­al(ols)
Extracción directa
dof = nrow(w­data)- output­$df[1]
Cálculo manual

8. Coefic­iente de determ­inación (1-(RS­S/TSS))

R2=out­put­$r.s­quared
R2adj=­out­put­$ad­j.r.sq­uared
Extracción directa
residuos2 = wdata$­wag­e-m­ean­(wd­ata­$wage)
R2.1=1­-(s­um(­res­i2)­/su­m((­res­idu­os2­)^2))
Extracción manual 1
R2.2 = var(yh­at)­/va­r(w­dat­a$wage)
Extracción manual 2
R2.3 <- cor(wd­ata­$wa­ge,­wda­ta$­educ)^2
Extracción manual 3
R2 mejorará, por el simple hecho de incluir más variables en el modelo. El coefic­iente de determ­inación ajustado R2adj corrige esto ya que penaliza la incorp­oración de nuevas variables indepe­ndi­ente. En este caso, no es una preocu­pación ya que tenemos una única variable indepe­ndiente pero tendremos que tenerlo en cuenta en los modelos de regresión múltiple

11. Predic­ciones de nuevos datos

yhat1 = predic­t(ols, newdata = x)
Si no incluimos nuevos datos en la variable indepe­ndi­ente, el resultado de la función predict coincide con los resultados obtenidos con la función fitted.

Diagnosis modelo de regresión lineal simple

plot(ols, which=1)
nos ayuda a decidir si las variables están lineal­mente relaci­onadas. Si es así, no debería de existir una relación sistem­ática entre los resíduos (errores) y los valores predichos (ajust­ados) según los quantiles en z-score ((x-me­dia­)/sd)
plot(ols, which=2)
gráfica de quanti­l-q­uantil normal. Los puntos deberían seguir la diagonal si los residuos están normal­mente distri­buidos. Si aparecen patrones tipo "­S" o de ontra índole, posibl­emente necesi­temos ajustar otro modelo.
testSW = shapir­o.t­est­(re­sid­ual­s(ols))
Para contrastar la normalidad de los residuos también podemos usar el test de Shapir­o-Wilk o alguno de los vistos anteri­orm­ente. En este caso, tened en cuenta que lo que estamos contra­stando es si los errores siguen una distri­bución normal no la variable. Podemos ver cómo obtenemos un p-valor < 5% , luego tendríamos que rechazar la hipótesis nula. Es decir, los residuos no seguirián una distri­bución normal.
plot(ols, which=3)
La tercera gráfica es como la primera, pero usando una escala diferente, residuos estand­ari­zados, y sirve para comprobar la homoce­das­tic­idad, la cual se cumple si los puntos forman una banda en torno a la horizo­ntal.
plot(ols, which=5)
La última gráfica trata sobre la identi­fic­ación de puntos influy­entes, aberrantes y con efecto palanca. Las observ­aciones influy­entes son aquellas con un impacto despro­por­cionado en la determ­inación de los parámetros del modelo. Se identi­fican usando la distancia de Cook. Son de preocupar los puntos con valores superiores a la línea de Cook. En este caso, no tenemos ninguno. Un punto aberrante es una observ­ación que tiene un valor muy alto del residuo asociado (con un valor muy negativo del residuo y muy a la derecha). En este caso, tampoco tenemos ninguno. Una observ­ación con alto efecto palanca "­lev­era­ge" es una observ­ación que no es predicha satisf­act­ori­amente por el modelo de regresión (con un valor muy positivo del residuo y muy a la derecha). Tampoco tenemos ninguno.
   
 

Comments

No comments yet. Add yours below!

Add a Comment

Your Comment

Please enter your name.

    Please enter your email address

      Please enter your Comment.

          Related Cheat Sheets

          ggplot2-scatterplots Cheat Sheet
          iGraph Cheat Sheet
          Introduction to Regression in R Cheat Sheet

          More Cheat Sheets by julenx

          Python 1.1 Numpy Cheat Sheet
          Python pandas Cheat Sheet
          R Cheat Sheet