“Validación y Predicción de los Modelos Lineales en la...

Post on 25-Sep-2020

7 views 0 download

Transcript of “Validación y Predicción de los Modelos Lineales en la...

Sesión004b.“ValidaciónyPrediccióndelosModelosLinealesenlaInvestigaciónComercial”1480-TécnicasEstadísticasenInvestigacióndeMercadosGradoenEstadísticaempresariaCurso2012-13– SegundosemestreProfesor:XavierBarberiVallésDepartamento:Estadística,MatemáticaseInformática

Índice

• AjusteModelo9 BondaddelAjustedelmodelo

9 ¿EsBondadoso?

9 ValidacióndelModelo9 ¿EsVálido?

9 PrediccióndelModelo

LosDatos

©XaviBarber2012/2013

Modeloajustado

• Trasrealizarlastéccnicas deselecciónautomáticadelmodelo,orealizandoestaseleccióndeformamanualelmodeloalquesellegaes(enlenguajeR):

modelo1 <-

lm(Cases~Month + Easter + Eggs.pr, data=Eggs)

BondaddeAjusteCuando hemos realizado el ajuste de un modelo de regresión lineal,hemos de verificar que efectivamente dicho modelo proporciona unbuen ajuste a la hora de explicar (predecir) la variable respuesta.Básicamente la bondad del ajuste la cuantificamos con el tanto porciento de variabilidad de la respuesta, que consigue ser explicada por elmodelo ajustado. Para ello contamos con varios tipos de medidas quecuantifican esta variabilidad dediversosmodos.

Comomedidasfundamentalesdebondaddeajustecontamoscon:• elerrorresidualestimados= ;• eltestFdebondaddeajustequeseobtienedelaTabladeAnova;• elcoeficientededeterminaciónR2.

σ̂

BondaddeAjuste:R2

Sin embargo,esa medida no esta exenta de problemas:• R^2 puede resultar grande a pesar de que la relación entre x e y no

sea lineal (de hecho tiene la misma interpretación que uncoeficiente de correlación, válido para cuantificar la relación linealsólo cuando esta existe).

• La magnitud de R^2 depende del rango de variabilidad de lavariable explicativa. Cuando el modelo de regresión es adecuado, lamagnitud de R^2 aumenta (o disminuye) cuando lo hace ladispersión de x.

• Podemos obtener un valor muy pequeño de R2 debido a que elrango de variación de x es demasiado pequeño, y entoncesimpedirá que se detecte su relación con y

BondaddeAjusteResidual standard error: 6187 on 88 degrees of freedomMultiple R-squared: 0.8421, Adjusted R-squared: 0.8134 F-statistic: 29.34 on 16 and 88 DF, p-value: < 2.2e-16

APARENTEMENTE NUERSTRO MODELO ES BONDADOSO

El coeficiente del R2 supera el 80%El p-valor asociado a la tabla de ANOVA del Modelo es muy inferior al 0.05.Aunque los residuos son un poco grandes.

ValidacióndelModeloUnavezajustadounmodelohemosdeprocederconeldiagnósticodelmodelo,queconsisteenverificarsi´estesatisfacelashipótesisbásicasdelmodeloderegresión,queson:• linealidadentrelasvariablesxey;(deberíahaberseestudiadoya!!)• paraloserroresdelmodelo,εi :(siexisterelaciónlinealentrex ey)

– mediacero– varianzaconstante– incorrelación– normalidad.

Elanálisisdelosresiduosnospermitirádetectardeficienciasenlaverificacióndeestashipótesis,asícomodescubrirobservacionesanómalasoespecialmenteinfluyentesenelajuste.Unavezencontradaslasdeficiencias,siexisten,cabráconsiderarelreplanteamientodelmodelo,bienempleandotransformacionesdelasvariables,bienproponiendomodelosalternativosal.

ValidacióndelModelo• En primer lugar yo siempre recomiendo una visualización de las gráficas

de diagnóstico.• Con esta visualización intuimos el comportamiento de los residuos, que

son los verdaderamente importantes en esta fase.

# diagnostic plots

layout(matrix(c(1,2,3,4),2,2)) # optional 4 graphs/page

plot(fit)

80000 120000 160000

-100

000

1000

0

Fitted values

Res

idua

ls

Residuals vs Fitted

27

35 39

-2 -1 0 1 2

-3-1

01

23

4

Theoretical Quantiles

Sta

ndar

dize

d re

sidu

als

Normal Q-Q

2739

90

80000 120000 160000

0.0

0.5

1.0

1.5

Fitted values

Sta

ndar

dize

d re

sidu

als

Scale-Location27 3990

