Prácticas

9 septiembre 2019

Sin título

==============================================================================

curso 2018-2019
==============================================================================

  1. RStudio, Markdown y MS WORD:
    1. Instalar la última versión de RStudio (enlace) y de R  (enlace)
    2. Instalar los paquetes necesarios para generar documentos reproducibles: knitr, rmarkdown, dplyr, fpp2 , flextable, ggplot2, etc.
    3. Crear un Informe descriptivo ( con tablas bonitas y gráficos, similar a este documento .Rmd) pero con la siguiente base de datos:

 

uschange Growth rates of personal consumption and personal income in the USA.

Consumption ~ Income + Production + Unemployment + Savings

Práctica 2.1 de Métodos Clásicos: Suavizado Exponencial, ejemplos básicos con el paquete «forest».

Práctica 2.2 de Métodos Clásicos:  Enunciado y datos (si no sabes el año inicial de los datos elígelo tú, si no sabes si es mensual o anual elígelo tú y justifica tu elección) (pasajeros.txt)

  • pdf donde se explica la diferencia entre ets() y forecast()

             Errata: modAjustado.1<-eta(serieTemporal), debe decir modAjustado.1<-ets(serieTemporal) 

  • Te recomiendo que visualices el documento del caso de éxito 2.1 (pdf) sobre todo a partir de la página 15
  • dos buenos enlaces que te pueden ayudar: enlace_1 y enlace_2

Práctica suplementaria «avanzada»:  enlace

 

Práctica 3.1: Utiliza el banco de datos de la práctica anterior (datos) y  el comando: «arima»  y «auto.arima» (investiga todas las opciones que proporcionan) intenta realizar las predicciones (5 para datos anuales y 12 para datos mensuales).

Nota: No todos los bancos de datos se podrán ajustar por no ser series estacionarias, pero hay que intentarlo.

Ejemplos:

arima(lh, order = c(1,0,0))
arima(lh, order = c(2,0,0))
arima(lh, order = c(1,0,1))

arima(lh, order = c(2,0,0), method = "CSS")


## presidents contains NAs
## graphs in example(acf) suggest order 1 or 3
require(graphics)
(fit1 <- arima(presidents, c(1, 0, 0)))
nobs(fit1)
tsdiag(fit1)
(fit3 <- arima(presidents, c(3, 0, 0)))  # smaller AIC
tsdiag(fit3)
BIC(fit1, fit3)
## compare a whole set of models; BIC() would choose the smallest
AIC(fit1, arima(presidents, c(2,0,0)),
          arima(presidents, c(2,0,1)), # <- chosen (barely) by AIC
    fit3, arima(presidents, c(3,0,1)))

## An example of ARIMA forecasting:
predict(fit3, 3)

##auto.arima
library(forecast)
fit <- auto.arima(WWWusage)
plot(forecast(fit,h=20))


Enlace interesante: https://rpubs.com/riazakhan94/arima_with_example

===============================================================================

Ejemplo de un análisis:

library(forecast)
library(tseries)
library(astsa)
#Descriptivos de la Serie
## a la serie debe de ponerle inicio y fin si fuese necesario y ver si está leyendo los datos en el formato adecuado dependiendo de la periocidad de los datos.
#
autoplot(foo) # debo completar con etiquetas y todos eso
summary(foo)
# Correlogramas de la serie original
acf(foo)
pacf(foo)
# es estacionaria la serie opriginal
adf.test(foo)
##si no es estacionaria, hacer una diferenciación de orden 1

foo.d1<-diff(foo)
plot(foo.d1)
acf(foo.d1)
pacf(foo.d1)

# es estacionaria la serie diff=1?
adf.test(foo.d1) # es estacionaria ?

