Documente Academic
Documente Profesional
Documente Cultură
prctica
Pablo Vinuesa, CCG-UNAM. http:// www.ccg.unam.mx/ ~vinuesa/
v1, 22 de Octubre, 2016
Contents
1 Regresin lineal simple y mltiple: teora y prctica 2
1.1 Introduccin: el concepto de regresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1.1 Tipos de regresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Modelado estadstico: seleccin de modelos, ajuste a los datos y varianza en la estima 3
1.2 Regresin lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Clculo manual de los coeficientes de regresin de un modelo lineal . . . . . . . . . . . 5
1.2.2 Cmo calcula R los coeficientes de un modelo lineal de regresin? . . . . . . . . . . . 6
1.2.2.1 El mtodo de mnimos cuadrados . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2.2 Simulacin del algoritmo que usa R para minimizar la suma de cuadrados . . 7
1.2.2.3 Frmulas se suma de cuadrados corregidas y clculo de los coeficientes de
regresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2.3 Determinacin de la bondad del ajuste: suma de cuadrados, R y R2 . . . . . . . . . . 10
1.2.3.1 Explicacin grfica de los conceptos subyacentes a la bondad de ajuste: SSY ,
SSE y SSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.3.2 Clculo manual del particionado de las sumas de cuadrados en el anlisis de
regresin: anlisis de la varianza . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3.3 Clculo en R del particionado de las sumas de cuadrados en el anlisis de
regresin: summary.aov() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.3.4 Estima de la significancia de los coeficientes de regresin y clculo de los
errores asociados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.3.5 Clculo del grado de ajuste, R2 . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Diagnstico del modelo de regresin y validacin de supuestos . . . . . . . . . . . . . . . . . . 18
1.3.1 Supuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.3.2 Diagnstico grfico del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Transformacin de datos y seleccin de modelos . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4.1 Linearizacin de un modelo exponencial y evaluacin del ajuste . . . . . . . . . . . . . 20
1.4.1.1 Diagnstico del modelo linearizado . . . . . . . . . . . . . . . . . . . . . . . . 23
1.4.2 Ajuste de una curva exponencial negativa a datos de decaimiento radioactivo . . . . . 23
1.5 Regresin polinomial y determinacin de desviaciones de relacin de linearidad entre variables 24
1.6 AIC : Seleccin de modelos mediante el criterio de informacin de Akaike . . . . . . . . . . . 26
1.6.1 Frmulas para clculo del AICi para un modeloi . . . . . . . . . . . . . . . . . . . . . 27
1.6.1.1 AIC: ejemplos numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6.2 Estadsticos de diferencias en AIC (AICi ) y ponderaciones de Akaike . . . . . . . . 27
1.7 Predicciones usando el modelo seleccionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.7.1 Interpolaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.7.2 extrapolaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.7.3 Graficado de bandas e intervalos de confianza . . . . . . . . . . . . . . . . . . . . . . . 30
1
3 Bibliografa selecta 32
3.1 Libros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.1 R y estadstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.2 R - aprendiendo el lenguaje base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.1.3 R - manipulacin, limpieza y visualizacin avanzada de datos con tidyr, dplyr y ggplot2 32
3.1.4 R - aplicaciones en anlisis de datos usando multiples paquetes . . . . . . . . . . . . . 32
3.1.5 R - programacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.1.6 Investigacin reproducible con R y RStudio . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Recursos en lnea 33
5.1 The comprehensive R archive network (CRAN) . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Cursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 Consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.4 Manipulacin y graficado de datos con paquetes especializados . . . . . . . . . . . . . . . . . 34
Referencias 34
El anlisis de regresin engloba a un conjunto de mtodos estadsticos que usamos cuando tanto la variable
de respuesta como la la(s) variable(s) predictiva(s) son contnuas y queremos predecir valores de la
primera en funcin de valores observados de las segundas. En esencia, el anlisis de regresin consiste en
ajustar un modelo a los datos, estimando coeficientes a partir de las observaciones, con el fin de predecir
valores de la variable de respuesa a partir de una (regresin simple) o ms variables (regresin mltiple)
predictivas o explicativas.
El anlisis de regresin juega un papel central en la estadstica moderna y se usa para:
identificar a las variables predictivas relacionadas con una variable de respuesta
describir la forma de la relacin entre estas variables y para derivar una funcin matemtica ptima
que modele esta relacin
predecir la variable de respuesta a partir de la(s) explicativas o predictoras
2
1.1.1 Tipos de regresin
El trmino regresin puede ser confuso porque existen muchas variantes especializadas de regresin. Adems,
R tiene muchas funciones para ajustar una gran gama de modelos de regresin.
Tabla 1. Algunos tipos bsicos de regresin (hay muchos ms)
1.1.2 Modelado estadstico: seleccin de modelos, ajuste a los datos y varianza en la estima
Dadas dos variables cuantitativas existen virtualmente cientos de modelos que podran describir la relacin
matemtica entre ellas. El reto est en elegir el modelo que mejor se ajuste a estos datos para minimizar el
error en la estima que se haga a partir del modelo.
Usamos los modelos para estimar el valor promedio de la variable de respuesta en funcin de
parmetros estimados de los datos. De manera general, podemos predecir valores de la variable de
respuesta usando esta frmula:
estimai = (modelo) + errori .
Para obtener la mxima precisin (mnimo errori ) en nuestra estima o prediccin, tendremos que:
1. elegir una familia de modelos adecuados a nuestros datos (modelos lineales, polinomiales, exponenciales,
no lineales . . . )
3
Mujeres de 3039 aos, ajustes lineal y cuadrtico, peso ~ altura
160
150
peso (lbs.)
140
130
120
58 60 62 64 66 68 70 72
Altura (pulgadas)
4
1.2 Regresin lineal simple
Yi = (a + bXi ) + i
donde:
a = punto de corte en el eje de ordenadas
b = pendiente o gradiente de la recta, que son los coeficientes de regresin
i corresponde al trmino de resduos, que representa la diferencia entre el valor observado y el
estimado para el individuo i.
Los coeficientes de regresin los tenemos que estimar de los datos, usando el mtodo de mnimos cuadrados,
basado en las siguientes frmulas, y el criterio de optimizacin de mxima verosimilitud.
n
(xi x)(yi y)
P P P
P x y
i=1 xy SSXY suma corregida de productos
b= = n
= =
n P 2 ( x)2
P
SSX suma de cuadrados de x
(xi x)2
P
x n
i=1
P P
y x
a = y bx = b
n n
Una vez estimados estos coeficientes los sustitumos en la frmula general de la recta, definiendo as el modelo
lineal que ajustamos en el ejemplo grfico anterior: peso
d = 87.52 + 3.45 altura. Ntese que en este caso el
punto de corte no tiene mucho sentido ya que no encontraremos una persona de 0 pulgadas de altura.
Es fcil estimar a ojo los coeficientes de regresin, razonablemente precisos, de un modelo lineal.
Ajustemos un modelo lineal a los siguientes datos:
12
10
Var. de respuesta
8
6
4
2
0 2 4 6 8
Var. explicativa
5
4. Determinar el punto de corte: Cunto vale y cuando x = 0?, a 12
Por tanto la recta de regresin simple ajustada manualmente a los datos tiene la frmula: y = 12 1.25x
Estos coeficientes no difieren mucho de los obtenidos al ajustar un modelo lineal con R:
# Noten que la var. de respuesta va a la izda de la tilde ' ~' y se lee como
# modelado de Y en funcin de X. Esta notacin corresponde a lo que se conoce como
# una frmula en R. Las frmulas son centrales en el modelado estadstico y tienen una
# sintaxis particular y compleja, que hay que aprender para manejar R eficientemente
lm(dfr1$Y ~ dfr1$X)
##
## Call:
## lm(formula = dfr1$Y ~ dfr1$X)
##
## Coefficients:
## (Intercept) dfr1$X
## 11.756 -1.217
R busca las estimas de mxima verosimilitud de los parmetros: L P r(D|M ). Es decir, habiendo
seleccionado un modelo lineal, necesitamos encontrar los valores de los parmetros del Modelo (a
y b) que maximizan la probabilidad de observar los Datos.
6
Recta de regresin y resduos
12
10
Var. de respuesta
8
6
4
2
0 2 4 6 8
Var. explicativa
## 1 2 3 4 5 6 7
## 11.755556 10.538889 9.322222 8.105556 6.888889 5.672222 4.455556
## 8 9
## 3.238889 2.022222
Los resduos describen la bondad de ajuste de la recta de regresin. Nuestro modelo de mxima
verosimilitud se define como el modelo que minimiza la suma de los cuadrados de estos resduos.
1.2.2.2 Simulacin del algoritmo que usa R para minimizar la suma de cuadrados
R implementa un algoritmo para minimizar esta suma de cuadrados. Concretamente el algoritmo, mediante
cluculo diferencial (tomando derivadas) calcula el mnimo de la funcin de verosimilitud para cada coeficiente
a partir de la frmula:
d = y y
Dado y est sobre la recta a + bx, podemos reescribir la ecuacin anterior como:
d = y (a + bx) = y a bx
La estima por mnimos cuadrados de la pendiente de regresin (b) se calcula por tanto rotando la lnea hasta
que el error de
P la suma de2 cuadrados, SSE, sea minimizada. El algoritmo por tanto tiene que encontrar
el mnimo de (y a bx) . Tomando la derivada de SSE con respecto a b:
dSSE X
= 2 x(y a bx)
db
7
Para que tengan una impresin de los clculos involucrados, es til graficar la suma de cuadrados de los
resduos SSE contra el valor del parmetro que estamos tratando de estimar. Veamos el caso de la pendiente
b.
Sabemos que la recta de regresin pasa por un punto en el centro de la nube de puntos, cuyas coordenadas
son (x, y). La lnea de mejor ajuste tendr que pivotarse en torno a las medias de x e y, seleccionando
aquella lnea cuya pendiente b minimiza la suma de cuadrados de las distancias marcadas en rojo en la
grfica anterior.
El valor de b que minimiza la SSE representa la estima de mxima verosimilitud de este parmetro.
Veamos una simulacin del algoritmo. Sabemos de nuestras estimas que b 1.25.
Por tanto vamos a localizar el valor de mxima verosimilitud en el rango de 1.4 < b < 1.0, estimando
la SSE para cada valor de b en este rango.
En pseudocdigo los pasos a realizar son:
recorrer en pequeos incrementos el valor de b dentro del rango establecido
calcular el punto de corte correspondiente (a = y bx )
estimar los valores ajustados de y para cada nivel de x (y = a + bx)
calcular los resduos asociados (d = y a bx) a cada estima puntual
elevar los resduos al cuadrado y sumarlos ( (y a bx)2 )
P
b <- seq(-1.43,-1,0.002)
sse <- numeric(length(b))
for (i in 1:length(b)) {
a <- mean(dfr1$Y)-b[i]*mean(dfr1$X)
residual <- dfr1$Y - a - b[i]*dfr1$X
sse[i] <- sum(residual^2)
}
8
Estima de mxima verosimilitud del parmetro b
24
23
22
sse
21
20
19
b
# el valor mnimo de sse lo obtenemos con la fucin min()
min(sse)
## [1] 20.07225
# as obtenemos el valor de "b" asociado al valor mnimo de sse
b4minSSE <- b[which(sse==min(sse))]
b4minSSE
## [1] -1.216
n
(xi x)(yi y)
P P P
P x y
i=1 xy SSXY suma corregida de productos
b= = n
= =
n P 2 ( x)2
P
SSX suma de cuadrados de x
(xi x)2
P
x n
i=1
P P
y x
a = y bx = b
n n
y recordando las frmulas de las sumas de cuadrados y productos corregidas, que son absolutamente
centrales en todo lo que seguir sobre regresin y anlisis de la varianza:
suma total de cuadrados SSY :
2
(
P
X y)
SSY = y2
n
suma de cuadrados de x SSX:
2
(
P
X x)
SSX = x 2
n
suma de productos corregida: P P
P x y
xy
SSXY = Pn
P 2 ( x) 2
x n
9
podemos calcular fcilmente los coeficientes de regresin, como muestra el siguiente bloque de cdigo:
SSX <- sum(dfr1$X^2)-sum(dfr1$X)^2/length(dfr1$X)
SSY <- sum(dfr1$Y^2)-sum(dfr1$Y)^2/length(dfr1$Y)
SSXY <- sum(dfr1$X*dfr1$Y)-sum(dfr1$X)*sum(dfr1$Y)/length(dfr1$X)
cat("SSX =", SSX, "| SSY =", SSY, "| SSXY =", SSXY, "\n")
Lo que hemos visto hasta ahora es slo la mitad de la historia. Adems de los parmetros a y b, necesitamos
calcular la incertidumbre asociada a cada una de estas estimas. Es decir, necesitamos calcular el error
estndar de cada parmetro de nuestro modelo de regresin.
El error estndar (SE) es la desviacin estndar de la distribucin de muestreo de un estadstico. Para un
estadstico (p.ej. la media), nos indica cunta variacin existe entre muestras de la misma poblacin. Por
tanto valores grandes de SE indican que el estadstico no representa adecuadamente a la poblacin de la que
procede la muestra.
Para determinar la bondad del ajuste de un modelo necesitamos compararlo con un modelo nulo, el
ms simple de todos, la media, que es un modelo de no relacin entre variables. Cuantitativamente la
determinamos usamos la siguiente ecuacin general:
X
desviacin = (observacin modelo)2
1.2.3.1 Explicacin grfica de los conceptos subyacentes a la bondad de ajuste: SSY , SSE y
SSR
La mejor manera de explicar este concepto es hacerlo grficamente:
opar <- par(no.readonly = TRUE)
par(mfrow = c(1,2))
10
{
lines( c(dfr1$X[i],dfr1$X[i]), c(mean(dfr1$Y), dfr1$Y[i]), col="blue", lty=3)
}
for(i in 1:9)
{
lines( c(dfr1$X[i],dfr1$X[i]), c(dfr1$Y[i], fitted[i]), col="red", lty=3)
}
H0 = Media; +dev. (SSY) H1 = lm; + resduos (SSE)
12
12
10
10
8
8
Y
Y
6
6
4
4
2
0 2 4 6 8 0 2 4 6 8
X X
par(opar)
Definiciones
SSY o SST es la suma total de cuadrados, ya que representa la variacin mxima o total, respecto
del modelo nulo (media)
SSE es la suma cuadrada de resduos y representa el grado de error del modelo ajustado, o variacin
no explicada por el modelo
SSM o SSR es la suma de cuadrados del modelo de regresin y mide la diferencia entre SSY y
SSE, indicando la ganancia en precisin de la estima al ajustar un modelo, con respecto a la media, o
variacin explicada por el modelo
Por tanto SSY = SSR + SSE representa al particionado de la suma de cuadrados de una
regresin.
La siguient grfica muestra SSR = SSY SSE visualmente, es decir, las diferencias entre el valor promedio
de Y y las estimas del modelo de regresin. Si SSR es grande, quiere decir que las predicciones hechas por el
modelo son muy distintas a usar la media para predecir valores la variable de respuesta. Cuanto mayor sea
SSR, mejor ser la capacidad del modelo de predecir la variable de respuesta.
11
## I. Grfica de desviaciones de los datos de la media (para clculo de SSR)
# 1. Graficamos los puntos
plot(dfr1$X, dfr1$Y, pch=21, bg="blue", ylab= "Y", xlab="X",
main = "SSR (SSM) = H1 - H0")
6
4
2
0 2 4 6 8
1.2.3.2 Clculo manual del particionado de las sumas de cuadrados en el anlisis de regresin:
anlisis de la varianza
La idea que subyace a la frmula SSY = SSR + SSE es sencilla: tomamos la variacin total de los datos
originales (SSY ) y la particionamos entre dos componentes que nos revelan el poder explicativo o predictor
del modelo. La variacin explicada por el modelo SSR se conoce como la suma de cuadrados del modelo
(de regresin), y la variacin no explicada (SSE) se conoce como suma de cuadrados de los errores
P 2 ( y )2
P
Ya vimos cmo calcular SSY y SSE. Por tanto SSR = SSY SSE = (y a bx)2
P
y n
Pero podemos hacerlo ms sencillo, si en vez de tomar SSE = (y a bx)2 , usamos el siguiente atajo:
P
SSR = b SSXY
Podemos as calcular fcilmente SSR usando los valores de b y SSXY previamente calculados:
12
Teniendo SSY y SSR calculados, es trivial calcular SSE:
Ya tenemos los dos componentes (SSR y SSE) en los que se descompone la variacin total de los datos
(SSY ). Hagamos un anlisis de la varianza, la famosa ANOVA, para comparar estos dos componentes
mediante un cociente F entre las varianzas asociadas a cada componente.
Estadsticos como F representan generalmente la cantidad de varianza sistemtica (del modelo) / varianza
no sistemtica (de los datos), es decir F se basa en la razn de SSR/SSE. Pero como las sumas de
cuadrados dependen del nmero de puntos (diferencias sumadas), F usa la media de la suma de cuadrados,
M S = promedio de suma de cuadrados.
donde
SSR SSR
M SM = =
g.l. no. parmetros estimados en el modelo : b (1 g.l. en ml simple)
y
SSE SSE
M SE = =
g.l. no. observaciones no. parmetros libres : a, b (n 2)
Llenemos ahora la columna de los grados de libartad (g.l.). Recordemos que, esencialmente, los
grados de libartad representan el nmero de entidades que estn libres de variar cuando esti-
mamos algn parmetro estadstico a partir de los datos. Los g.l generalmente se calculan como
n nmero de parmetros libres a estimar de los datos. Por tanto:
g.l.(SSY ) Dado que SSY = (y y)2 , vemos que slo necesitamos estimar 1 parmetro: y; g.l. =
P
(n 1)
g.l.(SSE) Dado que SSE = (y a bx)2 , vemos que necesitamos estimar 2 parmetros: a y b;
P
g.l. = (n 2)
g.l.(SSR) en el modelo de regresin lineal simple hemos estimado 1 parmetro b; g.l. = 1
Noten que la suma de g.l.(SSR) + g.l.(SSE) = g.l.(SSY ), como se ve en la tabla.
13
Necesitamos llenar la 4a. columna, reservada para las varianzas. Recoredemos que:
suma de cuadrados
var = s2 =
grados de libertad
Esta columna (4) es muy fcil de llenar, ya que tenemos los valors que necesitamos pre-calculados en las
columnas 2 y 3. La var total no nos hace falta, pero s el cociente F = 2.86764
88.817
, que inclumos tambien en
la tabla de ANOVA, completndola.
g.l.(denom) p 1 . . . (g.l.(num.))
1 0.05 161.45
1 0.01 4052.18
... ... ...
7 0.05 5.59
7 0.01 12.25
Dado que nuestro estadstico F es mucho mayor que el valor crtico de F(1,7) , rechazamos la hiptesis nula
con p < .001.
Pero estamos aprendiendo estadstica usando R, verdad? O cargas contigo las tablas de valores crticos
para mltiples estadsticos?
Recordemos que los intervalos de confianza se definen como quantiles del 95% 99% . . . Podemos calcular los
quantiles para F usando la funcin qf (.95, glN um, glDenom). La p asociada al estadstico F la calculamos
como 1 pf (F, glN um, glDenom), como se muestra seguidamente:
glNum <- 1
glDenom <- 7
Fstat <- 30.974
p <- 1-pf(Fstat,glNum,glDenom)
cat("CI95% = ", CI95_F, "| CI99% = ", CI99_F, " | p = ", p, "\n")
14
Por tanto, la probabilidad de observar un cociente F de 30.974 bajo la H0 es muy poco probable, de hecho
p < 0.001, por lo que rechazamos H0 contundentemente.
En regresin lineal simple, los grados de libertad para los predictores (p) se calculan como: N p 1,
donde N tamao de muestra, y p es el nmero de predictores (1 en este caso: b), es decir: gl = N 2.
Podemos determinar la significancia del estadstico t con este cdigo:
# 1. Podemos determinar los quantiles de 0.025 y 0.975, para 7 gl
qt(c(0.25, .975), df=7)
15
## [1] -0.7111418 2.3646243
# La significancia de t, para gl=7, asumiendo una distribucin de doble cola
2*pt(-5.565737, df=7)
## [1] 0.0008457987
Por tanto, la estima del parmetro b es significativamente diferente de 0, rechazando la H0 con p < 0.001.
De manera muy conveniente, toda esta informacin sobre el modelo lineal nos la da la funcin
summary():
fit1 <- lm(dfr1$Y ~ dfr1$X)
##
## Call:
## lm(formula = dfr1$Y ~ dfr1$X)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.4556 -0.8889 -0.2389 0.9778 2.8944
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.7556 1.0408 11.295 9.54e-06 ***
## dfr1$X -1.2167 0.2186 -5.565 0.000846 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.693 on 7 degrees of freedom
## Multiple R-squared: 0.8157, Adjusted R-squared: 0.7893
## F-statistic: 30.97 on 1 and 7 DF, p-value: 0.0008461
16
6
4
4
2
2
y1
y2
0
0
2
2
4
4
2 1 0 1 2 2 1 0 1 2
x x
## Coeficientes para fit1: 0.5 2 Coeficientes para fit2: 0.5 2
Claramente el ajuste del modelo a los datos en la grfica derecha es mucho mejor que en la izquierda.
Llevado al extremo ideal, los puntos caeran todos sobre la recta, reflejando una dispersin = 0. En el otro
extremo, x podra no explicar ninguna de la variacin observada en y. En dicho caso las variables no estaran
correlacionadas, el ajuste del modelo lineal sera 0 y la magnitud de la dispersin sera de 100%.
Combinando lo que hemos aprendido sobre SSY , SSR y SSE debera quedar claro que podemos derivar
una mtrica que mida la fraccin de la variacin total en y explicada por la regresin. A esta medida es a la
que llamamos coeficiente de determinacin: R2 = SSY SSR
.
R2 vara entre 0, cuando la regresin no explica ninguna de la variacin obserbada en y (SSE = SSY ;
dispersin = 100%), y 1, cuando la regresin explica toda la variacin en y (SSR = SSY ; dispersin = 0%).
Grficamente:
R^2 = (b = a) = 0 R^2 = 1
0.2
4
0.1
2
0.0
y1
y2
0
0.1
2
0.2
2 1 0 1 2 2 1 0 1 2
x x
17
(SSY o SST ). Por tanto, R2 representa el porcentaje de la variacin en la variable de respuesta
que puede ser explicada por el modelo.
Adems, tratndose de regresin
simple, podemos calcular el coeficiente de correlacin de Pearson entre las
dos variables como r = R2 .
Un ltimo aspecto central en el anlisis de regresin lineal es comprobar que el modelo no viole los
supuestos de los que depende.
1.3.1 Supuestos
Una primera opcin para comprobar si el modelo cumple estos supuestos es mediante la generacin de cuatro
grficas de diagnsitico del modelo a partir de la informacin que viene integrada en el objeto que regresa la
funcin lm() usando la funcin plot()
opar <- par(no.readonly = TRUE)
0 2
6
1
3
3
7 7
Standardized residuals
7 4 1
0.5
3
0.8
9
0
7
2
18
par(opar)
La primera grfica (arriba izda.) nos ayuda a decidir si las variables estn linealmente relacionadas. Si
es as, no debera de existir una relacin sistemtica entre los resduos (errores) y los valores predichos
(ajustados). Es decir, el modelo debera de capturar toda la varianza sistemtica de los
datos, dejando slo ruido estocstico sin explicar. Por tanto, esta grfica debe de verse como
las estrellas en el firmamento, sin un patrn claro de asociacin. Si es as, sugiere adems que se
cumple el supuesto de homocedasticidad.
La segunda es la grfica de quantil-quantil normal. Los puntos deberan seguir la diagonal si los
resduos estn normalmente distribuidos. Si aparecen patrones tipo S o banana, posiblemente
necesitemos ajustar otro modelo.
La tercera grfica es como la primera, pero usando una escala diferente, |residuos estandarizados|,
p
y sirve para comprobar la homocedasticidad, la cual se cumple si los puntos forman una banda
estocstica en torno a la horizontal.
La ltima grfica (abajo, dcha.) trata sobre la identificacin de puntos influyentes, aberrantes
y con efecto palanca. Vemos que la observacin 4 es la que tiene el mayor resduo estandarizado, la
7 tiena la mayor Cook D y la nueve al mayor efecto palanca.
observaciones influyentes: son aquellas con un impacto desproporcionado en la determinacin
de los parmetros del modelo. Se identifican usando la distancia de Cook, Cooks D. Son de
preocupar los puntos con Cooks D > 1
punto aberrante: es una observacin que no es predicha satisfactoriamente por el modelo de
regresin (con un valor positivo o negativo grande del resduo)
observacin con alto efecto palanca tienen una combinacin inusual de valores predictores. Es
decir, son aberrantes en el espacio predictor.
Las dos grficas de la primera fila son las ms importantes.
Conviene recordar que y = a + bx no es el nico modelo de dos parmetros que existe para describir la
relacin entre dos variables contnuas. Tenemos que tener sto en cuenta, ya que la seleccin del modelo
adecuado es un aspecto de importancia crtica en el anlisis de regresin. Es decir, si los datos no presentan
una relacin lineal, podemos encontrar modelos curvilneos con igual grado de parametrizacin que la recta,
los cuales se ajustan mejor a datos con curvatura.
Veamos algunos de estos modelos no lineales de 2 parmetros. Nota: en todos los casos se ha llamado a la
funcin curve(f, 0, 20) para graficar las funciones (f ) indicadas sobre los ejes de ordenadas, con los coeficienes
a y b indicados en los ttulos.
19
log(x, a=1, e=2) asinttica(x, a=1, e=2)
(a * x)/(1 + b * x)
a + b * log(x)
0.3
2
0.0
2
0 5 10 15 20 0 5 10 15 20
x x
a * exp(b * x)
a * x^b
0.6
200
0.0
0
0 5 10 15 20 0 5 10 15 20
x x
Es sencillo estimar los parmetros de estos modelos, si las funciones se pueden transformar de tal
manera que sus parmetros se conviertan en lineales.
Veamos un ejemplo de datos del decaimiento de emisiones radioactivas en funcin del tiempo. Vamos a
graficarlos y a ajustar una recta de mnmos cuadrados a los datos.
100 120
80
amount
60
40
20
0 5 10 15 20 25 30
time
Vemos que el patrn de dispersin presenta una marcada curvatura. La mayora de los resduos para t < 5
y t > 25 tienen resduos positivos, mientras que para los valores intermedios son mayormente negativos. Por
tanto el modelo lineal NO es adecuado para estos datos.
Veamos el resumen de las estadsticas asociadas al modelo lineal simple:
##
## Call:
## lm(formula = amount ~ time)
##
## Residuals:
## Min 1Q Median 3Q Max
20
## -19.065 -10.029 -2.058 5.107 40.447
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 84.5534 5.0277 16.82 < 2e-16 ***
## time -2.8272 0.2879 -9.82 9.94e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 14.34 on 29 degrees of freedom
## Multiple R-squared: 0.7688, Adjusted R-squared: 0.7608
## F-statistic: 96.44 on 1 and 29 DF, p-value: 9.939e-11
Podemos ver que los coeficientes son altamente significativos, y que el modelo explica ms de 76% de la
variacin en la variable de respuesta (un valor muy alto de R2 ).
La moraleja es que valores p y R2 nos hablan del ajuste, pero no indican si el tipo of familia de
modelo ajustado es el ms adecuado.
Dado que los datos son de decaimiento radiactivo, parece razonable pensar que una funcin exponencial
negativa y = aebx pueda ajustarse mejor a los datos.
Probemos esta hiptesis, linearizando la ecuacin exponencial, tomando logaritmo a ambos lados de la
igualdad y operando as:
y = aebx
log(y) = log(a) bx
Cambiemos log(y) por Y y log(a) por A, que representa un modelo lineal, con un punto de corte A y una
pendiente b
Y = A bx
3.5
3.0
2.5
2.0
0 5 10 15 20 25 30
time
21
El ajuste a los datos se ha mejorado de manera apreciable. Veamos el resumen estadstico para el nuevo
modelo:
summary(lm(log(amount)~time))
##
## Call:
## lm(formula = log(amount) ~ time)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.5935 -0.2043 0.0067 0.2198 0.6297
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.547386 0.100295 45.34 < 2e-16 ***
## time -0.068528 0.005743 -11.93 1.04e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.286 on 29 degrees of freedom
## Multiple R-squared: 0.8308, Adjusted R-squared: 0.825
## F-statistic: 142.4 on 1 and 29 DF, p-value: 1.038e-12
Vemos que el error estndar de los resduos ha decrecido mucho, y que R2 es mayor an, al igual
que el nivel de significancia de los coeficientes. El ajuste a los datos es sin duda mejor.
Podemos formalmente seleccionar el mejor de ambos modelos usando el criterio de informacn de
Akaike (AIC), que indica claramente que el modelo linearizado es mucho ms adecuado.
fit1 <- lm(amount ~ time)
fit.log <- lm(log(amount) ~ time)
## df AIC
## fit1 3 257.00156
## fit.log 3 14.29588
Si les gustan ms los p valores, podemos confirmar el resultado de AIC() comparando ambos modelos
mediante la funcin anova(lm0 , lm1 )
anova(fit1, fit.log)
22
1.4.1.1 Diagnstico del modelo linearizado
Standardized residuals
Residuals vs Fitted Normal QQ
30 30
Residuals
2
27 27
0.2
0
0.6
2
28 28
Standardized residuals
ScaleLocation Residuals vs Leverage
30
28 30 0.5
2
27
31
1.0
2 0
Cook's distance
0.0
28 0.5
Parece no haber problemas con el supuesto de normalidad, pero s parece hablerlos con respecto al supuesto
de homocedasticidad, como muestra la forma en punta de flecha de la primera grfica y la cada que muestran
los resduos estandarizados en funcin de los valores ajustados (3a. grfica). La ltima grfica muestra que
los puntos 30 y 31 tienen alto valor de palanca (leverage), mientras que el 28 tiene un valor muy alto del
resduo asociado.
A pesar de los problemas de heterocedasticidad, puntos aberrantes y observaciones palanca, ajustemos la curva
exponencial negativa a los datos no transformados de decaimiento radioactivo. Para ello necesitamos primero
los coeficienes para sustituir en la funcin exponencial y = aebx . Recordemos que el modelo linearizado nos
daba los coeficienes: A = 4.547386 y b = 0.068528. Necesitamos regresar A a su escala original, tomando su
antilogaritmo usando exp(), es decir: a = exp(A)
exp(coef(fit.log)[1]) # sto es exp(A)
## (Intercept)
## 94.38539
Adems debemos saber que R grafica curvas como mltiples segmentos rectilneos. Necesitamos > 100 de
estos segmentos en el ancho de una grfica para que la curva se vea razonablemente lisa. Viendo el grfico
de dispersin original (no transformado), vemos que el rango para x es: 0 x 30. Por tanto, para tener >
100 segmentos queremos > 3 segmentos por unidad de tiempo, es decir, est bien usar intervalos de 0.25.
Usaremos la variable xv para almacenar los valores de x: xv < seq(0, 30, 0.25), es decir, tendremos
length(xv) segmentos. Veamos el cdigo:
plot(time, amount, pch = 21, col = "blue", bg = "green",
main ="* exp: amount = 94.38536 * exp(-0.068528 * time)\n
* recta: amount = 84.5534 + (-2.8272 * time)")
xv <- seq(0,30,0.25)
yv <- 94.38536 * exp(-0.068528 * xv)
lines(xv, yv, col="red")
abline(fit1, col="blue")
23
* exp: amount = 94.38536 * exp(0.068528 * time)
100 120
80
amount
60
40
20
0 5 10 15 20 25 30
time
Sin duda el ajuste de amount = 94.38536exp(0.068528time) a los datos es mucho mejor que el que muestra
la recta de mnimos cuadrados: amount = coef (f it1[1]) + coef (f it1[2]) x) = 84.5534 + (2.8272 time).
Pero todava queda trabajo por hacer. El ajuste es bueno slo para los valores intermedios de time, siendo
peor cuando 0 time 29.
El concepto bsico es sencillo. Tenemos una sola variable explicativa contnua, x, pero podemos ajustar
potencias mayores de x, como x2 , x3 . . . y aadirlas al modelo, junto a x, para describir diversos tipos
de curvatura en la relacin y x. Las funciones polinomiales presentan gran flexibilidad de formas,
incluso al aadir un solo trmino cuadrtico, dependiendo de los signos de los trminos lineales y cuadrtico,
como se muestra seguidamente:
opar <- par(no.readonly = TRUE)
par(mfrow=c(2,2))
curve(4+2*x-0.1*x^2,0,10,col="red",ylab="y", main = "y = 4 + 2*x -0.1 * x^2")
curve(4+2*x-0.2*x^2,0,10,col="red",ylab="y", main = "y = 4 + 2*x -0.2 * x^2")
curve(12-4*x+0.3*x^2,0,10,col="red",ylab="y", main = "y = 12 - 4*x + 0.3*x^2")
curve(4+0.5*x+0.1*x^2,0,10,col="red",ylab="y", main = "y = 12 - 0.5*x + 0.1*x^2")
24
y = 4 + 2*x 0.1 * x^2 y = 4 + 2*x 0.2 * x^2
12
8
y
y
8
6
4
4
0 2 4 6 8 10 0 2 4 6 8 10
x x
15
0 4 8
y
5
0 2 4 6 8 10 0 2 4 6 8 10
x x
par(opar)
Vemos que un simple modelo cuadrtico con slo tres parmetros (punto de corte, pendiente para x y pendiente
para x2 ) puede describir un amplio rango de relaciones funcionales y ~ x.
Veamos cmo se ajusta un modelo cuadrtico de 3 parmetros (model3) y cmo se compara con uno lineal de
dos parmetros (model2).
model2 <- lm(amount~time)
model3 <- lm(amount~time+I(time^2))
model3
##
## Call:
## lm(formula = amount ~ time + I(time^2))
##
## Coefficients:
## (Intercept) time I(time^2)
## 106.3888 -7.3448 0.1506
summary(model3)
##
## Call:
## lm(formula = amount ~ time + I(time^2))
##
## Residuals:
## Min 1Q Median 3Q Max
## -22.302 -6.044 -1.603 4.224 20.581
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 106.38880 4.65627 22.849 < 2e-16 ***
## time -7.34485 0.71844 -10.223 5.90e-11 ***
## I(time^2) 0.15059 0.02314 6.507 4.73e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.205 on 28 degrees of freedom
25
## Multiple R-squared: 0.908, Adjusted R-squared: 0.9014
## F-statistic: 138.1 on 2 and 28 DF, p-value: 3.122e-15
AIC(model2,model3)
## df AIC
## model2 3 257.0016
## model3 4 230.4445
anova(model2,model3)
# ntese uso de I(): "as is"; permite pasar operadores aritmticos en frmulas
model3 <- lm(amount~time+I(time^2))
AIC(model2, model2.lin, model3)
## df AIC
## model2 3 257.00156
## model2.lin 3 14.29588
## model3 4 230.44447
#anova(model2, model2.lin, model3)
26
los modelos saturados, con un parmetro por cada dato puntual, presentan un ajuste perfecto a los datos.
El problema es que carecen de cualquier fuerza explicadora.
Por tanto hay que buscar siempre el balance ptimo entre el grado de parametrizacin (ajuste)
del modelo e incremento asociado en la varianza de las predicciones, resultado de estimar ms
parmetros del mismo conjunto finito de datos. Tenemos que evaluar crticamente el aporte que cada nuevo
parmetro hace a la fuerza explicativa del modelo. Muchos parmetros presentan alta colinearidad entre
ellos, no aprotando fuerza explicativa al modelo, pero s inflando su error.
AICi = devianciai + 2 Ni
Cuando la deviancia < 2 entre un modelo0 y otro alternativo modelo1 con un parmetro adicional, no
se justifica la inclusin del mismo, ya que infla ms la varianza en la estima que lo que aporta en fuerza
explicativa.
cat(" * AIC_model2 = ", AIC_model2, "\n", "* AIC_model2.lin = ", AIC_model2.lin, "\n",
"* AIC_model3 = ", AIC_model3, "\n")
## * AIC_model2 = 257.0016
## * AIC_model2.lin = 14.29588
## * AIC_model3 = 230.4445
Se pueden usar los estadsticos de diferencias en AIC (AICi ) y ponderaciones de Akaike para
cuantificar el nivel de incertidumbre en la seleccin del modelo.
27
Las AICi son AICs re-escalados con respecto modelo con el AIC ms bajo (AICmin), de modo que:
Las AICi son fciles de interpretar y permiten ordenar los modelos candidatos:
rango de AICi entre modelo AICmin y competidores
1-2 con respecto al modelo ganador tienen un soporte sustancial y deben de ser considerados como
modelos alternativos.
3-7 con respecto al modelo ganador tienen un soporte significativamente inferior
10+ carecen de soporte
Una vez seleccionado el mejor modelo y habindolo ajustado a los datos, tpicamente querremos usarlo para
hacer predicciones de la variable de respuesta a valores de nuestro inters de la variable regresora. Existen
dos tipos de predicciones, sujetas a niveles muy diferentes de incertidumbre:
Las interpolaciones son predicciones hechas dentro del rango de los datos usados para construir el
modelo
Las extrapolaciones son predicciones hechas fuera de este rango y son mucho ms problemticas,
siendo la seleccin del modelo an ms crtica y difrentes modelos frecuentemente generan predicciones
dispares.
La fucin genrica predict() del paquete de base stats para hacer predicciones a partir de los objetos obtenidos
de aplicar diversas funciones de ajuste de modelos, como lm(), y que llamaremos genricamente objeto.modelo.
La sintaxis bsica es:
predict(objeto.modelo, ...)
Si lo llamamos as, sin argumentos opcionales, nos regresa los valores ajustados como vimos en ejemplos
anteriores.
Si queremos calcular los valores predichos por el modelo para nuevos valores de la variable predictora, le
pasamos una lista o dataframe como argumento a newdata =.
predict(objeto.modelo, newdata = data.f rame(varP redictora = c(x1, x2...))) Es importante notar que el
nombre de varP redictora debe ser el de la que hemos usado para construir el modelo (time en el caso que
nos ocupa)
Adems de las estimas puntuales, podemos pedirle a predict() que regrese tambin el intervalos de
prediccin para la respuesta del nivel deseado (level = .95 por defecto), pasndole el valor prediction
al parmetro interval: interval = prediction. Este intervalo de la prediccin es el rango de la
distribucin de la respuesta predicha. Si le pasamos el valor interval, obtendremos los intervalos
de confianza para la respuesta media.
predict(objeto.modelo, newdata = data.f rame(varP redictora = c(x1, x2...)), interval = prediction, level =
.99)
Esto quedar ms claro con los ejemplos de cdigo que se muestran seguidamente, para estimar los valores de
la variable de respuesta amount de radiacin en funcin de valores de la variable regresora time en los
que estamos interesados.
1.7.1 Interpolaciones
28
# los valores de inters de la var. regresora se pasan como un vector con el nombre de
# la variable regresora, almacenados en una lista o dataframe
# En este caso los valores de x estn dentro del rango de las observaciones usadas
# para construir el modelo: vamos a "interpolar"
preds <- data.frame(time=c(3, 12.5, 22.2, 29))
1.7.2 extrapolaciones
# estos valores de la variable regersora time estn fuera del rango de las observaciones.
# por tanto estamos EXTRAPOLANDO:
preds <- data.frame(time=c(35, 50, 65, 95, 125))
prediction.extrapol.ci <- predict(model2.lin, newdata=preds, interval="confidence",
level=.95)
prediction.extrapol.pi <- predict(model2.lin, newdata=preds, interval="prediction",
29
level=.95)
exp(prediction.extrapol.ci)
Para concluir este captulo de introduccin a la regresin, veamos cmo graficar los intervalos de confianza
asociados al modelo de regresin.
El siguiente cdigo muestra como graficar intervalos de confianza para la respuesta media (ci) e
intervalos de prediccin para la respuesta (pi).
Graficaremos tanto intervalos de ci como de pi entorno a dos puntos selectos, como bandas de CIs y PIs
en torno a las predicciones correspondientes para un rango de valores de x.
# I. Graficado de intervalos de credibilidad en torno a la media (ci) y a las
# predicciones (pi) para para dos valors especficos de "time"
xvals <- data.frame(time=c(5, 25))
# aadimos los puntos de la prediccin y barras en negro y gris para los cis y pis
points(xvals[,1],mypred.ci[,1],pch=8)
segments(x0=c(5,25), x1=c(5,25), y0=c(mypred.pi[1,2],mypred.pi[2,2]),
y1=c(mypred.pi[1,3],mypred.pi[2,3]),col="gray",lwd=3)
segments(x0=c(5,25), x1=c(5,25), y0=c(mypred.ci[1,2],mypred.ci[2,2]),
y1=c(mypred.ci[1,3],mypred.ci[2,3]),lwd=2)
30
# II Graficado de bandas de intervalo de confianza
# 1. con seq() generamos una secuencia de 10 valores equidistantes de x entre 0 y 30
xseq <- data.frame(time=seq(0,30,length=100))
# 3. Aadimos lneas en el rango de x (0:30), para cada una de las 100 predicciones
# puntuales en este intervalo, almacenados en ci.band y pi.band
# Tambin incluimos una leyenda con legend()
lines(xseq[,1],ci.band[,2],lty=2)
lines(xseq[,1],ci.band[,3],lty=2)
lines(xseq[,1],pi.band[,2],lty=2,col="gray")
lines(xseq[,1],pi.band[,3],lty=2,col="gray")
legend("topright",legend=c("Fit","95% CI","95% PI"),lty=c(1,2,2),
col=c("black","black","gray"),lwd=c(2,1,1))
fitted: amount = 94.38536 * exp(0.068528 * time)
Fit
95% CI
150
95% PI
amount
100
50
0
0 5 10 15 20 25 30
time
2.1 Datos
Usaremos el set de datos states.x77 del paquete base datasets que R carga por defecto, el cual ya conocemos
del tema 8: correlacin.
31
2.2 Objetivo
Estudiaremos el efecto de las variables regresoras o predictoras P opulation e Illiteracy sobre la variable
de respuesta M urder
Deben de:
1. Genera grficos de dispersin para los pares de variables Murder ~ Population, Murder ~ Illiteracy del
dataframe states.x77
2. Clcula los coeficientes de correlacin para las asociaciones entre Murder ~ Population, Murder ~
Illiteracy
3. Clcula y representa grficamente sobre los grficos de dispersin correspondientes, las rectas de mnimos
cuadrados para Murder ~ Population, Murder ~ Illiteracy
4. Evala grficamente los supuestos del modelo lineal y comentalos brevemente
5. Evala si los modelos lineales son los ms adecuados en ambos casos mediante el ajsute de una funcin
cuadrtica
6. Estima las tasas de homicidio para niveles de Illiteracy de 0.25, 1.2, 2.1, 3.0, 4.0; Con qu valores
estamos interpolando y con cuales extrapolando?
Los resultados los deben de subir al sitio moodle como un solo archivo html generado con RStudio.
3 Bibliografa selecta
3.1 Libros
3.1.1 R y estadstica
Andy Field, Discovering statistics using R (A. P. Field, Miles, and Field 2012)
Michael J. Crawley, Statistics - An introduction using R (Crawley 2015)
Tilman M. Davies - The book of R - a first course in programming and statistics (Davies 2016)
3.1.3 R - manipulacin, limpieza y visualizacin avanzada de datos con tidyr, dplyr y ggplot2
32
3.1.5 R - programacin
abline() AIC() anova() arrows() cat() class() coef() colnames() cor() curve() data.frame() exp() lm() head() I()
legend() length() library() logLik() mean() lines() log() numeric() par() pairs() pf() plot() points() predict()
pt() qf() qt() segments() seq() sqrt() str() subset() sum() summary() summary.aov() tail() which()
datasets [R-datasets]
5 Recursos en lnea
CRAN
5.2 Cursos
33
5.3 Consulta
R cookbook
QuickR
downloadable books o R and stats
Use R!
Official CRAN documentation
[r], stackoverflow
Referencias
Allaire, JJ, Joe Cheng, Yihui Xie, Jonathan McPherson, Winston Chang, Jeff Allen, Hadley Wickham, Aron
Atkins, and Rob Hyndman. 2016. Rmarkdown: Dynamic Documents for R. https://CRAN.R-project.org/
package=rmarkdown.
Boehmke, Bradley. 2016. Data Wrangling with R. 1st ed. Springer. http://www.springer.com/la/book/
9783319455983.
Cotton, Richard. 2013. Learning R. 1st ed. OReilly.
Crawley, Michael J. 2012. The R book. 2nd ed. Wiley.
. 2015. Statistics : an introduction using R. 2nd ed. Wiley.
Dahl, David B. 2016. Xtable: Export Tables to Latex or Html. https://CRAN.R-project.org/package=xtable.
Davies, Tilman M. 2016. The book of R - a first course in programming and statistics. 1st ed. No Starch
Press.
Field, Andy P., Jeremy Miles, and Zoe. Field. 2012. Discovering statistics using R. 1st ed. London: Sage.
Fox, John, and Sanford Weisberg. 2016. Car: Companion to Applied Regression. https://CRAN.R-project.
org/package=car.
Gandrud, Christopher. 2015. Reproducible research with R and RStudio. 2nd ed. Chapman & Hall.
https://github.com/christophergandrud/Rep-Res-Book.
Grolemund, Garrett. 2014. Hands-on programming with R. OReilly.
Kabacoff, Robert. 2015. R in action : data analysis and graphics with R. 2nd ed. Manning.
https://github.com/kabacoff/RiA2 http://www.statmethods.net/.
Lander, Jared P. 2014. R for everyone : advanced analytics and graphics. New York, N.Y.: Addison-Wesley.
MacFerlane, John. 2016. Pandoc - a universal document converter. http://pandoc.org/.
Matloff, Norman S. 2011. The art of R programming : tour of statistical software design. No Starch Press.
http://heather.cs.ucdavis.edu/{~}matloff/132/NSPpart.pdf.
Murrell, Paul. 2009. R Graphics. In Wiley Interdisciplinary Reviews: Computational Statistics, 1:21620.
34
doi:10.1002/wics.22.
R Core Team. 2016. R: A Language and Environment for Statistical Computing. Vienna, Austria: R
Foundation for Statistical Computing. https://www.R-project.org/.
RStudio Team. 2016. RStudio: Integrated Development Environment for R. Boston, MA: RStudio, Inc.
http://www.rstudio.com/.
Teetor, Paul, and Michael Kosta. Loukides. 2011. R cookbook. OReilly. http://www.cookbook-r.com/.
Wickham, Hadley. 2016. Ggplot2. 2nd ed. Use R! Cham: Springer International Publishing. doi:10.1007/978-
3-319-24277-4.
Xie, Yihui. 2016. Knitr: A General-Purpose Package for Dynamic Report Generation in R. https://CRAN.
R-project.org/package=knitr.
35