Dando continuidad con el informe 2, a continuación se procede a agregar la serie de manera mensual para poder realizar el análisis de tendencia, estacionalidad y el ruido:
google_month=to.monthly(google)
google_month
## google.Open google.High google.Low google.Close
## nov. 2016 805.48 811.98 753.22 775.88
## dic. 2016 764.33 817.89 764.33 792.45
## ene. 2017 808.01 858.45 807.77 820.19
## feb. 2017 815.24 851.36 815.24 844.93
## mar. 2017 856.75 872.37 835.14 847.80
## abr. 2017 856.75 924.52 839.88 924.52
## may. 2017 932.82 996.17 932.82 987.09
## jun. 2017 988.29 1004.28 929.68 929.68
## jul. 2017 919.46 998.31 919.46 945.50
## ago. 2017 946.56 955.24 920.87 955.24
## sept. 2017 951.99 973.72 929.75 973.72
## oct. 2017 967.47 1033.67 966.78 1033.04
## nov. 2017 1042.60 1072.01 1034.66 1036.17
## dic. 2017 1025.07 1085.09 1011.87 1053.40
## ene. 2018 1073.21 1187.56 1073.21 1182.22
## feb. 2018 1181.59 1181.59 1007.71 1103.92
## mar. 2018 1071.41 1165.93 1005.18 1037.14
## abr. 2018 1012.63 1089.45 1009.95 1018.58
## may. 2018 1040.75 1106.60 1026.05 1100.00
## jun. 2018 1135.00 1184.07 1116.94 1129.19
## jul. 2018 1142.11 1285.50 1116.28 1227.22
## ago. 2018 1232.99 1264.65 1215.85 1231.80
## sept. 2018 1211.31 1211.31 1159.83 1207.08
## oct. 2018 1208.53 1211.53 1034.73 1090.58
## nov. 2018 1085.98 1109.65 1027.42 1109.65
## dic. 2018 1116.36 1116.36 984.67 1044.96
## ene. 2019 1054.68 1125.89 1025.47 1125.89
## feb. 2019 1118.62 1151.87 1102.12 1126.55
## mar. 2019 1148.52 1236.13 1148.52 1176.89
## abr. 2019 1198.98 1296.20 1198.96 1198.96
## may. 2019 1173.32 1193.46 1106.50 1106.50
## jun. 2019 1038.74 1125.37 1038.74 1082.80
## jul. 2019 1100.00 1245.22 1100.00 1218.20
## ago. 2019 1211.78 1211.78 1153.58 1190.53
## sept. 2019 1169.55 1245.94 1169.55 1221.14
## oct. 2019 1206.00 1288.98 1177.92 1258.80
## nov. 2019 1272.25 1333.54 1272.25 1304.09
## dic. 2019 1288.86 1362.47 1288.86 1339.39
## ene. 2020 1368.68 1484.69 1361.52 1432.78
## feb. 2020 1482.60 1524.87 1314.95 1339.25
## mar. 2020 1386.32 1386.32 1054.13 1161.95
## abr. 2020 1102.10 1346.70 1092.70 1346.70
## may. 2020 1317.32 1433.52 1317.32 1433.52
## jun. 2020 1434.87 1464.70 1362.54 1418.05
## jul. 2020 1442.00 1564.85 1442.00 1487.95
## ago. 2020 1482.76 1644.13 1473.30 1629.53
## sept. 2020 1655.08 1717.39 1409.39 1465.60
## oct. 2020 1487.90 1632.98 1451.02 1616.11
## nov. 2020 1624.32 1774.03 1624.32 1736.38
dim(google_month)
## [1] 49 4
windows()
plot(google_month$google.Close)
google_month_decomp=decompose(google_month$google.Close)
windows()
par(mfrow=c(2,1))
plot(google_month$google.Close,main="Serie de Google")
plot(google_month_decomp$trend,main="Tendencia")
plot(google_month_decomp$seasonal,main="Estacionalidad")
barplot(google_month_decomp$seasonal[1:12],names.arg = month.name,main="Efecto Estacionalidad")
windows()
plot(google_month_decomp$random,main="Ruido")
Los gráficos corresponden a la composición de la serie de tiempo de Google, se confirma que la tendencia ha sido creciente durante todos estos años. Se observa la presencia de estacionalidad la cual se da aproximadamente cada 14 meses. Se observa que los periodos en que mas fuerte bajan los precios de las acciones coincide con los lanzamientos de los iphone de apple. Los eventos descritos en el punto anterior han sido los más determinantes en el precio de las acciones. Tal como se intuía en el punto inicial, la gráfica Ruido, confirma que la serie esta en presencia de bastante ruido. Lo anterior se puede explicar por la naturaleza del objeto de estudio, pues el mercado de capitales que es donde se determinan los precios de las acciones generalmente contiene el ruido de los traders, de hecho las acciones de las empresas NASDAQ como lo es el caso de Google manejan un alto volumen de transacciones y fuertes fluctuaciones en el precio que también está en función de los lanzamientos de las otras empresas del sector. Después de la pandemia, todas las empresas NASDAQ han presentado una fuerte valoración en el precio de las acciones por el aumento del uso de las herramientas y servicios que ofrecen.
A continuación, se presentará el modelo ARIMA de series de tiempo (mensual)
mod_google=auto.arima(google_month$google.Close)
mod_google
## Series: google_month$google.Close
## ARIMA(0,1,2) with drift
##
## Coefficients:
## ma1 ma2 drift
## -0.267 -0.3076 17.6161
## s.e. 0.136 0.1328 4.6828
##
## sigma^2 estimated as 5409: log likelihood=-273.04
## AIC=554.08 AICc=555.01 BIC=561.57
forecast(mod_google,h=6)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Dec 2020 1682.152 1587.898 1776.406 1538.003 1826.301
## Jan 2021 1668.030 1551.164 1784.896 1489.299 1846.761
## Feb 2021 1685.646 1562.092 1809.200 1496.686 1874.606
## Mar 2021 1703.262 1573.363 1833.161 1504.599 1901.925
## Apr 2021 1720.878 1584.931 1856.825 1512.965 1928.792
## May 2021 1738.494 1596.756 1880.232 1521.724 1955.264
par(mfrow=c(1,1))
plot(forecast(mod_google,h=6))
Según los resultados de la estimación ARIMA para los próximos 6 periodos tienen sentido si miramos la serie de tiempo, se espera que en los próximos 2 meses el precio de las acciones de Google baje y que después empiece a incrementar en los próximos 4 meses. Adicionalmente la tendencia muestra que es lógico que se estime que en general el precio va a subir.
Para Diciembre del 2020 se estima que el precio promedio puede ser 1682.152, en un escenario pesimista con un nivel de confianza del 95% 1489.299 y en uno optimista con el mismo nivel de confianza 1846.761. Para los meses de Enero, Febrero, Marzo Abril y Mayo se estima:
Pre. Promedio Esc. Pesimista 95% confianza Esc. Optimista 95% confianza
Jan 2021 1668.030 1489.299 1846.761
Feb 2021 1685.646 1496.686 1874.606
Mar 2021 1703.262 1504.599 1901.925
Apr 2021 1720.878 1512.965 1928.792
May 2021 1738.494 1521.724 1955.264
tweets_mcdonaldsc=tweets_mcdonalds[!is.na(tweets_mcdonalds$reply_to_screen_name),]
mycorpus_mcdonaldsc <- corpus(tweets_mcdonaldsc$text)
mycorpus_mcdonaldsc[1]
## Corpus consisting of 1 document.
## text1 :
## "@vicenteperezg Esa la motivación con la que todos tenemos qu..."
head(summary(mycorpus_mcdonaldsc))
## Text Types Tokens Sentences
## 1 text1 10 12 1
## 2 text2 12 12 1
## 3 text3 13 13 1
## 4 text4 4 4 1
## 5 text5 11 11 3
## 6 text6 30 36 2
mycorpus_mcdonaldsc.wd <- tokens(mycorpus_mcdonaldsc, what = "word")
mycorpus_mcdonaldsc.wd[10]
## Tokens consisting of 1 document.
## text10 :
## [1] "@Flojisima" "Hola" "," "lamentamos"
## [5] "este" "inconveniente" "." "Por"
## [9] "favor" "envíanos" "tus" "datos"
## [ ... and 25 more ]
mycorpus_mcdonaldsc.wd_numb_punct_symb <- tokens(mycorpus_mcdonaldsc, what = "word", remove_url = T, remove_numbers = T, remove_punct = T, remove_symbols = T, remove_separators = T, remove_twitter = T)
mycorpus_mcdonaldsc.wd_numb_punct_symb[10]
## Tokens consisting of 1 document.
## text10 :
## [1] "@Flojisima" "Hola" "lamentamos" "este"
## [5] "inconveniente" "Por" "favor" "envíanos"
## [9] "tus" "datos" "para" "reportarlo"
## [ ... and 17 more ]
stopwords.es_mcdonaldsc <- stopwords('es')
stopwords.es_mcdonaldsc=c(stopwords.es_mcdonaldsc,"@McDonaldsCol","burguerking")
mycorpus_sw_mcdonaldsc <- tokens_remove(mycorpus_mcdonaldsc.wd_numb_punct_symb, stopwords.es_mcdonaldsc)
mycorpus_sw_mcdonaldsc[10]
## Tokens consisting of 1 document.
## text10 :
## [1] "@Flojisima" "Hola" "lamentamos" "inconveniente"
## [5] "favor" "envíanos" "datos" "reportarlo"
## [9] "área" "encargada" "Nombre" "completo"
## [ ... and 7 more ]
mycorpus_stem_mcdonaldsc<-tokens_wordstem(mycorpus_sw_mcdonaldsc, language = "es")
dtm_sw_mcdonaldsc <- dfm(mycorpus_stem_mcdonaldsc)
dtm_sw_mcdonaldsc <- dfm(mycorpus_sw_mcdonaldsc)
mycorpus_sw_mcdonaldsc
## Tokens consisting of 2,087 documents.
## text1 :
## [1] "@vicenteperezg" "motivación" "despertarnos"
##
## text2 :
## [1] "@vivianavaldez07" "@arcosdorados" "Hola" "Viviana"
## [5] "ayudaremos" "mensaje" "privado"
##
## text3 :
## [1] "@Michelle2001C" "buen" "gusto"
##
## text4 :
## [1] "@t121167" "@daniela_alzate2"
##
## text5 :
## [1] "@Michelle2001C" "si" "desayunaste"
##
## text6 :
## [1] "@camilo689" "Hola" "Alejo" "Según" "términos"
## [6] "condiciones" "cupón" "persona" "visita" "hace"
## [11] "válido" "momento"
## [ ... and 4 more ]
##
## [ reached max_ndoc ... 2,081 more documents ]
topfeatures(dtm_sw_mcdonaldsc, 20)
## hola dm favor datos restaurante área
## 841 834 534 303 291 288
## contacto vía encargada número pasó nombre
## 287 287 279 278 271 262
## correo completo ciudad electrónico envíanos #ladodulce
## 260 259 258 256 255 250
## podrías poder
## 231 225
dtm_f10_mcdonaldsc<-dfm_trim(dtm_sw_mcdonaldsc, min_termfreq = 10, min_docfreq = 2)
dtm_f10_mcdonaldsc
## Document-feature matrix of: 2,087 documents, 274 features (97.1% sparse).
## features
## docs hola mensaje si cupón visita hace momento comida lamentamos
## text1 0 0 0 0 0 0 0 0 0
## text2 1 1 0 0 0 0 0 0 0
## text3 0 0 0 0 0 0 0 0 0
## text4 0 0 0 0 0 0 0 0 0
## text5 0 0 1 0 0 0 0 0 0
## text6 1 0 0 1 1 1 1 1 0
## features
## docs inconveniente
## text1 0
## text2 0
## text3 0
## text4 0
## text5 0
## text6 0
## [ reached max_ndoc ... 2,081 more documents, reached max_nfeat ... 264 more features ]
topfeatures(dtm_sw_mcdonaldsc, 20)
## hola dm favor datos restaurante área
## 841 834 534 303 291 288
## contacto vía encargada número pasó nombre
## 287 287 279 278 271 262
## correo completo ciudad electrónico envíanos #ladodulce
## 260 259 258 256 255 250
## podrías poder
## 231 225
library(RColorBrewer)
textplot_wordcloud(dtm_f10_mcdonaldsc, min_count = 50, random_order = FALSE, rotation = .25, min_size = 1, max_size = 5, color = RColorBrewer::brewer.pal(8,"Dark2"))
Con base a los últimos tuits de la empresa Mc Donalds Colombia, la nube de palabras presentada indica lo más mencionado en los trinos están relacionadas con reclamaciones de los clientes. La nube muestra la palabra que se encuentran al menos 50 veces y del centro hacia afuera va indicando cuales se repiten con mayor frecuencia. En este orden de ideas, podemos ver como las palabras que mas se repiten son hola y dm, seguido de pasó, envíanos, datos, poder, darte, caso, sucedió, detalles, reportarnos.
tweets_mcdonaldsc$text[1:10]
## [1] "@vicenteperezg Esa la motivación con la que todos tenemos que despertarnos <U+0001F60D>"
## [2] "@vivianavaldez07 @arcosdorados Hola Viviana, te ayudaremos por mensaje privado :)"
## [3] "@Michelle2001C No es por nada, pero tienes muy buen gusto <U+0001F924> https://t.co/sDmeMGGkaD"
## [4] "@t121167 @daniela_alzate2 <U+2764><U+FE0F> https://t.co/0aSGfKghA7"
## [5] "@Michelle2001C ¡Que si qué! ¿Qué desayunaste? <U+0001F924>"
## [6] "@camilo689 Hola Alejo. Según los términos y condiciones, es un cupón por persona y por visita, el cual se hace válido al momento de redimirlo, escogiendo la comida de tu preferencia."
## [7] "@JennAndreaVB Jenn, lamentamos este inconveniente. Por favor envíanos tus datos para reportarlo al área encargada (Nombre completo, correo electrónico, ciudad, restaurante en el que pasó y número de contacto)."
## [8] "@PAO23MAJO @CathyJuvinao @BurgerKingCol @sierranevadahm @elrodeorestaura entre otros. Tenemos el compromiso de seguir trabajando, en alianza con productores locales, para desarrollar cada vez más productos hechos en Colombia con el estándar global de McDonald’s"
## [9] "@PAO23MAJO @CathyJuvinao @BurgerKingCol @sierranevadahm @elrodeorestaura En McDonald’s nos sentimos muy orgullosos de comprar productos colombianos. 65% de nuestros proveedores produce localmente ingredientes para nuestros restaurantes, entre los que se cuentan los vegetales, el pollo, los panes, los lácteos, los huevos, la bebida de la Cajita Feliz"
## [10] "@Flojisima Hola, lamentamos este inconveniente. Por favor envíanos tus datos para reportarlo al área encargada (Nombre completo, correo electrónico, ciudad, restaurante en el que pasó y número de contacto)."
tuits_afinn_mcdonaldsc <-
tweets_mcdonaldsc %>%
unnest_tokens(input = "text", output = "Palabra") %>%
inner_join(afinn, ., by = "Palabra") %>%
mutate(Tipo = ifelse(Puntuacion > 0, "Positiva", "Negativa"))
tuits_mcdonaldsc <-
tuits_afinn_mcdonaldsc %>%
group_by(status_id) %>%
summarise(Puntuacion_tuit = mean(Puntuacion)) %>%
left_join(tweets_mcdonaldsc, ., by = "status_id") %>%
mutate(Puntuacion_tuit = ifelse(is.na(Puntuacion_tuit), 0, Puntuacion_tuit))
## `summarise()` ungrouping output (override with `.groups` argument)
median(tuits_mcdonaldsc$Puntuacion_tuit)
## [1] 0
hist(tuits_mcdonaldsc$Puntuacion_tuit,col="gray",main="Histograma del Score de los Sentimientos de los Trinos de @McDonaldsCol")
tuits_mcdonaldsc$fecha=as.Date(tuits_mcdonaldsc$created_at)
ggplot(data=tuits_mcdonaldsc,aes(x=fecha,y=Puntuacion_tuit))+geom_smooth()+theme_bw()+geom_hline(yintercept = 0,col="red")+ggtitle("Serie de Tiempo del Score de Sentimiento para la Empresa @McDonaldsCol")
## `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
El histograma presentado muestra que en efecto gran parte de la valoración esta concentrada por debajo del cero, de hecho con mayor frecuencia la valoración está en -0.5, el score de Mc Donalds no está muy positivo. Teniendo en cuenta la tendencia del score de sentimiento de empresa,se observa que hay una caida significativa en el score que coincide con el inicio de la pandemia y se relaciona con lo mostrado en la nube de palabras de la primera parte. Mc Donalds tuvo muchos problemas con los domicilios y en el drivethru, de hecho en este momento tratando de contrarrestar el efecto negativo que generaron estos inconvenientes en la percepción de los clientes, pusieron una promoción donde si no te entregan el pedido en 5 minutos te dan gratis una Big Mc.