# pero viendo el correlograma hay una estacionalidad muy clara
# QUE ADEMAS NO DECAE CON EL AUMETO DE RETARDO
# Necesito hacer una Diferenciación en la componente Estacional
foo.d1.D4<-diff(foo.d1,4)
# veo los gráficos
plot(foo.d1.D4)
acf(foo.d1.D4)
pacf(foo.d1.D4)
#
# ahora ya estoy en disposición de buscar el mejor modelo
fit.auto<-auto.arima(foo,d=1, D=1, seasonal=T)
#
#El ajuste del modelo
fit.auto
# que conincide con mi modelo simulado (1,1,1)x(1,1,1)_4
# Series: foo
# ARIMA(1,1,1)(1,1,1)[4]
#
# Coefficients:
# ar1 ma1 sar1 sma1
# 0.6267 -0.4326 -0.2806 -0.2189
# s.e. 0.0291 0.0330 0.0186 0.0195
#
# sigma^2 estimated as 3.296: log likelihood=-24172.6
# AIC=48355.2 AICc=48355.2 BIC=48392.16
# Reviso la valide de los residuos
checkresiduals(fit.auto)
# hago el test de autocorrelacion
Box.test(resid(fit.auto), lag=25,type="Ljung-Box")
#
# Hago las predicciones
predigo<-forecast(fit.auto, h=40)
# Dibujo las predicciones
plot(predigo) # hay quer mejorar este gráfico

Práctica a entregar 1:

(1.5 puntos sobre 10)

FECHA DE ENTREGA: Domingo 5 de Mayo de 2019 a las 23:59 h. FORMULARIO DE ENTREGA 

FECHA DE EXPOSICIÓN:  Martes 7 de mayo y Jueves 9 de mayo de 2019. Tiempo máximo por exposición: 10 minutos + 5 de preguntas y/o sugerencias

El alumno deberá realizar un PDF desde markdown con una extensión máxima de 10 hojas, y una presentación también generada desde markdown (puede ser ioslides, Slidy o PDF)  con un máximo de 10 «diapositivas». Esta presentación será «defendida» en el aula el día que se indique pasado el plazo de entrega de la práctica.

Se habilitará un formulario para subir un archivo comprimido que contenga:

  1. Archivo RMD con el que se ha generado el documento «texto»
  2. Archivo PDF de la práctica resultante de la compilación del RMD anterior.
  3. Archivo RMD con el que se ha realizado la presentación.
  4. Si es posible la presentación en formato reproducible
  5. Otros archivos que considere el alumno que deba entregar

Enunciado:

Nos encontramos en el año 2245, y dispones de los últimos 12000 registros que el Robot-jefe de ventas de tu empresa te ha pasado, donde se incluyen los datos trimestrales de clicks recibidos en las webs de la empresa. Se trata de predecir los datos para los siguientes 5 años.

Datos:

Expediente Datos
216 10.csv
225 14.csv
249 07.csv
261 16.csv
263 15.csv
264 02.csv
268 05.csv
271 3.csv
272 13.csv
274 01.csv
276 12.csv
277 17.csv
288 06.csv
294 08.csv
295 09.csv
335 4.csv
336 11.csv

El documento PDF:

Este documento deberá contener dos partes bien diferenciadas, una dedicada al departamento de marketing, donde se pueden incluir hasta fórmulas si es necesario y todas las explicaciones técnicas, y otra parte destinada al Robot-Gerente donde le expondremos el problema gráfica y numéricamente (utiliza internet para ver como presentar datos cuando hay estacionalidad o cuando no hay estacionariedad) y las predicciones realizadas numéricamente y gráficamente.

Si por el volumen de datos no se observa bien el gráfico de predicciones, deberás de ser capaz de mostrar un gráfico «reducido2 donde si que eel Robot-Gerente vea cómo está la situación.

Ten cuidado con las predicciones, a veces el resultado puede no ser congruente con el tipo de datos que se manejan.

Y recuerda que no existe el logaritmo de 0, habitualmente se suele sumar una pequeña cantidad 0.001 a estos «ceros» en caso de ser necesario calcular el logaritmo.

ÁNIMO!!!!!

Ejemplo de análisis para un modelo lineal con autocorrelación serial:

# ajustamos el modelo con la serie principal y las covariables
fit1<-lm(y~x1+x2+x3+x4)
summary(fit1)
#observamos los correlogramas de los residuos
par(mfrow=c(1,2))
acf(resid(fit1))
pacf(resid(fit1))
# esto es claramento un ARMA(p,q)
# ya que los dos correlogramas ...........

# ajustamos el mismo modelo pero mediante los Generalized Least Squares
fit2.0<-gls(y~x1+x2+x3)

# Y el mismo pero indicando que tenemos la variable "year" como 
#causante de la correlacion y el que es un AR(1) segun lso correlogramas (creemos)
fit2.1<-gls(y~x1+x2+x3, correlation=corARMA(form=~year, p=1))
fit2.2<-gls(y~x1+x2+x3, correlation=corARMA(form=~year, p=1, q=1)) # ajustando un ARMA(1,1)

