You are on page 1of 8

Regresin lineal

Luis Ramn Barrios Roqueme


19 de octubre de 2015
En muchas aplicaciones del anlisis de regresin se involucran ms de una variable regresara o independiente.

Modelo lineal
Un modelo de regresin que contiene mas de una variable regresara recibe el nombre de modelo de regresin mltiple. En general, el modelo

y = 0 + 1 x1 + 2 x2 + + k xk +
k variables regresoras. Los parmetros j j = 0, 1, 2, , k son llamados coeficientes
de regresin. El parmetro j representa el cambio esperado en la respuesta y por cambio unitario en xj , todas las variables independientes
restantes xi (i j) se mantienen constantes.
es llamado un modelo regresin lineal mltiple con

Ejemplo 1. A continuacin se describe el empleo de un modelo de regresin para relacionar la cantidad de tiempo requerido por un vendedor
de ruta (chofer) para abastecer una mquina vendedora de refrescos con el nmero de latas que incluye la misma, y la distancia del vehculo
de servicio a la ubicacin de la mquina. Este modelo se emple para el diseo de la ruta, el programa y el despacho de vehculos. La tabla
presenta 25 observaciones respecto al tiempo de entrega tomadas del mismo estudio descrito.
Los datos del fichero Entrega.txt se cargan con los siguientes cdigos
#.....Cargar la base
datos=read.table("Entrega.txt",dec=".",header=T)
datos

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

TiempoEntrega NumeroLatas Distancia


9.95
2
50
24.45
8
110
31.75
11
120
35.00
10
550
25.02
8
295
16.86
4
200
14.38
2
375
9.60
2
52
24.35
9
100
27.50
8
300
17.08
4
412
37.00
11
400
41.95
12
500
11.66
2
360
21.65
4
205
17.89
4
400
69.00
20
600
10.30
1
585
34.93
10
540
46.59
15
250
44.88
15
290
54.12
16
510
56.63
17
590
22.13
6
100
21.15
5
400

#Tambin se pueden llamar como


#datos=read.csv2(file.choose(),sep=";",dec=".",header=T)
#datos
# Fijar las variables de la base de datos
attach(datos)
#Nombre de las variables
names(datos)

## [1] "TiempoEntrega" "NumeroLatas"

"Distancia"

Estimacin con mnimos cuadrados


Podemos escribir el modelo de regresin lineal mltiple en trmino de las observaciones como

y = 0 + 1 xi1 + 2 xi2 + + k xik + i


k

= 0 + j xij + i

i = 1, 2, , n

j=1

La funcin de mnimos cuadrados es


n

yi 0 j xij

j=1
i=1
n

L = 2i =
i=1

La funcin

L se minimizar con respecto a 0 , 1 , , k


L

0 , 1 ,, k

y se debe satisfacer

n
k

= 2 y i 0 j xij xij = 0

i=1
j=1

j = 1, 2, , k

Simplificando las ecuaciones anteriores se obtienen las ecuaciones normales de mnimos cuadrados
El modelo puede ser escrito en forma matricial como

Y = X +
y1
1
y
2
1

donde Y =
,X=

1
y
n

x11
x21

x12
x22

xn1

xn2

El cdigo en R es el siguiente
#Creando el modelo de regresin
x=c(rep(1,25),datos[,2],datos[,3])
X=matrix(x,nrow=25,ncol=3)
Y=datos[,1]
XX=t(X)%*%X
XY=t(X)%*%Y
Best=solve(XX)%*%XY
Best

##
[,1]
## [1,] 2.26379143
## [2,] 2.74426964
## [3,] 0.01252781

Yest=X%*%Best
residuos=Y-Yest
# Grfico de los datos
pairs(datos)

x1k
0
1

x1k
1
2

,=
y=

nk

#...Modelo de regresin lineal


# Modelo simple
regresion = lm(NumeroLatas ~ TiempoEntrega, data = datos)
regresion

##
## Call:
## lm(formula = NumeroLatas ~ TiempoEntrega, data = datos)
##
## Coefficients:
##
(Intercept) TiempoEntrega
##
-1.4015
0.3321

# Grfico de regresin lineal


