Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Matrices
Generando Matrices
## [1] 1 3 5
A[,2] # extraigo elementos de la segunda columna
## [1] 3 4
los argumentos nrow y ncol indican el número de filas y columnas, respectivamente. Por defecto la matriz se
llena por columnas ( byrow=FALSE ), de lo contrario, la matriz se llena con filas como en el ejemplo
B<-matrix(c(1,2,3,4,5,6),
nrow=2,
ncol=3,
byrow=TRUE)
B
1
Matrices
D<-matrix(c(1,2,3,4,5,6),
2,
3,
byrow=TRUE)
D
Dimensiones y longitud
C<-matrix(c(1,2,3,4,5,6),
2,
3)
C
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
dim(C) # dimension
## [1] 2 3
dim(t(C))
## [1] 3 2
length(C) # cantidad de elementos
## [1] 6
x<-c(1,2)
x
## [1] 1 2
length(x)
## [1] 2
dim(x)
## NULL
Combinando matrices
2
Matrices
Diagonales y traza
## [1] 1 5 9
sum(diag(E)) # traza
## [1] 15
diag(rep(1, 5)) # matriz identidad de orden 5
## [5,] 0 0 0 0 1
Determinantes e Inversas
## [1] -7
Ahora a partir de la anterior, tomamos la dos primera columnas y agregamos una tercera columna que es
combinación lineal de la segunda
GG <- cbind(G[,1:2], G[,2]*3)
GG
## [1] 0
Asociemos eso con la existencia de inversa de una matriz
options(digits=3) # configuro digitos
invG <- solve(G) # inversa de la matriz
invG
## [1,] 1 0 0
## [2,] 0 1 0
## [3,] 0 0 1
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
el resultado diferente del orden de los productos, en el caso de un vector
v <- c(3,7,9,8)
v %* %t(v) # resulta una matriz
## [,1]
## [1,] 203
5
Matrices
y de matrices
A %* %t(B)
## [,1] [,2]
## [1,] 22 49
## [2,] 28 64
que recordemos no es conmutativo
A %* %B # que paso?
## [1] 2 3
dim(B)
## [1] 2 3
Generemos algunas matrices más
U<-matrix(c(1,2,3,4),
2,
2,
byrow=TRUE)
V<-matrix(c(5,6,7,8),
2,
2,
byrow=TRUE)
W<-matrix(c(2,2,3,5),
2,
2,
byrow=TRUE)
A<-matrix(c(1,2,3,4,5,6),
2,
3,
byrow=TRUE)
B<-matrix(c(1,2,3,4,5,6),
3,
2,
byrow=TRUE)
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [,1] [,2]
## [1,] 5 6
## [2,] 7 8
6
Matrices
## [,1] [,2]
## [1,] 2 2
## [2,] 3 5
A;B
## [,1] [,2]
## [1,] 6 8
## [2,] 10 12
2*U
## [,1] [,2]
## [1,] 2 4
## [2,] 6 8
A %* %B
## [,1] [,2]
## [1,] 22 28
## [2,] 49 64
B %* %A
## [,1] [,2]
## [1,] 19 22
## [2,] 43 50
V %* %U
## [,1] [,2]
## [1,] 23 34
## [2,] 31 46
U %* %A
## [2,] 11 25 39
U %* %W
## [,1] [,2]
## [1,] 8 12
## [2,] 18 26
W %* %U
## [,1] [,2]
## [1,] 8 12
## [2,] 18 26
V %* %W
## [,1] [,2]
## [1,] 28 40
## [2,] 38 54
W %* %V
## [,1] [,2]
## [1,] 24 28
## [2,] 50 58
A<-matrix(c(2,3,3,4),
2,
2,
byrow=TRUE)
A
## [,1] [,2]
## [1,] 2 3
## [2,] 3 4
solve(A)
## [,1] [,2]
## [1,] -4 3
## [2,] 3 -2
A %* %solve(A) # obtengo I
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
pero no siempre puedo garantizar las existencia de inversa
E<-matrix(c(1.3,9.1,1.2,8.4),
2,
2,
byrow=TRUE)
E
## [,1] [,2]
## [1,] 1.3 9.1
## [2,] 1.2 8.4
solve(E) # Matriz singular!!
8
Matrices
## [1] 2.31e-15
round(det(E))
## [1] 0
Pero en los casos que si, recordar que para una matriz cuadrada, al pre- o post-multiplicar por su inversa (si
existe!) obtengo la matriz identidad (I):
F<-matrix(c(1.2,9.1,1.3, 8.4),
2,
2,
byrow=TRUE)
F
## [,1] [,2]
## [1,] 1.2 9.1
## [2,] 1.3 8.4
solve(F)
## [,1] [,2]
## [1,] -4.800 5.200
## [2,] 0.743 -0.686
round(F %* %solve(F))
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
round(solve(F) %* %F)
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
9
Modelo de Regresión
Modelo de Regresión
Yi = β0 + β1 Xi + i
2
considerando εi ∼ N (0, σ )
Trabajemos con un ejemplo, que evalúa la tasa de crecimiento de unas orugas en función de taninos en la
dieta
orugas <- read.table ("orugas.txt" , header = TRUE)
plot(orugas$crecimiento ~ orugas$taninos,
pch = 19,
xlab = " % taninos",
ylab = "tasa de crecimiento")
12
tasa de crecimiento
10
8
6
4
2
0 2 4 6 8
% taninos
##
## Call:
## lm(formula = crecimiento ~ taninos, data = orugas)
##
## Coefficients:
## (Intercept) taninos
## 11.76 -1.22
10
Modelo de Regresión
que me otorga los coeficientes b0 = 11,76 y b1 = −1,22 como las estimaciones por Mínimos Cuadrados
Ordinarios. Es decir que, dados los datos, y habiendo seleccionado un modelo líneal , queremos encontrar los
valores de la pendiente y del intercepto que hagan más probable a los datos.
plot(orugas$crecimiento ~ orugas$taninos,
pch = 19,
xlab = " % taninos",
ylab = "tasa de crecimiento")
abline(lm(crecimiento ~ taninos, data = orugas)) # linea que pasa por a y b
12
tasa de crecimiento
10
8
6
4
2
0 2 4 6 8
% taninos
Esto lo podemos pensar para el caso del valor de la pendiente. Por ejemplo, dado una recta podemos visualizar
los segmentos entre el valor observado y el valor predicho por la recta; estos son los que conocemos como
residuos, residuales o error (en rojo en el gráfico).
11
Modelo de Regresión
12
tasa de crecimiento
10
8
6
4
2
0 2 4 6 8
% taninos
En esta gráfica tenemos los valores observados,y, que son los puntos negros y los valores predichos,
ŷ = b0 − b1 x, que son los que se encuentran en la recta, dado un valor de x.
modelo_orugas<-lm(crecimiento ~ taninos, data = orugas)
modelo_orugas$model$crecimiento # valores observados de y
## [1] 12 10 8 11 6 7 2 3 3
predict(modelo_orugas) # valores predichos de y
## 1 2 4 5 3 6 7 8 9
## 11.76 10.54 9.32
8.11 6.89 5.67 4.46 3.24 2.02
Uno desearía que la expresión (y − b0 − b1 x)2 tenga un resultado mínimo. Podríamos
P
12
Modelo de Regresión
24
23
22
sse
21
20
19
## [1] -1.22
donde me interesa estimar el valor de b que hace “mínimo” el valor de SSE.
Calculos de la RLS
x2 , y2 y
P P P P P
Necesitamos los “famosos cinco”, x, y, xy, para estimar los parámetros. A partir de
ahí sus versiones corregidas:
P
P 2 ( x)2
SSX = x − n
P 2
( y)
SSY = y 2 − n
P
P P
P ( x)( y)
SSXY = xy − n
x <- orugas$taninos
y <- orugas$crecimiento
## [1] 60
SSY <- sum(yˆ2)-sum(y)ˆ2/length(y)
SSY
## [1] 109
SSXY <- sum(x*y)- sum(x)*sum(y)/length(x)
SSXY
## [1] -73
13
Modelo de Regresión
SSXY
A partir de ahi, b = SSX
b <- SSXY/SSX
P P
y x
y a= n −b n
a <- mean(y)-b*mean(x)
a
## [1] 11.8
obteniendo y = 11,76 − 1,22x
La variación total en y, SSY puede ser asignada a la variación explicada por la regresión, suma de cuadrados
de la regresión SSR, más la variación no explicada por el modelo, la suma de cuadrados del error, SSE. Esto
quda expresado como SSY = SSR + SSE. La manera práctica, es calcular la SSR = b ∗ SSXY , dado que
conocemos b y como tenemos el valor de SSY , es por diferencia estimar SSE = SCY − SCR. Así se estima
para la tabla del ANOVA, (en R no aparece la fila de totales)
modelo_orugas <- lm (crecimiento ~ taninos, data = orugas)
summary.aov (modelo_orugas)
## [1] 5.59
considerando un α = 0,05. Con la lógica del p-valor, la tabla tabla nos provee
1-pf(30.974,1,7)
## [1] 0.000846
La SSE la conocemos, es la expresión que deseamos minimizar previamente, SSE = (y − ŷ)2 . Además de
P
la tabla del ANOVA del modelo, podemos obtener la tabla resumen que nos otorga más informaición sobre
las estimaciones de los coefiecientes y valores del grado de ajuste como el R2 .
summary(modelo_orugas)
##
## Call:
## lm(formula = crecimiento ~ taninos, data = orugas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.456 -0.889 -0.239 0.978 2.894
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.756 1.041 11.29 9.5e-06 ***
14
Modelo de Regresión
Verificar que los supuestos no son violados, εi ∼ N (0, σ 2 ), es de relevancia para la inferencia asociada al
modelo. De manera gráfica
plot(modelo_orugas, which=1) # Res vs Pred
Residuals vs Fitted
3
4
2
6
Residuals
1
0
−1
7
−3
2 4 6 8 10 12
Fitted values
lm(crecimiento ~ taninos)
observados el grafico de Residuos vs Predicho. Y el otro de interés es el QQplot
plot(modelo_orugas, which=2) # QQplot
15
Modelo de Regresión
Normal Q−Q
2
4
Standardized residuals
1
0
3
−1
Theoretical Quantiles
lm(crecimiento ~ taninos)
La visualización de estos gráficos son de utilización frecuente para comprobar la adecuación de un modelo.
16
Modelo de Regresión
60 80 0 100
rad
150
0
80
temp
60
15
viento
5
100
ozono
0
0 150 5 15
##
## Call:
## lm(formula = ozono ~ rad + temp + viento, data = ozono)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.49 -14.21 -3.56 10.12 95.60
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -64.2321 23.0420 -2.79 0.0063 **
## rad 0.0598 0.0232 2.58 0.0112 *
## temp 1.6512 0.2534 6.52 2.4e-09 ***
## viento -3.3376 0.6538 -5.10 1.4e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.2 on 107 degrees of freedom
## Multiple R-squared: 0.606, Adjusted R-squared: 0.595
## F-statistic: 54.9 on 3 and 107 DF, p-value: <2e-16
17
Modelo de Regresión
Modelo de clasificación
yij = µ + αi + ij
Donde yij es la observación j en el grupo i, µ es la media global, αi es el efecto del grupo i y ij es el error
aleatorio asociado con la observación yij . El objetivo es probar si hay diferencias significativas entre las medias
de los grupos. Veamos un ejemplo.
Un experimento en el que los rendimientos de los cultivos por unidad de área fueron medido de 10 campos
seleccionados al azar en cada uno de los tres tipos de suelo. Todos los campos fueron sembrados con la misma
variedad de semilla y provistos de los mismos insumos de fertilizantes y control de plagas. La pregunta es si
el tipo de suelo afecta significativamente el rendimiento del cultivo y, de ser así, en qué medida.
rend <- read.table ("rendimiento.txt", header = TRUE)
rend
## values ind
## 1 6 arenoso
## 2 10 arenoso
## 3 8 arenoso
## 4 6 arenoso
## 5 14 arenoso
## 6 17 arenoso
por defecto los nombres de las variables son values e ind, pero podemos modificarlas
names (rend_largo) <- c ("rendimiento", "suelo")
head (rend_largo)
## rendimiento suelo
## 1 6 arenoso
## 2 10 arenoso
## 3 8 arenoso
## 4 6 arenoso
## 5 14 arenoso
## 6 17 arenoso
18
Modelo de Regresión
Variables indicadoras
Ahora que si tenemos las variables en el formato para trabajar, necesitamos en pensar como incorporar la
varible categórica de una manera utilizable por le software. Nosotros tenesmo 3 categorías en total, por lo
que podemos pensar en dos variables binarias
(
1 si el suelo es arcilloso
xi1 =
0 de lo contrario
(
1 si el suelo es limoso
xi2 =
0 de lo contrario
yi = β0 + β1 xi1 + β2 xi1 + i
Se sabe que x1 y x2 son variables indicadores (“ficticias” o “dummy”), y:
El suelo es arcilloso si xi1 = 1 (en cuyo caso xi1 = 0);
El suelo es limoso si xi1 = 1 (en cuyo caso xi1 = 0);
El suelo es arenoso si xi1 = 0 y xi1 = 0.
El rendimiento medio de un suelo arenoso se describe mediante el intercepto β0 . Si consideramos suelos
arcilloso o limoso, entonces el adicional β1 o β2 describe la diferencia de rendimiento medio entre el arenoso y
cualquier otro tipo de suelo. Lo que tenemos son tres modelos de sólo interceptos: se permite que el intercepto
cambie según la categoría. En términos más generales, cuando tenemos al menos una variable categórica como
covariable, el intercepto puede cambiar para las observaciones de diferentes categorías (si hay diferencias en
el resultado entre las categorías). En nuestro ejemplo, sueloarenoso se considera la categoría de referencia,
pero es una elección arbitraria: cualquiera de las categorías sirve. Cuando ejecutamos un modelo de regresión
múltiple para los datos de rendimiento, vemos que R crea automáticamente las variables ficticias necesarias.
mod_rend <- lm (rendimiento ~ suelo, data = rend_largo)
summary (mod_rend )
##
## Call:
## lm(formula = rendimiento ~ suelo, data = rend_largo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.5 -1.8 0.3 1.7 7.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 9.90 1.08 9.16 9e-10 ***
## sueloarcilloso 1.60 1.53 1.05 0.3046
## suelolimoso 4.40 1.53 2.88 0.0077 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.42 on 27 degrees of freedom
## Multiple R-squared: 0.239, Adjusted R-squared: 0.183
## F-statistic: 4.24 on 2 and 27 DF, p-value: 0.025
Podemos ver que el rendimiento medio de los suelos arenosos es de 9,9, mientras que la diferencia entre los
rendimientos de los suelos arcillosos y arenosos es de 1,6. En algunos casos, no importa qué categoría se elija
19
Modelo de Regresión
como referencia. Pero si uno quisiera el cambio de categoría de referencia puede realizarse reordenando las
categorías mediante la función factor().
rend_largo$suelo <- factor (rend_largo$suelo, levels = c ("limoso", "arcilloso", "arenoso"))
# la primera categoria queda como referencia
mod_rend_2 <- lm (rendimiento ~ suelo, data = rend_largo)
summary (mod_rend_2)
##
## Call:
## lm(formula = rendimiento ~ suelo, data = rend_largo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8.5 -1.8 0.3 1.7 7.1
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.30 1.08 13.23 2.6e-13 ***
## sueloarcilloso -2.80 1.53 -1.83 0.0781 .
## sueloarenoso -4.40 1.53 -2.88 0.0077 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.42 on 27 degrees of freedom
## Multiple R-squared: 0.239, Adjusted R-squared: 0.183
## F-statistic: 4.24 on 2 and 27 DF, p-value: 0.025
Crear tablas de variables indicadoreas para su uso en modelos estadísticos es extremadamente fácil con la
función model.matrix (). Veremos lo que hace la función con un ejemplo sencillo, pdiendo a R que extraiga el
modelo matricial (X) utilizado en nuestro dos ejempls.
model.matrix(mod_rend)
## 22 1 0 1
## 23 1 0 1
## 24 1 0 1
## 25 1 0 1
## 26 1 0 1
## 27 1 0 1
## 28 1 0 1
## 29 1 0 1
## 30 1 0 1
## attr(,"assign")
## [1] 0 1 1
## attr(,"contrasts")
## attr(,"contrasts")$suelo
## [1] "contr.treatment"
y comparar
model.matrix(mod_rend_2)
Retomemos el ejemplo, pero en la aplicación directa para resolver este tipo de ejercicios. Partimos de los
datos, rend_largo , que graficamos
plot(rendimiento ~ suelo, data = rend_largo)
15
rendimiento
10
5
suelo
##
## Bartlett test of homogeneity of variances
##
## data: rendimiento by suelo
## Bartlett's K-squared = 1, df = 2, p-value = 0.5
a partir de esto, generamos el modelo
mod_rend <- aov(rendimiento ~ suelo, data = rend_largo)
anova(mod_rend) # es la manera "clásica"
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
y al darnos diferencias significativas, intentaremos hacer comparaciones a posteriorr
TukeyHSD(mod_rend)
##
## Call:
## lm(formula = ozono ~ rad + temp + viento, data = ozono)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.49 -14.21 -3.56 10.12 95.60
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -64.2321 23.0420 -2.79 0.0063 **
## rad 0.0598 0.0232 2.58 0.0112 *
## temp 1.6512 0.2534 6.52 2.4e-09 ***
## viento -3.3376 0.6538 -5.10 1.4e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.2 on 107 degrees of freedom
## Multiple R-squared: 0.606, Adjusted R-squared: 0.595
## F-statistic: 54.9 on 3 and 107 DF, p-value: <2e-16
Lo primero que aparece es el modelo. Y posteriormente la descriptiva de los residuos. Un residuo o residual
es la diferencia entre un resultado observado para un valor específico de la(s) covariable(s), y el resultado
predicho por el modelo utilizando el mismo valor o valores de la/s covariable. res = yobservado − ŷpredicho .
Posteriormente está la tabla de coeficientes, sus estimados por Mínimos Cuadrados; el primero es el intercepto
y el resto de los coeficeintes de regresión, obteniendo el modelo predicho:
Además se suman tres columnas asociadas con las pruebas de los coeficientes individuales:
Error estándar : error estándar del coeficiente de regresión estimado;
23
Modelo de Regresión
t valor: El estadístico t para la hipótesis nula de que el coeficiente de regresión es cero. Se calcula como
el cociente entre el coefiencite de regresión estimado y su error estándar;
Pr(>|t|) : p-valor resultante de la prueba t anterior.
Las pruebas serían
(
H0 : βj = 0 dadas las demás covariables del modelo.
H1 : βj 6= 0 dadas las demás covariables del modelo.
Se trata de una prueba importante: si la hipótesis nula es cierta, equivale a dejar la jésima covariable
fuera del modelo. Esto significa que la covariable no ayuda a explicar la variabilidad del resultado. La
hipótesis alternativa, por supuesto, es que permanece en el modelo: que esta covariable concreta sí ayuda a
explicar la variabilidad del resultado. La prueba subyacente es una prueba t: el estadístico de la prueba que
aparece en la columna del valor t se compara con una distribución t con n − p) grados de libertad, donde n
es el número de observaciones y p es el número de coeficientes de regresión que hay que estimar (incluida la
ordenada).
Estas pruebas de hipótesis pueden utilizarse para comprobar si un único coeficiente de regresión es distinto
de cero. No deberíamos eliminar múltiples covariables simultáneamente basándonos en que sus valores p son
todos “demasiado grandes”: esto no es lo que se está comprobando aquí. Podría ocurrir que dos o más de
los valores p de los coeficientes de regresión sean demasiado grandes, lo que puede llevarnos a pensar que
podríamos eliminar estas covariables simultáneamente. Recordar que la hipótesis está condicionada a que
todas las demás variables estén presentes, por lo que, aunque puede que no haya pruebas para retener a la
covariable A en el modelo cuando B está presente, y ninguna evidencia para retener la covariable B en el
modelo cuando A está presente, esto no significa que podamos eliminar ambas (A y B).
√
Aparece también la desviación típica residual ( CM E). Es la estimación muestral de la desviación
estándar (σ) del término del error ().
Una medida útil que podemos extraer de un modelo es el coeficiente de determinación, comúnmente
conocido como R2 (“R al cuadrado”). Se trata de una escala entre 0 y 1 que mide la proporción de variabilidad
del resultado que es explicada por las covariables del modelo.
En la salida de R, hay dos versiones de R2 : el R-cuadrado múltiple y el R-cuadrado ajustado. El R-cuadrado
ajustado intenta evitar una propiedad indeseable del R2: añadir covariables a un modelo nunca reducirá el
R2. Esto no es deseable, ya que artificialmente nuestro R2 aumentaría simplemente aumentando el número
de covariables que utilizamos en el modelo. El R2 ajustado incluye una penalización para evitar que esto
ocurra: cuantas más covariables que añada a su modelo, mayor será la penalización.
Al final hay una prueba F, que a veces se conoce como Análisis de Varianza para la regresión (o ANOVA para
la regresión). Se trata de una prueba estadística bastante estricta, pero sirve como herramienta contundente
para evaluar el modelo. Supongamos que el modelo que está construyendo tiene un intercepto, b0 , y otros
coeficientes de regresión p para p covariables. La hipótesis en cuestión es
(
H0 : β1 = ... = βp = 0
H1 : al menos una de las β1 , ..., βp es distinta de 0
La hipótesis nula puede reformularse como “eliminar todas las covariables del modelo”. Esto parece extremo,
pero nos dice algo sobre si las covariables tienen algún poder para describir el resultado. Si no logramos
rechazar esta hipótesis, probablemente no tengamos entre manos un modelo muy útil.
anova (mod_ozono)
##
## Call:
## lm(formula = ozono ~ viento + rad + temp, data = ozono)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.49 -14.21 -3.56 10.12 95.60
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -64.2321 23.0420 -2.79 0.0063 **
## viento -3.3376 0.6538 -5.10 1.4e-06 ***
## rad 0.0598 0.0232 2.58 0.0112 *
## temp 1.6512 0.2534 6.52 2.4e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.2 on 107 degrees of freedom
## Multiple R-squared: 0.606, Adjusted R-squared: 0.595
## F-statistic: 54.9 on 3 and 107 DF, p-value: <2e-16
anova (mod_ozono_2)
Y = Xβ +
Donde:
Y es un vector columna de n observaciones de la variable respuesta.
X es una matriz n × p de los valores de las p variables predictoras en las n observaciones.
β es un vector columna de p coeficientes de regresión desconocidos que queremos estimar.
es un vector columna de n errores aleatorios que representan la variación no explicada por el modelo.
En forma matricial, esta ecuación se expresa como:
β0
y1 1 x11 x12 ... x1p 1
y2 1 β
1 2
x21 x22 ... x2p
.. = .. .. β2 + ..
.. .. ..
. . . . . . . .
..
yn 1 xn1 xn2 ... xnp n
βp
∼ N (0, σ 2 I)
Donde es el vector de las perturbaciones aleatorias, N (0, σ 2 I) indica que sigue una distribución normal
multivariante con media cero y varianza-covarianza σ 2 I, siendo I la matriz identidad.
La regresión lineal (simple y múltiple), el análisis de la varianza (ANOVA) y el análisis de la covarianza
(ANCOVA ) son todos de esta forma y a veces se denominan conjuntamente modelos lineales generales.
La estimación por Mínimos Cuadrados Ordinarios (OLS, por sus siglas en inglés) del vector de coeficientes de
regresión β en el modelo lineal general se puede expresar como:
β̂ = (X T X)−1 X T Y
Los supuestos del modelo bajo los cuáles serán válidas nuestras inferencias son los siguientes:
1. los εi tienen media cero, E(εi ) = 0.
2. los εi tienen todos la misma varianza desconocida que llamaremos σ 2 y que es el otro parámetro
del modelo, V ar(εi ) = σ 2
3. los εi tienen distribución normal
4. los εi son independientes entre sí, y no están correlacionados con las xi .
En función de esto el vector de los residuos en el modelo lineal general se puede calcular como la diferencia
entre el vector de la variable respuesta observada y el vector de la variable respuesta estimada por el modelo:
ˆ = Y − X β̂
## [1] 12 10 8 11 6 7 2 3 3
X <- model.matrix(modelo_orugas)
X
## (Intercept) taninos
## 1 1 0
## 2 1 1
## 3 1 2
## 4 1 3
## 5 1 4
## 6 1 5
## 7 1 6
## 8 1 7
## 9 1 8
## attr(,"assign")
## [1] 0 1
Beta_estimados <- solve(t(X) %* %X) %* %t(X) %* %Y
Beta_estimados
## [,1]
## (Intercept) 11.76
## taninos -1.22
modelo_orugas
27
Modelo Lineal General
##
## Call:
## lm(formula = crecimiento ~ taninos, data = orugas)
##
## Coefficients:
## (Intercept) taninos
## 11.76 -1.22
Datos Regresión Lineal Múltiple
Y <- mod_ozono$model$ozono
Y
## [1] 41 36 12 18 23 19 8 16 11 14 18 14 34 6 30 11 1 11
## [19] 4 32 23 45 115 37 29 71 39 23 21 37 20 12 13 135 49 32
## [37] 64 40 77 97 97 85 10 27 7 48 35 61 79 63 16 80 108 20
## [55] 52 82 50 64 59 39 9 16 122 89 110 44 28 65 22 59 23 31
## [73] 44 21 9 45 168 73 76 118 84 85 96 78 73 91 47 32 20 23
## [91] 21 24 44 21 28 9 13 46 18 13 24 16 13 23 36 7 14 30
## [109] 14 18 20
X <- model.matrix(mod_ozono)
X
## 32 1 120 73 11.5
## 33 1 137 76 10.3
## 34 1 269 84 4.0
## 35 1 248 85 9.2
## 36 1 236 81 9.2
## 37 1 175 83 4.6
## 38 1 314 83 10.9
## 39 1 276 88 5.1
## 40 1 267 92 6.3
## 41 1 272 92 5.7
## 42 1 175 89 7.4
## 43 1 264 73 14.3
## 44 1 175 81 14.9
## 45 1 48 80 14.3
## 46 1 260 81 6.9
## 47 1 274 82 10.3
## 48 1 285 84 6.3
## 49 1 187 87 5.1
## 50 1 220 85 11.5
## 51 1 7 74 6.9
## 52 1 294 86 8.6
## 53 1 223 85 8.0
## 54 1 81 82 8.6
## 55 1 82 86 12.0
## 56 1 213 88 7.4
## 57 1 275 86 7.4
## 58 1 253 83 7.4
## 59 1 254 81 9.2
## 60 1 83 81 6.9
## 61 1 24 81 13.8
## 62 1 77 82 7.4
## 63 1 255 89 4.0
## 64 1 229 90 10.3
## 65 1 207 90 8.0
## 66 1 192 86 11.5
## 67 1 273 82 11.5
## 68 1 157 80 9.7
## 69 1 71 77 10.3
## 70 1 51 79 6.3
## 71 1 115 76 7.4
## 72 1 244 78 10.9
## 73 1 190 78 10.3
## 74 1 259 77 15.5
## 75 1 36 72 14.3
## 76 1 212 79 9.7
## 77 1 238 81 3.4
## 78 1 215 86 8.0
## 79 1 203 97 9.7
## 80 1 225 94 2.3
## 81 1 237 96 6.3
## 82 1 188 94 6.3
## 83 1 167 91 6.9
## 84 1 197 92 5.1
## 85 1 183 93 2.8
29
Modelo Lineal General
## 86 1 189 93 4.6
## 87 1 95 87 7.4
## 88 1 92 84 15.5
## 89 1 252 80 10.9
## 90 1 220 78 10.3
## 91 1 230 75 10.9
## 92 1 259 73 9.7
## 93 1 236 81 14.9
## 94 1 259 76 15.5
## 95 1 238 77 6.3
## 96 1 24 71 10.9
## 97 1 112 71 11.5
## 98 1 237 78 6.9
## 99 1 224 67 13.8
## 100 1 27 76 10.3
## 101 1 238 68 10.3
## 102 1 201 82 8.0
## 103 1 238 64 12.6
## 104 1 14 71 9.2
## 105 1 139 81 10.3
## 106 1 49 69 10.3
## 107 1 20 63 16.6
## 108 1 193 70 6.9
## 109 1 191 75 14.3
## 110 1 131 76 8.0
## 111 1 223 68 11.5
## attr(,"assign")
## [1] 0 1 2 3
Beta_estimados <- solve(t(X) %* %X) %* %t(X) %* %Y
Beta_estimados
## [,1]
## (Intercept) -64.2321
## rad 0.0598
## temp 1.6512
## viento -3.3376
mod_ozono
##
## Call:
## lm(formula = ozono ~ rad + temp + viento, data = ozono)
##
## Coefficients:
## (Intercept) rad temp viento
## -64.2321 0.0598 1.6512 -3.3376
Datos Clasifiación a una vía
Y <- mod_rend$model$rendimiento
Y
## [1] 6 10 8 6 14 17 9 11 7 11 17 15 3 11 14 12 12 8 10 13 13 16 9 12 15
## [26] 16 17 13 18 14
30
Modelo Lineal General
X <- model.matrix(mod_rend)
X
## [,1]
## (Intercept) 14.3
## sueloarcilloso -2.8
## sueloarenoso -4.4
lm(mod_rend)
##
## Call:
## lm(formula = mod_rend)
##
## Coefficients:
31
Corolario
Corolario
Trabajamos con la regresión lineal (simple y múltiple) y el análisis de varianza (ANOVA). La regresión es
el método estándar para relacionar una variable de respuesta continua con varias variables explicativas
(o predictoras) continuas. El ANOVA se utiliza para una variable de respuesta continua y variables
explicativas categóricas o cualitativas (factores). Si bien no lo abordamos, el análisis de covarianza
(ANCOVA) se utiliza cuando al menos una de las variables explicativas es continua. Hoy en día es
habitual utilizar las mismas herramientas computacionales para todas estas situaciones.
El concepto de Modelo Lineal General se utiliza para abarcar toda la gama de métodos de análisis
de una variable de respuesta continua, que cumple los supuestos ∼ N (0, σ 2 I) y múltiples variables
explicativas.
32