# y vemos todos los correlogramas

# ajustado mediante "lm"
acf(rstandard(fit1))
pacf(rstandard(fit1))

#ajustado mediante gls sin estructura de correlación
acf(resid(fit2.0, type="normalized"))
pacf(resid(fit2.0, type="normalized"))

#ajustado con GLS y una estructura sencilla AR(1)
acf(resid(fit2.1, type="normalized"))
pacf(resid(fit2.1, type="normalized"))
#este sale bien, así que parece ser un buen modelo

#ajustado con GLS y una estructura ARMA(1,1)
acf(resid(fit2.2, type="normalized"))
pacf(resid(fit2.2, type="normalized"))



# también puedo comparar los modelos según se reduzca el AIC 
#al incorporar la estructura de correlación
anova(fit2.0, fit2.1) # reducción en mas de XXX unidades
anova(fit2.0, fit2.2) # tb se reduce mucho el AIC
anova(fit2.0, fit2.1, fit2.2) ## el fit2.2 no mejora al fit2.1
# ME QUEDO CON EL MODELO CON ESTRUCTURA DE CORRELACION AR(1)
# Se debe de hacer más comporbaciones en los residuos, pero esto es lo más básico

PRÁCTICA ENTEGRABLE 2 y última (pendiente de generar datos)

ENUNCIADO:

Has sido contratado por PepSol.SA para analizar el precio de las acciones de la compañía desde desde 1990 a la actualidad. Con el fin de tener información adicional al respecto, se te proporciona la siguiente  información:

  • ventas.miles= Ventas en miles de euros dentro del sector.
  • compras.miles= Compras en miles de euros dentro del sector.
  • precio.petroleo= Precio al cierre del barril de Brent.
  • Buen.Dia= El departamento de marketing al terminar el día decide si se puede considerar un buen o mal día para la compañia.
  • Y= valor de la acción a precio de cierre del día correspondiente.

Debes de realizar:

  1. Estudio descriptivo gráfico y numero de las variables y sus posibles inter-relaciones (gráficamente y numéricamente).
  2. Análisis de la Serie sin tener en cuenta la información facilitada como ayuda al proceso.
  3. Análisis del modelo donde se incorpore toda esa información (elige el mejor modelo y justifica el porqué)
  4. Conclusiones para le gerente

En el informe no debe figurar sintaxis de R, no deben haber salidas «feas» de R. Esto lo podrás en un anexo metodológico que entregaras conjuntamente con las sintaxis y archivos Rmarkdown que hayas utilizado. Todo ello comprimido en un único archivo.

Datos:

Expediente Datos
216  1
225  01
249  11
261  011
263  111
264  0111
268  1111
271  01111
272  11111
274  011111
276  111111
277  0111111
288  1111111
294  01111111
295  11111111
335  011111111
336  0111111111

TRUCOS PARA LEER DATOS CON PROBLEMAS EN R

  •   scan: es una heramienta muy flexible para importar datos

https://stats.idre.ucla.edu/r/modules/reading-in-data-from-an-external-file/

 https://www.rdocumentation.org/packages/base/versions/3.6.0/topics/scan

  • gsub: sirve para sustituir caracteres o cadenas dentro de una variable, por ejemplo una  «,» por un «.»

nuevaVariable<-gsub(«caracter_a_carambiar»,»caracter_nuevo», viejaVariable)

nuevaVariable<-gsub(«,»,».», viejaVariable)

  • as.numeric(), as.character(), factor():  realizando combinaciones de estas funciones se puede convertir una variable mal importada a otra de forma correcta.

  nuevaVariable<-as.numeric(as.character(Variable_que_R_a_convertido_a_factor_sin_serlo))

  • Utilizar Excel(c)  y allí hacer los cambios que se crean oportunos, pero cuidado con los «puntos» y «comas» de windows en Español.

https://exceltable.com/en/formatting/change-comma-to-decimal-point

  • R está preparado más para «puntos» que para «comas» aunque todo se puede cambiar si se utiliza el «importador» del RStudio (os invito a que trasteéis con TODAS las opciones).

Ejemplos:

var1      
[1,] "50,0"     
[2,] "72,0"     
[3,] "960,0"    
[4,] "1.920,0"  
[5,] "50,0"     
[6,] "50,0"    
[7,] "960,0"    

newVar1<-as.numeric(gsub(",", ".", gsub("\\.", "", var1)))
newVar1<-scan(text=var1, dec=",", sep=".")

 

 

 

 

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

Enlace para la entrega de la práctica 2: aquí

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

 

 

 

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

Examen junio 2019:

 

  • Enunciado (pdf)
  • Datos (archivo  comprimido en ZIP que al descomprimirlo devuelve un archivo en formato RDS)
  • Formulario para subir el archivo con las respuestas del examen: enlace (El nombre del archivo comprimido deberá empezar por vuestro número de expediente)

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

 

New  New  New

 

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

Examen septiembre 2019:

 

  • Enunciado (pdf)
  • Datos (archivo  comprimido en ZIP que al descomprimirlo devuelve un archivo en formato RDS, puede que necesites ponerle tú la extensión o simplemente saber que es un RDS para learlo en R con el comando readRDS() )
  • Formulario para subir el archivo con las respuestas del examen: enlace (El nombre del archivo comprimido deberá empezar por vuestro número de expediente)

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

==============================================================================

curso 2017-2018 

==============================================================================

==============================================================

  • Práctica de Métodos Clásicos: Suavizado Exponencial (incluye la sintaxis)
    • Libro ON-LINE muy completo de series temporales: ENLACE
    • Otro material muy interesante: Enlace
    • Mi markdown de la práctica: practica2.Rmd
    • Create una cuenta de RPubs (opción Publish al generar el html) y en el blog pon unas pocas líneas que te lleven a la publicación en RPubs.
      • Tutorial para crear una cuenta de Rpubs: enlace
    • Enlace a mi Rpubs: Enlace
    • Enlace a cómo quedaría en el Blog:  Enlace

==============================================================

 

 

==============================================================

  • Práctica de Procesos Estocásticos Estacionarios  Univariantes:
    • Los alumnos deberán realizar un RPubs con el tema que les ha sido asignado. Deben ser breves y concisos, llevar ejemplos en R (mostrando código y resultados), y sobre todo explicando aquello que han realizado. Además el alumno realizará un Kahoot que compartirá con el profesor (usuario kahoot: XaviBarberUMH)  para que lo puedan realizar el resto de alumnos.
    • Temas por grupos de alumnos==>

1.-Procesos estocásticos (realizado porAurora Mula y MªJosé Hernández)
– Simular en R varios procesos
– Dibujar estos procesos
– Tendencia no lineal de una serie temporal
– Curva de Gompertz
– Curva logística

2.-Tendencia estocástica de una serie (por Óscar Rodríguez Mompeán)
– Diferenciación
– Mostrar series con diferentes Diferenciaciones

3.-Procesos Estocásticos Estacionarios  (por JA Ramos Mora, JM Ortuño Lorente y JC Senent Nuñez)
– ¿Qué son?
– Simula (o busca ejemplos) y representados
– Momentos de orden central
– ¿Que son?
– Momento de primer y segundo orden
– Relación con la Esperanza y la Varianza

4.-Funciones de Autocovarianzas y autocorrelaciones (por Patricia Molina y Óscar Agulló)
– ¿Qué son?
– Simula (o busca ejemplos) y representados
– Funcion de autocorrelacion simple y parcial
– Define y muestra ejemplos del ACF
– Define y muestra ejemplos del PACF

5.-Ruido Blanco (por Inma Meca y Carolina Belmonte)
– ¿Qué es?
– Simula (o busca ejemplos) y representados

6.-Random Walk (por Valea Massó Ibarra y Elisa Pons Sastre)
– ¿Qué es?
– Simula (o busca ejemplos) y representados

 

Encuesta anónima sobre la forma de trabajar este tema: enlace

 

 