plot(NumeroLatas ~ TiempoEntrega, xlab = "Tiempo de entrega", ylab = "Nmero de latas")
abline(regresion)

# Modelo lineal multiple


regr = lm(NumeroLatas ~ TiempoEntrega + Distancia, data = datos)
regr

##
## Call:
## lm(formula = NumeroLatas ~ TiempoEntrega + Distancia, data = datos)
##
## Coefficients:
##
(Intercept) TiempoEntrega
Distancia
##
-0.692657
0.355317
-0.004169

Intervalo de confianza en la regresin


Supongamos que los errores { i }

NI(0, 2 ) . Por tanto las observaciones { y i } NI( 0 + kj=1 j xij , 2 ) . Puesto que el

es una combinacin lineal de las observaciones, resulta que


estimador de mnimos cuadrados

N(, 2 ( X X) ) . Entonces cada

una de las estadstica

j j

2 Cjj

j = 0, 1, , k
1

2
t con n p grados de libertad, donde C jj el elemento jj e simo de la matriz ( X X) y
= CME . En
consecuencia un intervalo de confianza del 100(1 )% para el coeficiente de regresin j , j = 0, 1, , k, es

2
j t/2,np
Cjj

se distribuye como

En R utilizamos el cdigo
#Intervalo de confianza para la regresin
confint(regr)

##
2.5 %
97.5 %
## (Intercept)
-1.506107300 0.120792721
## TiempoEntrega 0.330204146 0.380429563
## Distancia
-0.006390799 -0.001947674

confint(regr, level = 0.9)

##
5 %
95 %
## (Intercept)
-1.366185063 -0.019129517
## TiempoEntrega 0.334523805 0.376109904
## Distancia
-0.006008666 -0.002329807

Prediccin de nuevas observaciones


Para la prediccin de las nuevos observaciones utilizamos el cdigo
# Predicciones en el medelo lineal simple
predicciones=predict(regresion)
#Predicciones en el modelo lineal mltiple
pred=predict(regr)

Prueba de hiptesis en la regresin


La prueba de significancia de la regresin es determinada para probar si hay relacin lineal entre la variable dependiente
variables independientes. Se contrastan la hiptesis

H0 : 1 = 2 = = k
Vs
H1 : j para alg n j
#tabla anlisis de varianza
anova(regresion)

y el conjunto de

##
##
##
##
##
##
##
##

Analysis of Variance Table


Response: NumeroLatas
Df Sum Sq Mean Sq F value
Pr(>F)
TiempoEntrega 1 673.38 673.38 615.08 < 2.2e-16 ***
Residuals
23 25.18
1.09
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

anova(regr)

##
##
##
##
##
##
##
##
##

Analysis of Variance Table


Response: NumeroLatas
Df Sum Sq Mean Sq F value
Pr(>F)
TiempoEntrega 1 673.38 673.38 993.439 < 2.2e-16 ***
Distancia
1 10.27
10.27 15.148 0.0007844 ***
Residuals
22 14.91
0.68
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Diagnostico del modelo


#Residual en el modelo lineal simple
residuos= rstandard(regresion)
valores.ajustados = fitted(regresion)
plot(valores.ajustados, residuos)

#Residual en el modelo lineal mltiple


resies= rstandard(regr)
valores.ajustados = fitted(regresion)
plot(valores.ajustados, resies)

#Normalidad en el modelo lineal simple


qqnorm(residuos)
qqline(residuos)

# grafico de los residuos para verificar el supuesto de independencia


plot(pred, resies, xlab = "ajustados", ylab = "Residuales")
abline(h = 0)

# Prueba de normalidad
qqnorm(resies, ylab = "residuales")
qqline(resies)

require(nortest)

## Loading required package: nortest

shapiro.test(resies)

##
## Shapiro-Wilk normality test
##
## data: resies
## W = 0.96699, p-value = 0.5702

# Correlacin
cor(datos)

##
TiempoEntrega NumeroLatas Distancia
## TiempoEntrega
1.0000000
0.9818118 0.4928666
## NumeroLatas
0.9818118
1.0000000 0.3784127
## Distancia
0.4928666
0.3784127 1.0000000

You might also like