Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Angel Udias
Sunday, August 24, 2014
Introduccin
El anlisis de regresin se utiliza para explicar una determinada variable, digamos Y, en funcin de una
variable X, o bien en funcin de varias variables X1, X2, . . . , Xk. En el primer caso se tratar de regresin
univariante, y en el segundo caso, de regresin multivariante. El modelo de explicacin en ambos casos es
lineal, esto es, se asume que la dependencia entre Y y las variable explicativa X adopta la forma:
Y = a + b X + error
O, en el caso multivariante:
Y = a + b1 X1 + b2 X2 + . . . + bk Xk.+ error
El trmino de error aparece porque cada vez que observamos una X, no siempre observaremos la misma Y.
Por ejemplo, si X es la estatura de una persona, e Y el peso, cada vez que observemos una estatura, no
siempre obtendremos el mismo peso en Y.
Los que hayis estudiado estadstica, conoceris el modelo perfectamente. Los que no, simplemente debis
saber que el modelo es til para predecir relaciones lineales, y para un estudio ms profundo, cualquier libro
de estadstica con un captulo de regresin sirve.
h0: existe correlacion entre las variables p-value: prob. de que las variables sean independientes (no exista
correl. entre ellas)
Generacin 50 datos para cada una de dos variables
x1 <- rnorm(50)
x3<-x1
# r de Pearson
cor.test(x3,x1)
##
## Pearson's product-moment correlation
##
## data: x3 and x1
## t = Inf, df = 48, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 1 1
## sample estimates:
## cor
## 1
plot(x3~x1)
1
3
2
1
x3
0
1
2
2 1 0 1 2 3
x1
2
1.5
0.5
x2
0.5
1.5
2 1 0 1 2 3
x1
cor.test(x1,x2)
##
## Pearson's product-moment correlation
##
## data: x1 and x2
## t = 1.332, df = 48, p-value = 0.1892
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.09452 0.44382
## sample estimates:
## cor
## 0.1888
ahora p-valor alto y correlacion baja. Ambas variables son normales pero logicamente no estan correladas
El coef de correlacion de Spearman es igual que la del coeficiente de correlacin de Pearson. Oscila entre
-1 y +1, indicndonos asociaciones negativas o positivas respectivamente, 0 cero, significa no correlacin
pero no independencia. La tau de Kendall es un coeficiente de correlacin por rangos, inversiones entre dos
ordenaciones de una distribucin normal bivariante. Coef Cor SPERMAN es recomendable utilizarlo cuando
los datos presentan VALORES EXTREMOS ya que dichos valores afectan mucho el coeficiente de correlacin
de Pearson, o ante distribuciones NO NORMALES tau de Kendall
cor.test(x1,x2,method='kendall')
##
3
## Kendall's rank correlation tau
##
## data: x1 and x2
## z = 0.8114, p-value = 0.4171
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.07918
# rho de Spearman
cor.test(x1,x2,method='spearman')
##
## Spearman's rank correlation rho
##
## data: x1 and x2
## S = 18472, p-value = 0.4335
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## 0.113
#
x2 <- 0.75*x1 + rnorm(50)
plot(x2~x1)
4
2
x2
0
2
2 1 0 1 2 3
x1
4
cor.test(x1,x2)
##
## Pearson's product-moment correlation
##
## data: x1 and x2
## t = 6.728, df = 48, p-value = 1.925e-08
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.5189 0.8166
## sample estimates:
## cor
## 0.6966
el p-valor bajo, se rechaza H0. SI estan correlacionadas con un coef del ultimo valor que se vea
A continuacin vamos a poner un ejemplo de regresin simple, realizado en R. Cargamos dos series de datos.
La primera son medidas de precipitacion y la segunda de caudal en un rio proximo a la estacion meteorologica.
Ambas medidas se corresponden a 10 dias
Una primera inspeccion visual siempre es muy util para estimar si ambas variables estan relacionadas
(DIAGRAMA DE DISPERSION)
plot(Prec, caudal)
5
25
caudal
20
15
10
0 2 4 6 8 10 12
Prec
6
Diagrama de Dispersion
25
Caudal
20
15
10
0 2 4 6 8 10 12
Precipitacion
Mirecta
##
## Call:
## lm(formula = caudal ~ Prec)
##
## Coefficients:
## (Intercept) Prec
## 10.01 1.41
lo cual indica que el ajuste es una recta con la siguiente ecuacion Caudal = 10.014 + 1.413* prec
7
Recta de Regresion
25
caudal
20
15
10
0 2 4 6 8 10 12
Prec
Con la ecuacion podriamos dibujar la recta regresion. Pero ya lo hace R pch indica el tipo de punto. cex:
para el tamao del texto
El modelo de regresion nos da mas informacion:
summary(Mirecta)
##
## Call:
## lm(formula = caudal ~ Prec)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.973 -0.857 0.159 0.909 2.027
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.014 0.846 11.8 2.4e-06 ***
## Prec 1.413 0.103 13.7 7.8e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.63 on 8 degrees of freedom
## Multiple R-squared: 0.959, Adjusted R-squared: 0.954
## F-statistic: 188 on 1 and 8 DF, p-value: 7.78e-07
Tambien podiamos obtener solo el coeficiente de correlacion. el R-Squared mide la variabilidad de los datos
8
explicada por el modelo. En el ejemplo anterior es aproximadamente 0.90 lo que quiere decir que ms del
90% de la variabilidad de los datos fue recogida por el modelo: esto es, es un buen modelo.
cc<- cor(Prec,caudal)
cr =cc*cc #el coeficiente de correlacion al cuadrado es el coeficiente de regresion
cr # que logicamente coincide con el coefciente de regresion que nos daba el sumario
## [1] 0.9591
attributes(Mirecta)
## $names
## [1] "coefficients" "residuals" "effects" "rank"
## [5] "fitted.values" "assign" "qr" "df.residual"
## [9] "xlevels" "call" "terms" "model"
##
## $class
## [1] "lm"
Los que hayan estudiado regresin con anterioridad reconocern varios de los nombres de la estructura
anterior.
## (Intercept) Prec
## 10.014 1.413
## caudal Prec
## 1 16 4
## 2 26 10
## 3 29 12
## 4 11 0
## 5 9 0
## 6 17 6
## 7 10 0
## 8 28 13
## 9 22 8
## 10 24 12
Naturalmente para cada dato concreto se comete un error. Dichos errores son los residuos. Si los queremos
ver para los datos de nuestro problema, escribiremos:
## 1 2 3 4 5 6 7 8
## 0.33293 1.85389 2.02754 0.98563 -1.01437 -1.49341 -0.01437 -0.38563
## 9 10
## 0.68024 -2.97246
9
podemos dibujar los residuos
0
1
2
3
2 4 6 8 10
Index
Hemos dibujamos una lnea horizontal en y=0 porque los residuos cumplen la propiedad de estar centrados
alrededor de dicha linea. Si en el grfico observamos algn dato que se aleja mucho por arriba o por abajo,
eso quiere decir que para ese dato, el modelo de regresin no predijo bien, dado que su residuo es elevado.
Eso quiere decir que tal dato no es bien explicado por el modelo, y as tenemos una forma de detectar tal
situacin. Por ejemplo, algo as podra pasar para el sueldo del director, tal vez.
## 1 2 3 4 5 6 7 8 9 10
## 15.67 24.15 26.97 10.01 10.01 18.49 10.01 28.39 21.32 26.97
10
25
caudal
20
15
medidos
esperados
10
0 2 4 6 8 10 12
Prec
Funciona de similar manera al modelo de regresin lineal simple, con la diferencia de que lo que se estima es
un plano de regresin.
R Las librerias de R incluyen conjuntos de datos interesantes. Por ejemplo relativos a hidrologia: LakeHuron:
Level of Lake Huron 1875-1972 Nile: Flow of the River Nile precip: Annual Precipitation in US Cities rivers:
Lengths of Major North American Rivers
Vamos a cargar unos datos de R sobre coches (los cargamos de una DB incluida en las librerias de R):
data(mtcars)
attach(mtcars)
Vamos a intentar explicar el consumo (mpg) en funcin de la potencia (hp) y del peso (wt):
cars.lm = lm(mpg~hp+wt)
# Observemos que mpg es la variable que se explica, y el signo ms (+)
# indica slo yuxtaposicin, esto es,que las variables que explican con hp y wt:
# Observemos el resultado:
summary(cars.lm)
##
## Call:
## lm(formula = mpg ~ hp + wt)
11
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.941 -1.600 -0.182 1.050 5.854
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.22727 1.59879 23.28 < 2e-16 ***
## hp -0.03177 0.00903 -3.52 0.0015 **
## wt -3.87783 0.63273 -6.13 1.1e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.59 on 29 degrees of freedom
## Multiple R-squared: 0.827, Adjusted R-squared: 0.815
## F-statistic: 69.2 on 2 and 29 DF, p-value: 9.11e-12
Por tanto, el modelo es: millas recorridas por galn = 37.22 - 0.03 potencia - 3.87 peso Esto es, cuanto ms
potente es el coche, menos millas recorre (de ah el signo negativo de su coeficiente), y cuanto ms pesa,
menos millas recorre. El R-squared es del 82% , lo que quiere decir que esas dos variables explican bastante
bien el consumo.
Podemos dibujar los residuos para ver si hay algn coche que se comporta de modo muy distinto a los dems:
plot(cars.lm$residuals)
abline(h=0)
6
4
cars.lm$residuals
2
0
2
4
0 5 10 15 20 25 30
Index
12
Si queremos predecir las millas recorridas por galn por un coche con 150 caballos y peso 2.5:
predict.lm(cars.lm,data.frame(hp=150,wt=2.5))
## 1
## 22.77
REGRESION NO LINEAL
400
200
0
15 20 25 30 35
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
13
## Min 1Q Median 3Q Max
## -90.1 -39.6 -16.9 28.7 195.9
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -418.97 33.88 -12.4 <2e-16 ***
## x 32.85 1.65 20.0 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 59.6 on 48 degrees of freedom
## Multiple R-squared: 0.893, Adjusted R-squared: 0.89
## F-statistic: 399 on 1 and 48 DF, p-value: <2e-16
x2 <- x*x
lx <- log(x)
ajlm <- lm(y~x2+x+lx) #ajuste lineal incluyendo transformaciones de x
summary(ajlm)
##
## Call:
## lm(formula = y ~ x2 + x + lx)
##
## Residuals:
## Min 1Q Median 3Q Max
## -99.92 -19.87 -4.09 23.98 85.53
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1078.407 924.901 1.17 0.25
## x2 0.468 0.737 0.63 0.53
## x 46.129 62.342 0.74 0.46
## lx -662.398 626.204 -1.06 0.30
##
## Residual standard error: 37.3 on 46 degrees of freedom
## Multiple R-squared: 0.96, Adjusted R-squared: 0.957
## F-statistic: 365 on 3 and 46 DF, p-value: <2e-16
## Start: AIC=365.7
## y ~ x2 + x + lx
##
## Df Sum of Sq RSS AIC
## - x2 1 560 64487 364
## - x 1 761 64688 364
## - lx 1 1555 65482 365
## <none> 63927 366
##
## Step: AIC=364.1
## y ~ x + lx
##
14
## Df Sum of Sq RSS AIC
## <none> 64487 364
## + x2 1 560 63927 366
## - lx 1 105788 170275 411
## - x 1 271079 335566 445
##
## Call:
## lm(formula = y ~ x + lx)
##
## Residuals:
## Min 1Q Median 3Q Max
## -100.14 -17.64 -2.22 24.59 85.91
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1645.82 236.09 6.97 9.0e-09 ***
## x 85.51 6.08 14.06 < 2e-16 ***
## lx -1052.46 119.86 -8.78 1.8e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 37 on 47 degrees of freedom
## Multiple R-squared: 0.959, Adjusted R-squared: 0.958
## F-statistic: 554 on 2 and 47 DF, p-value: <2e-16
15