Dentro de la materia de analisis de datos sociales hemos aprendido a entender los mensajes ocultos (si lo podemos llamar asi) dentro de toda la informacion y ahora lo pondremos a prueba analizando un dataset sobe una página de Facebook en la cual se vende maquillaje.
Existen varios puntos que nos interesa entender, el primero de ellos es el siguiente:
Queremos averiguar si el numero de likes sigue una tendencia dependiendo de las veces que fue compartido. Esto es lo analizaremos de la siguiente manera:
datos <- read.csv("c:/R/dataset_Facebook.csv", header = TRUE, sep = ";")
Ingresamos la linea donde asignaremos la variable datos a nuestro dataset, aqui tambien le decimos a nuestro programa que el documento que estamos exportando cuenta con encabezados y la separacion entre cada dato es por punto y coma. En la tabla resultante podemos observar todos los datos que tenmos en nuestro documento y ahora vamos a analizar como obtener el primer punto.
likes <- as.numeric(datos$like)
compartido <- as.numeric(datos$share)
Agregamos las dos lineas anteriores para indocar que la variable likes sera de tipo numerico y que se le asignara el valor que se encuentra en la variable datos en la colummna de like, al igual que compartido será una variable numerica.
sort(likes, decreasing = TRUE)
## [1] 5172 1998 1639 1622 1572 1546 1505 1372 1155 1047 955 859 859 821 766
## [16] 766 755 697 696 678 664 617 579 577 535 534 529 523 485 484
## [31] 469 449 447 442 435 431 412 411 407 400 379 377 370 367 363
## [46] 360 358 345 332 331 330 329 328 325 325 319 315 310 307 304
## [61] 302 301 290 286 285 278 277 270 268 267 264 264 256 250 249
## [76] 244 244 243 238 237 236 235 234 234 234 233 231 227 227 227
## [91] 227 226 226 226 223 220 219 217 216 215 214 213 212 211 210
## [106] 208 204 204 202 202 200 199 198 198 197 197 194 194 194 193
## [121] 193 190 189 188 188 187 187 187 186 186 186 185 181 180 179
## [136] 179 179 179 176 174 172 172 168 167 166 166 165 164 164 163
## [151] 163 162 161 161 160 159 156 155 155 155 154 154 154 154 153
## [166] 152 152 152 150 148 148 148 148 148 148 146 146 145 144 144
## [181] 143 143 143 142 142 142 141 140 140 139 139 139 138 138 138
## [196] 137 137 136 136 134 130 130 129 129 129 129 128 128 128 128
## [211] 128 127 126 125 125 124 124 118 117 117 115 115 114 114 114
## [226] 114 113 113 113 113 112 112 111 109 109 107 107 107 107 105
## [241] 104 104 104 102 102 102 102 101 101 101 101 101 100 99 99
## [256] 99 99 98 98 98 98 98 98 98 97 97 96 96 96 96
## [271] 95 95 95 94 93 93 93 92 91 91 91 90 89 88 88
## [286] 88 87 87 87 86 86 86 85 84 84 84 84 82 81 80
## [301] 80 79 79 79 79 79 79 78 78 77 77 77 77 76 76
## [316] 76 76 75 75 74 74 74 74 74 73 73 72 72 72 72
## [331] 72 72 71 71 71 71 69 68 68 67 66 66 66 66 66
## [346] 65 65 65 64 64 64 64 63 63 63 63 62 62 62 61
## [361] 61 61 61 60 59 59 59 59 58 58 57 57 57 57 56
## [376] 56 56 56 56 55 55 54 54 54 54 53 53 53 53 53
## [391] 53 52 52 51 51 51 50 49 48 48 48 48 48 47 47
## [406] 47 47 46 46 46 44 44 43 42 41 41 40 40 40 40
## [421] 39 39 38 37 36 36 36 35 34 34 33 32 32 32 32
## [436] 32 30 30 30 29 29 28 28 28 27 27 26 25 25 24
## [451] 24 23 22 22 19 18 18 17 16 15 15 15 15 14 14
## [466] 13 13 12 12 11 11 9 8 7 7 7 7 7 7 6
## [481] 6 6 5 4 4 4 4 3 3 3 2 2 2 1 0
## [496] 0 0 0 0
plot(likes[1:100], compartido[1:100])
Con la indicacion sport nuestros datos se ordenaran decreceintemente, para poder analizarlos mejor, mientras con la funcion plot creamos la grafica y en ella podremos comprender mejor la relacion que existe entre ellos, al ejecutarlos se muestra lo siguiente: Estos son los datos que se nos muestran en la consola, nostrandonos que la publicacion que mas likes obtuvo 5272, ahora pasemos a analizar la grafica: ¿Que observamos en esta grafica? Podemos analizar que existen publicaciones en las cuales o fueron compartidas y por consiguiente tampoco recibieron likes, ademas de que si trasaramos una linea nos podriamos dar cuenta que el punto mas lejano el cual, fue el que mas likes recibio se desfasa de la linea trazada. Un buen analista de datos puede comprender que no siempre existe una correlacion entre ambos puntos como es este caso.
Queremos conocer la media de las interraciones del mes de julio para lo cual utilizamos el siguiente codigo:
mean(datos$Total.Interactions[datos$Post.Month==7])
## [1] 328.5
Con la funcion mean sacaremos la media de todos los datos, pero nosotros solo queremos conocer la media de las interacciones realizadas en el mes de julio, por lo cual deberemos hacer una subconsulta. Sacando de la variable datos el total de interacciones pero a la vez, de la variable datos el mes en que fue publicado, todos aquellos datosque tengan igual a 7 osea el mes de julio, al ejecutar esta linea el resultado mostrado es de 328.5.
Nuestro tercer punto es determinar que tipo de publicacion es mas convenietne postear en la pagina segun el dia de la semana y el total de interracciones que se obtuvieron, utilizando el siguiente codigo:
tabla <- subset(datos, subset = Type == "Photo", select = c('Post.Weekday', 'Total.Interactions'))
tabla2 <- subset(datos, subset = Type == "Status", select = c('Post.Weekday', 'Total.Interactions'))
tabla3 <- subset(datos, subset = Type == "Link", select = c('Post.Weekday', 'Total.Interactions'))
tabla4 <- subset(datos, subset = Type == "Video", select = c('Post.Weekday', 'Total.Interactions'))
El cual nos sirve para mostrarnos una tabla con los dias de la semana y el total de interracciones que se obtuvieron de esta publicacion, esto lo utilizaremos para comparar cada tabla y poder deducir que es mas conveniente publicar. Al analizar la tabla de interacciones al publicar una foto, podemos observar que el dia de la semana que es mas conveniete publicar una foto, son los dias miercoles pues se obtuvo un total de 6334 interacciones. Al igual que las fotos el mejor dia para publicar un estado es un dia miercoles, obteniendo un total de 1009 interraciones. Pasemos a la tercer forma de publicacion un link, la tendencia cambio pues los dos tipos anteriores de publicacion era mas conveniente publicarlos en miercoles, para que un link obtenga mas interacciones debera ser publicado un dia martes. Aunque la pagina a publicado pocos videos, el mejor dia para publicarlos es un viernes generando un total de 550 interracciones. Por lo cual deducimos que el mejor tipo de publicacion es una foto, en los dias miercoles pues al ser la mitad de la semana las personas visitan la pagina de facebool buscan algo con que distraerse, por lo cual sera mas facil interactuar con una foto. Ya que es mas rapido compartir una foto, dar like o comentar que ver un video o ingresar a ver estados, asi como entrar a un link. Ya que si lo que deseamos es promocionar un producto por medio de un video lo debemos publicar un dia viernes, pues es fin de semana y ahora los posibles clientes estaran dispuestos a ver el video completo, ya que la semana de trabajo a terminado.
Este paso lo realizaremos en dos dado que primero analizaremos si el pago por publicacion es mas conveniete en una publicacion dado el alcance de vida de la publicacion utilizando el siguiente codigo:
pago <- as.numeric(datos$Paid)
totalvida <- as.numeric(datos$Lifetime.Post.Total.Reach)
sort(pago, decreasing = TRUE)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
## [149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [297] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [371] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [408] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [445] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [482] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
plot(pago[1:100], totalvida[1:100])
Dando asi a la variable pago un valor numerico y a la variable totalvida de igual manera le asignamos un valor numerico, con la funcion sort generamos que la grafica resultante sea decresiente y la funcion plot nos graficara los primeros 100 resultadoss de los pagos y el total de vida de la publicacion mostrando la grafica anterior. Podemos observar en nuestra grafica que efectivamente al pargar por una publicacion el tiempo de vida de esta sera mucho mas largo, pues sino se por la publiciad de la pagina nuestras publicaciones seran olvidadas mas rapido o no generan el mismo impacto que si pagaramos por ellas.
Agora aalicemos si el pago por publicacion y el total de interacciones tienen congruencia. Utilizando el siguiente codigo:
pago <- as.numeric(datos$Paid)
interacciones <- as.numeric(datos$Total.Interactions)
sort(pago, decreasing = TRUE)
## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [38] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [75] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [112] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
## [149] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [186] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [223] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [297] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [371] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [408] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [445] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [482] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
plot(pago[1:100], interacciones[1:100])
Dando el valor numerico al pago por interraciones y a las interraciones de igual manera, crearemos una grafica que sera decreceinte y nos mostrara los primeros 100 resultados. Lo que nos quiere decir que efectivamente, al pagar por una publicacion esta tendra mas interacciones. Ademas de tener mas interacciones tendra un mayor tiempo de vida en la red social.
Hasta ahora podemos deducir que para que nuestra pagina tenga un mayor exito deberiamos publicar una foto en dia miercoles y que ademas deberiamos pagar por este tipo de publicidad ya que asi tendra un mayor tiempo de vida y por consecuencia un mayor numero de interacciones.
Analizar si las personas a las que les ha gustado nuestra pagina de por vida han interectuado con las publicaciones referentes a nuestra pagina, ademas de saber si tienen relacion con los comentarios por publicacion. Dado que es un punto importante para nuestra pagina al igual que el punto anterios lo realizaremos en 2 partes, para despues sacar una conclusion final de todo el analisis realizado.
comentarios <- as.numeric(datos$comment)
usuariocomp <- as.numeric(datos$Lifetime.Engaged.Users)
sort(comentarios, decreasing = TRUE)
## [1] 372 146 144 103 64 60 58 56 51 47 45 45 42 41 38 37 36 36
## [19] 33 33 30 30 29 26 26 25 25 25 24 24 23 22 22 21 20 20
## [37] 20 20 20 19 19 19 18 18 18 18 18 18 17 17 17 17 16 16
## [55] 16 16 16 15 15 14 14 14 13 13 13 13 12 12 12 12 12 12
## [73] 12 11 11 11 11 11 11 11 11 10 10 10 10 10 10 10 10 10
## [91] 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8
## [109] 8 8 8 8 8 8 8 7 7 7 7 7 7 7 7 7 7 7
## [127] 7 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6
## [145] 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 5
## [163] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
## [181] 5 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [199] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
## [217] 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3
## [235] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [253] 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2
## [271] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [289] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [307] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [325] 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
## [343] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [361] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [379] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
## [397] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [415] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [433] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [451] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [469] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [487] 0 0 0 0 0 0 0 0 0 0 0 0 0 0
hist(comentarios, main = "Relacion", ylab = "usuarioscomp")
Lo que podemos interpretar de la grafica anterior es que en efecto el numero de usuarios comprometidos de por vida no generan tantos comentarios como se esperaba, existen muy pocas personas comprometidas que comentan nuestras publicaciones.
Veamos las interracciones que han tenido con todas nuestras publicaciones.
interacciones <- as.numeric(datos$Total.Interactions)
usuariocomp <- as.numeric(datos$Lifetime.Engaged.Users)
sort(interacciones, decreasing = TRUE)
## [1] 6334 2177 1974 1873 1806 1777 1626 1439 1290 1174 1136 1009 948 931 881
## [16] 823 818 787 771 730 713 691 633 624 622 605 599 596 587 587
## [31] 572 557 550 528 515 505 494 490 472 470 458 456 454 447 441
## [46] 430 429 421 420 410 409 409 404 393 390 387 378 378 376 367
## [61] 363 355 342 339 337 335 330 316 313 313 311 311 309 305 300
## [76] 299 295 294 290 288 287 285 282 282 280 279 276 274 273 271
## [91] 271 271 271 269 269 266 265 264 263 262 257 255 254 252 252
## [106] 252 251 249 245 243 243 242 242 238 238 238 237 236 235 234
## [121] 234 233 232 232 230 228 228 226 226 225 225 224 222 220 218
## [136] 218 217 217 217 214 212 212 211 210 208 204 204 203 203 202
## [151] 202 202 200 200 199 199 195 194 194 193 192 190 190 189 189
## [166] 188 188 188 186 186 185 184 183 182 180 180 179 179 178 176
## [181] 176 174 174 173 172 172 171 170 168 167 166 166 165 165 164
## [196] 164 163 163 163 163 162 162 162 162 160 160 158 157 155 154
## [211] 152 152 152 149 149 148 148 148 144 143 143 142 142 139 139
## [226] 138 137 137 136 136 135 135 134 133 132 132 131 130 129 128
## [241] 128 127 126 126 126 126 125 125 125 124 123 122 122 122 122
## [256] 121 121 121 121 120 120 119 119 119 119 118 118 118 118 117
## [271] 117 117 117 117 115 115 115 115 114 114 114 114 113 110 110
## [286] 108 108 107 107 106 106 106 105 104 104 103 103 101 101 100
## [301] 100 100 100 99 99 99 98 98 97 97 97 97 97 96 96
## [316] 96 95 95 94 94 94 93 92 91 91 90 90 90 90 90
## [331] 89 89 88 87 87 87 86 86 86 85 85 85 84 84 84
## [346] 84 83 83 83 83 82 81 81 81 80 79 79 79 77 75
## [361] 75 75 75 75 75 74 73 73 73 72 72 72 72 71 71
## [376] 71 71 70 70 70 70 69 69 68 68 68 68 67 67 67
## [391] 67 67 66 66 66 65 65 64 63 63 62 61 60 60 59
## [406] 59 58 58 58 57 56 56 55 55 54 54 54 53 53 53
## [421] 53 50 49 49 48 46 45 45 44 44 42 42 41 40 39
## [436] 39 39 39 39 39 38 38 38 36 36 35 34 34 34 32
## [451] 32 30 29 28 28 25 25 24 21 18 18 18 17 17 17
## [466] 17 15 15 14 14 12 10 10 10 10 9 9 8 7 7
## [481] 7 7 6 6 6 5 5 4 4 3 3 2 2 2 0
## [496] 0 0 0 0 0
hist(interacciones, main = "relacion, usuarios comprometidos", ylab = "usuarioscomp")
Generamos un histograma y los resultados fueron sorprendentes. Los usuarios que estan comprometidos con la pagina no tienen una gran interacciones con nuestras publicaciones, al igual que en la comparacion anterior personas que estan comprometidas con la pagina tienen poca o nada de interaccion con nuestras publicaciones.
Despues de este analisis podemos comprender los siguientes puntos:
Nuestras publicaciones pagadas tienen un mayor tiempo de vida, ademas de generar mas interacciones con los usuarios que visitan la pagina, si queremos que sea mas fructufera la publicacion lo mejor es publicar una foto en el dia miercoles asi obtendremos un mayor benefcio puesto que la publicacion tendra mayor nuemro de interacciones y un mayor tiempo de vida. A pesar de todo esto es necesaario llamar la atencion de los usuarios que aunn no se han comprometido con nuestra pagina pero que generan un mayor numero de interacciones con nuestras futuras publicaciones, ademas de pensar en una estrategia para que las personas que ya se han comprometido con la pagina interactuen con nuestras publicaciones.