Sei sulla pagina 1di 3

Grado en Ciencias Mar y Ambientales Estadística Aplicada

Universidad de Cádiz Isabel Alarcón Carrasco


Curso 2015/16

#REGRESIÓN LINEAL Y MÚLTIPLE

library(MASS, pos=17)
data(UScereal, package="MASS")
#Previamente... las variables han de estar relacionadas-->
Matriz de correlación
cor(UScereal[,c("calories","carbo","fat","fibre","potassium","pr
otein","sodium","sugars")], use="complete")
#Primera prueba: generar un modelo con todas las variables
LinearModel.1 <- lm(calories ~ carbo + fat + fibre + potassium +
protein + sodium + sugars, data=UScereal)
summary(LinearModel.1)
#call=Llamada
#Residuals=Residuos generadas
#Coefficients=Coeeficientes del modelo --> Bi
#El modelo sería
calorias=Y=INTERCEPT+4.88carbo+9.31fat+2.78fibre-
0.113potassium+4.83protein+0.0115sodium+4.55sugars

#¿Es el modelo significativo/ADECUADO? Ho:NO ADECUADO (matriz de


correlaciones =0) H1: ADEACUADO (ideal)
#Una vez realizado el modelo atendemos a su p-valor obtenido (el
último)
#¿Es significativa la variable Bi para explicar el modelo? Ho:
Bi=0(NO SIGNIFICATIVA) H1: Bi/=0 (SIGNIFICATIVA)
#Atender a los p-valores de coeficientes. Si son >alfa--> No
significativos.

#Comprobación con ANOVA


Anova(LinearModel.1, type="II") #mismas conclusiones

#VALORES ATÍPICOS: Modelos-->Diagnósticos numéricos-->Test de


valores atípicos de Bonferroni
Ho: El valor más extremo NO es atípico, H1: El valor más extremo
SI es atípico
outlierTest(LinearModel.1)
#En caso afirmativo procederemos a eliminar dicho valor
UScereal$ObsNumber <- 1:65 #Para saber donde está cada individuo
#Datos->conjunto de datos activo->borrar filas del conjunto de
datos+poner fila+nuevo nombre
UScereal_GN <- UScereal[-c(31),] #En este caso borramos la fila
31
UScereal_GN$ObsNumber <- 1:64 #numeramos siempre con uno menos.
#OJO!! ya no tenemos modelo--> Es necesario volver a
construirlo!

LinearModel.2 <- lm(calories ~ carbo + fat + fibre + potassium +


protein + sodium + sugars, data=UScereal_GN)
summary(LinearModel.2)
#Volvemos a hacer bonferroni y comprobar que no hay atípicos y
así hasta desacerse de todos.
#NOTA: Un valor puede ser influyente pero no atipico cuando su
p-valor es >alfa (recuerda el contraste)

Apuntes descargados de wuolah.com


Grado en Ciencias Mar y Ambientales Estadística Aplicada
Universidad de Cádiz Isabel Alarcón Carrasco
Curso 2015/16

#Ho: NO atípico H1: SI atípico


outlierTest(LinearModel.2)
showData(UScereal_GN, placement='-20+200',
font=getRcmdr('logFont'), maxwidth=80, maxheight=30)

UScereal_GN_GGP <- UScereal_GN[-c(31),]


LinearModel.3 <- lm(calories ~ carbo + fat + fibre + potassium +
protein + sodium + sugars, data=UScereal_GN_GGP)
summary(LinearModel.3)
outlierTest(LinearModel.3)

#VALORES INFLUYENTES
#Añadimos residuos estunderizados, valores de Hat y distancias
de Cook
showData(UScereal, placement='-20+200',
font=getRcmdr('logFont'), maxwidth=80, maxheight=30)
showData(UScereal_GN, placement='-20+200',
font=getRcmdr('logFont'), maxwidth=80, maxheight=30)
UScereal_GN_GGP<- within(UScereal_GN_GGP, {
rstudent.LinearModel.3 <- rstudent(LinearModel.3)
hatvalues.LinearModel.3 <- hatvalues(LinearModel.3)
cooks.distance.LinearModel.3 <- cooks.distance(LinearModel.3)
})
Boxplot( ~ rstudent.LinearModel.3, data=UScereal_GN_GGP,
id.method="y") ##A)Diagrama cajas y bigotes
##B) Gráficas básicas de diagnóstico: Cook deja residuos grandes
por arriba y por abajo y los que estén situados en esas badnas
son influyentes.
oldpar <- par(oma=c(0,0,3,0), mfrow=c(2,2))
plot(LinearModel.3)
par(oldpar)
##C) Modelos-->Gráficas--> Gráficas de influencia : El radio-
hat=potencial=influencia
#También sale la comprobación numérica que simboliza los
anómalos y más inluyentes
influencePlot(LinearModel.3, id.method="noteworthy", id.n=2) #Ea

##Para el resto de los pasos es necesario añadir el resto de


observaciones: Modelos-->Añadir a las esta...->Seleccionar
ajustados y residuos.

#ALEATORIDAD
#a) Representación de residuos en GRÁFICAS BÁSICAS DE DIAG:
Comportamiento aleatorio=independencia, comportamiento con
patrón=dependencia
#b) Test de Durbin-Watson: Ho: Independientes (lo ideal) H1:
Dependientes
#OJO! QUE BUSCAMOS LA INDEPENDENCIA!
library(zoo, pos=19)
library(lmtest, pos=19)
dwtest(calories ~ carbo + fat + fibre + potassium + protein +
sodium + sugars, alternative="two.sided", data=UScereal_GN_GGP)
Grado en Ciencias Mar y Ambientales Estadística Aplicada
Universidad de Cádiz Isabel Alarcón Carrasco
Curso 2015/16

#NORMALIADAD
#a) Gráficas Q-Q de Gráficas Básicas de Diagnóstico.
#b) Test de Shapiro-Wilk. Ho: Normalida, H1: No normalidad
with(UScereal_GN_GGP,
shapiro.test(UScereal_GN_GGP$residuals.LinearModel.3))

#HOMOCEDASTICIDAD: Test de Breuch-Pagan--> Ho: Homocedástico,


H1: Heterocedastico
bptest(calories ~ carbo + fat + fibre + potassium + protein +
sodium + sugars, studentize=FALSE, data=UScereal_GN_GGP)

#LINEALIDAD: Test RESET de no linealidad


Ho: Lineal (b2=b3=0) H1: NO lineal (lo contrario)
resettest(calories ~ carbo + fat + fibre + potassium + protein +
sodium + sugars, power=2:3, type="regressor",
data=UScereal_GN_GGP)
#El hecho de rechazar la hipótesis de linealidad, significa que
el modelo podría ser ajustado a un modelo lineal o parabólico.

#MULTICOLINEALIDAD: Test de inflación de la varianza


#El objetivo de la multicolinealidad es eliminar los valores que
puedan causar un problema de colinealidad, por tanto se eliminan
los valores mayores a 10
vif(LinearModel.3)
#Quitaremos fibra y potasio del modelo.

Modelo_sin_fibra_ni_potasio <- lm(calories ~ carbo + fat +


protein + sugars, data=UScereal_GN_GGP)
summary(Modelo_sin_fibra_ni_potasio)

#En el caso de no saber que variables hemos de escoger, se


realizará un Stepwise
#Modelos-> selección de modelo paso a paso--> seleccionar
adelante/atrás y AIC

#COMPARACIÓN DOS MODELOS


#Modelos->Test de hipótesis--> Comparar 2 modelos seleccionarlos
#Ho:Modelos son = (no hay diferencias significativas)
#H1: Modelos son /= (hay diferencias significativas)
#CASO: UScereal completo vs. UScereal_mejorado

Completo <- lm(calories ~ carbo + fat + fibre + potassium +


protein + sodium + sugars, data=UScereal)
summary(Completo)

Mejorado <- lm(calories ~ carbo + fat + protein + sugars,


data=UScereal)
summary(Mejorado)
#Comparación
anova(Completo, Mejorado)
#Obtenemos un p-valor de 0 luego rechazamos la hipótesis de
igualdad de modelos y concluimos que los modelos tienen
diferencias significativas.

Potrebbero piacerti anche