0.0 0.1 0.2 0.3 0.4 0.5 0.6

-4-2

02

4

Leverage

Sta

ndar

dize

d re

sidu

als

Cook's distance 1

0.5

0.5

1

Residuals vs Leverage

90

39

40

lm(Cases ~ Cereal.Pr + Egg.Pr + Month + Easter)

Validacióndelmodelo

• Delgráficoseextraenlassiguientesconclusiones:– Exceptuandoalgúnpuntosíparecequehayanormalidaddelosresiduos.

– PeroparecequenoexisteHomocedasticidad.

Sepuedecontrastardeformanuméricaparatenermayorseguridad.

LasHipótesis delosResiduos1. GuardandolosResiduos

2. Hipótesis demediadelso residuos=0.

3. Hipótesis deNormalidad

4. HipótesisdeHomomocedasticidad

5. Hipótesisdeautocorrelación

ValidacióndelModeloshapiro.test(Eggs$rstudent.LinearModel.1)

Shapiro-Wilk normality test

data: Eggs$rstudent.LinearModel.1 W = 0.9712, p-value = 0.02173##################################################bptest(Cases ~ Cereal.Pr + Egg.Pr + Month + Easter, varformula = ~ fitted.values(LinearModel.1), studentize=TRUE, data=Eggs)

studentized Breusch-Pagan test

data: Cases ~ Cereal.Pr + Egg.Pr + Month + EasterBP = 6.8796, df = 1, p-value = 0.008718

ValidacióndelModelo

• TenemosunosresiduosqueincumplenlahipótesisdeNormalidadylahipótesisdeHomocedasticidad.

• PortantomimodeloNOesVálido.¿existealgunaposiblevíadeescape?

ValidacióndelModelo

TransformacionesBox-CoxLa familia de transformaciones más utilizada para resolver los problemas de falta de normalidad y de heterocedasticidad es la familia de Box-Cox, cuya definición es la siguiente.

Se desea transformar la variable Y, cuyos valores muestrales se suponen positivos, en caso contrario se suma una cantidad fija M tal que Y + M > 0. La transformación de Box-Cox depende de un parámetro por determinar y viene dada por

Valores muy utilizados del parámetro son los siguientes:

Transformación

-1 Z = 1/Y

-1/2 Z = 1/

0 Z = lg

1/2 Z =

1 Z = Y

ValidacióndelModeloboxcox(LinearModel.1)

-2 -1 0 1 2

5055

60

l

log-

Like

lihoo

d 95%

ValidacióndelModelo

• Elijosegúnelgráficoanteriorelvalordentrodelintervalode“lambda”mas“redondo”,evitandovaloresdelestilode0.36,osimilares.Estolohagoporquetraselposteriorajuste“denuevo”lasprediccionesdeberán“re”-transformarseparaobtenerlasenlaescalademedicióninicial.

• Paraelejemploactualelijoλ=0à log(y)

Volvemosapaso1:AjustedelModelo

• Hemosdevolveraempezarperoahoraconellavariable“Y”transformadasegúnelparámetro“lambda”obtenido.

Ajustedelmodelo(2)Call:

lm(formula = lgY ~ Cereal.Pr + Easter + Egg.Pr + Month, data = Eggs)

Residuals:

Min 1Q Median 3Q Max

-0.113660 -0.039252 0.003659 0.034938 0.165506

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 12.4301579 0.1892718 65.674 < 2e-16 ***

Cereal.Pr -0.0035922 0.0014209 -2.528 0.013252 * Easter[T.Pre Easter] 0.3008591 0.0458257 6.565 3.49e-09 ***

Easter[T.Easter] 0.5403188 0.0542879 9.953 4.49e-16 ***

Easter[T.Post Easter] -0.1991539 0.0512024 -3.890 0.000195 ***

Egg.Pr -0.0047450 0.0009444 -5.024 2.63e-06 ***

Month[T.February] -0.0126416 0.0285716 -0.442 0.659246

Month[T.March] -0.0152822 0.0295750 -0.517 0.606643

Month[T.April] -0.0931902 0.0347661 -2.680 0.008776 **

Month[T.May] -0.0970813 0.0283182 -3.428 0.000926 ***

Month[T.June] -0.0728529 0.0291486 -2.499 0.014297 *

Month[T.July] -0.1027564 0.0269424 -3.814 0.000253 ***

Month[T.August] -0.1399601 0.0285595 -4.901 4.32e-06 ***

Month[T.September] -0.0754367 0.0284316 -2.653 0.009458 **

Month[T.October] -0.0884024 0.0272269 -3.247 0.001652 **

