{"id":183,"date":"2017-05-26T20:11:49","date_gmt":"2017-05-26T20:11:49","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/casaresfelix\/?p=183"},"modified":"2017-05-26T20:50:36","modified_gmt":"2017-05-26T20:50:36","slug":"arima-parametros-ceros","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/casaresfelix\/2017\/05\/26\/arima-parametros-ceros\/","title":{"rendered":"Modelo econom\u00e9trico ARIMA con par\u00e1metros silenciados: una comparaci\u00f3n entre R &amp; Eviews"},"content":{"rendered":"<p style=\"text-align: justify\">Los que construimos modelos econom\u00e9tricos de series temporales, generalmente<!--more--> encontramos situaciones en las que ciertos par\u00e1metros de dichos modelos (ARIMA), no son significativos y no deber\u00eda estar en la ecuaci\u00f3n final.<\/p>\n<p style=\"text-align: justify\">Eviews, por su facilidad y versatilidad en el manejo de modelos de series temporales, sin dudas es el referente de los econometristas de esta linea; sin embargo, R tambi\u00e9n hace un excelente trabajo con el paquete forecast, y permite estimar par\u00e1metros \u00fanicos silenciando o haciendo ceros a los dem\u00e1s.<\/p>\n<p style=\"text-align: justify\">\u00bfQue es esto de silenciar par\u00e1metros?<\/p>\n<p style=\"text-align: justify\">En series temporales, sabemos que un proceso AR(2) viene definido como sigue:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-1654 aligncenter\" src=\"https:\/\/casaresfelixdotcom.files.wordpress.com\/2017\/05\/captura.png\" alt=\"Captura\" width=\"424\" height=\"73\" \/><\/p>\n<p style=\"text-align: justify\">Pero muchas veces resulta por ejemplo que el primer rezago (Yt-1) no es significativo por lo que habr\u00eda que quitarlo de la ecuaci\u00f3n volver a probar, o probar con otras estructuras diferentes; todo depender\u00e1 de lo que diga la funci\u00f3n de autocorrelaci\u00f3n simple y parcial (y la paciencia de ir probando todas las posibles combinaciones).<\/p>\n<p style=\"text-align: justify\">Con este antecedente, este post intentar\u00e1 explicar c\u00f3mo hacer cero, o silenciar un par\u00e1metro en espec\u00edfico y estimar s\u00f3lo aquellos par\u00e1metros que son significativos. Los supuestos para realizar lo comentario anteriormente son:<\/p>\n<ul style=\"text-align: justify\">\n<li style=\"text-align: justify\">No se evaluar\u00e1 estacionariedad<\/li>\n<li style=\"text-align: justify\">No se evaluar\u00e1 estacionalidad<\/li>\n<li style=\"text-align: justify\">No se evaluar\u00e1 transformaciones<\/li>\n<li style=\"text-align: justify\">No se evaluar\u00e1 otros procesos subyacentes (otros \u00a0posibles modelos)<\/li>\n<\/ul>\n<p style=\"text-align: justify\">Considerando estas cuestiones solo para relajar el an\u00e1lisis, y haciendo mucho \u00e9nfasis en que\u00a0todas estas cosas deben de ser evaluadas al momento\u00a0construir los modelos econom\u00e9tricos, procederemos a la explicaci\u00f3n.<\/p>\n<p style=\"text-align: justify\">Para poder realizar paso a paso este post debes <a href=\"https:\/\/drive.google.com\/file\/d\/0ByTk49UQMPnWbWk0VFVwbzYwbnc\/view?usp=sharing\">descargar la base de datos<\/a> que utilizo y guardarla en alguna parte de tu computadora; las librer\u00edas que utilizar\u00e9 son las siguientes:<\/p>\n<blockquote>\n<p style=\"text-align: justify\">library(forecast)<br \/>\nlibrary(openxlsx)<br \/>\nlibrary(ggplot2)<\/p>\n<\/blockquote>\n<p style=\"text-align: justify\">La primera es la que se utiliza para construir modelos ARIMA, la segunda para cargar bases de excel a RStudio y la tercera \u00a0para utilizar la funci\u00f3n autoplot, la cual gr\u00e1fica autom\u00e1ticamente las funciones ACF y PACF mediante la librer\u00eda ggplot y forecast.<\/p>\n<p style=\"text-align: justify\">Seteamos el directorio, cargamos la base y caracterizamos la data como una serie de tiempo que inicia en el a\u00f1o 2004, mes 1 y tiene una frecuencia mensual (12)<\/p>\n<blockquote><p>setwd(\"C:\\\\tudirectorio\")<\/p>\n<p>data &lt;- read.xlsx(\"base.xlsx\",detectDates = T)<\/p>\n<p>tsdata &lt;- ts(data, start=c(2004,1),\u00a0frequency = 12)<\/p><\/blockquote>\n<p>La serie en estudio es el saldo en cartera comercial de una instituci\u00f3n financiera del Ecuador y luce como sigue:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-185\" src=\"http:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot-1.png\" alt=\"\" width=\"726\" height=\"414\" srcset=\"https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot-1.png 726w, https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot-1-300x171.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/p>\n<p>De la evoluci\u00f3n de la serie podr\u00eda sospecharse que no es estacionaria y por tanto se debe de diferenciar la serie. Insisto en esta parte se realicen los contrastes necesarios para llegar a dicha conclusi\u00f3n.<\/p>\n<p>Veamos c\u00f3mo luce la Funci\u00f3n de autocorrelaci\u00f3n simple y parcial usando la librer\u00eda forecast con las funciones Acf y Pacf, y al librer\u00eda ggplot2 con autoplot:<\/p>\n<blockquote><p>autoplot(Acf(diff(tsdata[,2],1),lag.max = 24))<br \/>\nautoplot(Pacf(diff(tsdata[,2],1),lag.max = 24))<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-186 aligncenter\" src=\"http:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot01-2.png\" alt=\"\" width=\"726\" height=\"414\" srcset=\"https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot01-2.png 726w, https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot01-2-300x171.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/p>\n<p style=\"text-align: justify\">De la funci\u00f3n de autocorrelaci\u00f3n simple (ACF), se aprecia que podr\u00eda tratarse de un modelo MA(1) MA(5), dado que las barras sobresalen de las lineas segmentadas de color azul; por otro lado, de la funci\u00f3n de autocorrelaci\u00f3n apreciar (PACF), podr\u00eda tratarse solo de un AR(1).<\/p>\n<p style=\"text-align: justify\">Para probar el modelo ARIMA(1,1,5) donde, 1 que corresponde a un AR(1), 1 que corresponde a la primera diferencia ordinaria de la serie, 5 que corresponde a un MA(1) y MA(5), se procede como sigue:<\/p>\n<blockquote>\n<p style=\"text-align: justify\">modelo &lt;- Arima(tsdata[,2],order=c(1,1,5),<br \/>\nfixed=c(NA,NA,0,0,0,NA))<br \/>\nsummary(modelo)<\/p>\n<\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1709 aligncenter\" src=\"https:\/\/casaresfelixdotcom.files.wordpress.com\/2017\/05\/captura21.png\" alt=\"Captura2\" width=\"622\" height=\"211\" \/><\/p>\n<p style=\"text-align: justify\">Se aprecia que los coeficientes ma2, ma3, ma4, son ceros (no son estimados, o son silenciados en la ecuaci\u00f3n), por lo que solo nos interesa ma1 y ma5; haber incorporado todas las medias m\u00f3viles podr\u00edamos incurrir en error de especificaci\u00f3n.<\/p>\n<p style=\"text-align: justify\">Entre los comandos se encuentra la funci\u00f3n fixed. Si contamos los par\u00e1metros a estimar en este peque\u00f1o modelo tenemos los siguientes: ar1, ma1,0,0,0,ma5; por lo tanto\u00a0fixed=c(NA,NA,0,0,0,NA). Debido a que la serie est\u00e1 diferenciada, no estima el par\u00e1metro de la constante, por lo que no se muestra en la ecuaci\u00f3n dicho par\u00e1metro.\u00a0Si se hubiera incluido entonces se tendr\u00eda que contar un NA al final de la funci\u00f3n fixed.<\/p>\n<p style=\"text-align: justify\">Creo que con este ejemplo, se explica por s\u00ed misma la funci\u00f3n fixed, dado que se aplica de la misma manera para los AR y cualquier orden.<\/p>\n<p style=\"text-align: justify\">N\u00f3tese que\u00a0el proceso ma1 no es significativo, por lo que podr\u00edamos probar el modelo sin considerar dicho par\u00e1metro. Lo que tendr\u00edamos que hacer es manipular la funci\u00f3n fixed como sigue:<\/p>\n<blockquote>\n<p style=\"text-align: justify\">modelo &lt;- Arima(tsdata[,2],order=c(1,1,5),<br \/>\nfixed=c(NA,0,0,0,0,NA))<br \/>\nsummary(modelo)<\/p>\n<\/blockquote>\n<p style=\"text-align: justify\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1727\" src=\"https:\/\/casaresfelixdotcom.files.wordpress.com\/2017\/05\/captura3.png\" alt=\"Captura3\" width=\"642\" height=\"210\" \/><\/p>\n<p style=\"text-align: justify\">Donde los coeficientes estimados son significados al 95% de confianza (pruebe dividiendo 0.2846\/0.0886, si la divisi\u00f3n es mayor que 2, entonces el coeficiente es estad\u00edsticamente significativo).<\/p>\n<p style=\"text-align: justify\">La forma de estimar con la funci\u00f3n fixed es equivalente a escribir en Eviews:<\/p>\n<p style=\"text-align: justify\">d(comercial) ar(1) ma(5)<\/p>\n<p style=\"text-align: justify\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7762\" src=\"http:\/\/www.betametrica.ec\/wp-content\/uploads\/2017\/05\/Captura4.png\" alt=\"\" width=\"311\" height=\"267\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7763\" src=\"http:\/\/www.betametrica.ec\/wp-content\/uploads\/2017\/05\/Captura5.png\" alt=\"\" width=\"424\" height=\"262\" \/><\/p>\n<p>Salvo que forecast no devuelve el coeficiente sigmasq que denota la estimaci\u00f3n de la varianza del error como un par\u00e1metro m\u00e1s dentro de la ecuaci\u00f3n.<\/p>\n<p>Finalmente, veamos c\u00f3mo luce un pron\u00f3stico con este modelo para 3 datos fuera de la muestra:<\/p>\n<blockquote><p>proyeccion &lt;- forecast(modelo,3)<\/p>\n<p>autoplot(tsdata[,2], series=\"Data\") +<br \/>\nautolayer(proyeccion, series=\"Forecast\") +<br \/>\nautolayer(fitted(proyeccion), series=\"Fitted\")<\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-187\" src=\"http:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot02.png\" alt=\"\" width=\"692\" height=\"413\" srcset=\"https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot02.png 692w, https:\/\/blog.espol.edu.ec\/casaresfelix\/files\/2017\/05\/Rplot02-300x179.png 300w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/p>\n<p><strong>Extensi\u00f3n:<\/strong><\/p>\n<p>Para usuarios m\u00e1s avanzados, pueden generar un gr\u00e1fico din\u00e1mico con la librer\u00eda highcharter; resulta interesante poder seleccionar la serie o las proyecciones dentro del gr\u00e1fico.<\/p>\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.betametrica.ec\/wp-content\/uploads\/2017\/05\/hchart.html\" width=\"600\" height=\"400\"><br \/>\n<\/iframe><\/p>\n<hr \/>\n<p style=\"text-align: justify\">Puedes seguir mis publicaciones v\u00eda:<\/p>\n<p><a href=\"https:\/\/twitter.com\/CasaresFelix\">Twitter<\/a><\/p>\n<p><a href=\"https:\/\/www.facebook.com\/CasaresFelix\">Facebook<\/a><\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/casaresfelix\">Twitter<\/a><\/p>\n<p><a href=\"http:\/\/casaresfelix.com\">Blog Personal<\/a><\/p>\n<p><a href=\"http:\/\/www.betametrica.ec\/\">Blog Acad\u00e9mico<\/a><\/p>\n<hr \/>\n<p>Nota: puedes solicitarme el script de RStudio para este ejemplo mediante cualquier\u00a0de las v\u00eda de contacto anteriormente mencionadas o por correo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los que construimos modelos econom\u00e9tricos de series temporales, generalmente<\/p>\n","protected":false},"author":10866,"featured_media":187,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[34936],"tags":[1418615,1418589,1418614,1418613],"class_list":["post-183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-econometria","tag-econometria-con-r","tag-econometria-ecuador","tag-modelos-econometricos-con-r","tag-series-temporales-con-r"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/users\/10866"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"predecessor-version":[{"id":191,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/posts\/183\/revisions\/191"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/media\/187"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/casaresfelix\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}