==============================================================

 

 

  • Práctica 2 de Procesos Estocásticos Estacionarios  Univariantes:
    • Los alumnos realizarán una presentación en Rmarkdown (PDF o HTML —enlace interesante de ayuda–) donde explicaran con sus propias palabras el contenido de los enlaces  que se les va a proporcionar. Deben ser breves y concisos, llevar ejemplos en R (mostrando código y resultados), y sobre todo explicando aquello que han realizado. Además el alumno realizará un Kahoot que compartirá con el profesor (usuario kahoot: XaviBarberUMH)  para que lo puedan realizar el resto de alumnos, previa explicación de su presentación por todos los miembros del grupo (cada alumno una parte de la presentación).
    • Objetivos de la prácticas:
      • El alumno aprenderá el concepto de ARIMA, su importancia y cómo estimarlo.
      • El alumno aprenderá a estimar y predecir modelos ARIMA.
      • El alumno aprenderá a realizar una presentación en el RStudio.
      • Competencias transversales:
        • Dominio del idioma Inglés.
        • Capacidad de concreción y resumen.
        • Habilidad de comunicación.
    • Enlaces donde se encuentra la información:

==============================================================

Práctica 3: Modelos de Regresión con errores autocorrelados

(Fecha límite de entrega el 04/06/2018)

  • Cada alumno debe realizar el trabajo sobre los datos que correspondan a su número de expediente:

Los datos corresponden al Salario medio de hombres y mujeres en los últimos 50 años. Disponemos además de las Tasas de paro medias anuales, y así como el Tipo de trabajo:

  • 0=sin calificar
  • 1=estudios primarios
  • 2=estudios secundaria
  • 3=FP grado superior o grado universitario
  • 4= Master oficial o Doctorado universitario

El alumno deberá:

  • Realizar un Informe descriptivo amplio con sus correspondientes conclusiones.
  • Continuar el informe descriptivo anterior con el ajuste del mejor modelo que relacione el Sueldo medio de las Mujeres con el resto de variables teniendo en cuenta la búsqueda de un modelo bondadoso y válido, a la vez que sin problemas de autocorrelación de los residuos (explicar la diferencia del modelo teniendo y sin tener en cuenta el comportamiento de los residuos).

DATOS:

Expediente Archivo
283 archivo1.csv
212 archivo2.csv
188 archivo3.csv
215 archivo4.csv
282 archivo5.csv
226 archivo7.csv
284 archivo9.csv
214 archivo10.csv
227 archivo8.csv
345 archivo11.csv
236 archivo6.csv
241 archivo12.csv
224 archivo14.csv
217 archivo13.csv

pwd: 188

MODELO DE INFORMEENLACE

==============================================================

 

 

  • Comunicar la dirección del blog al profesor: enlace
    • Comunicar la PRIMERA ENTRADA del blog: enlace
    • Comunicar la SEGUNDA ENTRADA del blog: enlace
    • Comunicar la TERCERA ENTRADA (práctica de Procesos Estocásticos estacionarios  Univariantes): enlace
    • Comunicar la CUARTA ENTRADA EN EL BLOG (práctica 2 de Procesos Estocásticos estacionarios Univariantes): enlace
    • Comunicar la QUINTA ENTRADA (PRÁCTICA INDIVIDUAL): enlace

==============================================================

 

A continuación os detallo el baremo para que podáis evaluaros y saber si quereis optar a un examen final sobre 10 puntos o al examen+Evaluación continua (4+6).

Examen  4 puntos (mínimo de 1.4 para sumar la nota a las prácticas)

Prácticas: 6 puntos (mínimo de 2.4 para sumar la nota al examen)

El blog completo con las 5 entradas, los enlaces a temáticas de series Temporales, los kahoots y la presentación.

* Blog completo, con buen diseño y funcionalidad= máximo de 1 punto

*  3 primeras entradas = máximo de 1.5 puntos (primera=0.3, segunda=0.5, tercera=0.7)

* 4ª entrada = máximo de 1 punto

* 5ª entrada = máximo de 2.5 puntos

============================================================================================================================

 

Evaluación

Convocatoria Junio 2018

El alumno debe elegir entre realizar el examen en la modalidad de evaluación continua respondiendo solo a las Tareas 1 a 3, o la modalidad de evaluación final que incluirá la TS1 y la TS2.

Datos:

Los datos están en un archivo ZIP comprimido donde están todos los datos. El alumno deberá elegir sólo los datos que concuerden con su número de expediente.

  Enunciado del examen

 

Expediente Archivo
283  283
212  212
188 188 y 188_sup
215  215
282  282
226  226
284  284
214  214
227  227
345  345 y 345_sup
236  236
241  241
224  224
217  217

 pwd: 188

 

Formulario de entrega del examen (No se corregirán las respuestas recibidas después de las 14:00)