Month[T.November] -0.0274792 0.0283612 -0.969 0.335250

Month[T.December] 0.0380737 0.0287682 1.323 0.189108

---

BondaddelAjusteResidual standard error: 0.05926 on 88 degrees of freedom

Multiple R-squared: 0.7983, Adjusted R-squared: 0.7617 F-statistic: 21.77 on 16 and 88 DF, p-value: < 2.2e-16

ValidacióndelModelobptest(lgY ~ Cereal.Pr + Easter + Egg.Pr + Month, varformula= ~ fitted.values(modelo2), studentize=TRUE, data=Eggs)

studentized Breusch-Pagan test

data: lgY ~ Cereal.Pr + Easter + Egg.Pr + MonthBP = 1.0556, df = 1, p-value = 0.3042

shapiro.test(Eggs$rstudent.modelo2)

Shapiro-Wilk normality test

data: Eggs$rstudent.modelo2 W = 0.9858, p-value = 0.3267

Apredecir

Predicción

• Tenemosquegenerarun“data.frame”conlosdatosquedeseamospredecir,esdecirdebemosdedarvaloresatodaslas“X”:

# modelostep2<-lm(formula = Cases ~ First.Week + Month + Egg.Pr*Easter + Week + Beef.Pr, data = Eggs)

Newdata<-data.frame( First.Week="No",Month="July",Egg.Pr=90, Easter="Non Easter",Week=2,Beef.Pr=142)

predict(modelostep3, Newdata, interval="predict") fit lwr upr1 96337.57 85233.57 107441.6

Predicción

Predicción

• Efecto“PascuaenAbril”.NewData<-data.frame(Cereal.Pr=107, Easter="Pre Easter", Egg.Pr=90, Month="April")pred2<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))

.NewData<-data.frame(Cereal.Pr=107, Easter="Easter", Egg.Pr=90, Month="April")pred1<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))

.NewData<-data.frame(Cereal.Pr=107, Easter="Post Easter", Egg.Pr=90, Month="April")pred3<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))

> exp(pred1)fit lwr upr

1 173836 150035.2 201412.5> exp(pred2)

fit lwr upr1 136818.1 117302.5 159580.7> exp(pred3)

fit lwr upr1 82983.33 71540.98 96255.78

Predicción

• Efecto“Pascua”,conpreenMarzo<-data.frame(Cereal.Pr=107, Easter="Pre Easter", Egg.Pr=90, Month="March")

> pred2<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))>

> .NewData<-data.frame(Cereal.Pr=107, Easter="Easter", Egg.Pr=90, Month="April")

> pred1<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))

>

> .NewData<-data.frame(Cereal.Pr=107, Easter="Post Easter", Egg.Pr=90, Month="April")

> pred3<-(predict(modelo2, newdata=.NewData, interval="prediction", level=.95 ))>

> exp(pred1)

fit lwr upr1 173836 150035.2 201412.5> exp(pred2)

fit lwr upr

1 147903.6 126972.7 172284.9

> exp(pred3)

fit lwr upr1 82983.33 71540.98 96255.78

>

¿Estátodobien?

• Nuncasobrahacerlaspruebasnecesariashastaencontrar“elmejormodelo”.

• ParaellosesueleutilizarlatécnicadeValidaciónCruzada:– EliminoundatoyAjustodenuevoelmodelo,pidolaPrediccióndeesedatoyobservoelerrorCometido.ContodoslosErrorescometidosobtengoelECM,ylocomparoconotrasestrategiasdemodelización.

Validación Cruzada(Quick-R)• CrossValidation• You cando K-Foldcross-validation using the cv.lm() function inthe DAAG package.# K-fold cross-validationlibrary(DAAG)cv.lm(df=mydata, fit, m=3) # 3 fold cross-validation• Sumthe MSEfor each fold,divideby the number ofobservations,andtake the square root toget the cross-

validated standarderrorofestimate.• You canassess R2shrinkage via K-fold cross-validation.Using the crossval() function from the bootstrappackage,

dothe following:# Assessing R2 shrinkage using 10-Fold Cross-Validation

fit <- lm(y~x1+x2+x3,data=mydata)

library(bootstrap)# define functionstheta.fit <- function(x,y){lsfit(x,y)}theta.predict <- function(fit,x){cbind(1,x)%*%fit$coef}

# matrix of predictorsX <- as.matrix(mydata[c("x1","x2","x3")])# vector of predicted valuesy <- as.matrix(mydata[c("y")])

results <- crossval(X,y,theta.fit,theta.predict,ngroup=10)cor(y, fit$fitted.values)**2 # raw R2cor(y,results$cv.fit)**2 # cross-validated R2