Autor: Walin Paredes
Fecha: 20/12/2023
# Para limpiar el workspace, por si hubiera algun dataset
# o informacion cargada
rm(list = ls())
# Cambiar el directorio de trabajo
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
getwd()
## [1] "C:/Users/walinn/Documentos/2022 CLASES (INSTITUTO)/4toSEMESTRE/Estadistica"
Google Play Store Apps
Impulsar el éxito de las empresas de creación de aplicaciones
Si bien muchos conjuntos de datos públicos (en Kaggle y similares) proporcionan datos de Apple App Store, no hay muchos conjuntos de datos homólogos disponibles para las aplicaciones de Google Play Store en ningún lugar de la web. Al indagar más a fondo, descubrí que la página de la App Store de iTunes despliega una estructura similar a un apéndice muy bien indexada para permitir un raspado web simple y fácil. Por otro lado, Google Play Store utiliza técnicas sofisticadas de hoy en día (como la carga dinámica de páginas) utilizando JQuery, lo que hace que el raspado sea más desafiante.
Datos obtenidos de: https://www.kaggle.com/datasets/lava18/google-play-store-apps
Análisis de las instalaciones de las aplicaciones: La mayoría de las aplicaciones en la Google Play Store han sido instaladas solo por un pequeño número de usuarios. Cerca de la mitad de todas las aplicaciones disponibles han sido instaladas menos de 500 veces, y más del 90% han sido instaladas menos de 50,000 veces3. ¿Cómo se distribuyen las instalaciones de las aplicaciones en la Google Play Store? ¿Existen factores que puedan predecir el número de instalaciones de una aplicación?
El objetivo principal de este estudio es analizar y comprender las características y tendencias de las aplicaciones disponibles en la Google Play Store. Se busca identificar los factores clave que influyen en la popularidad y el éxito de las aplicaciones, como las calificaciones, el número de instalaciones, el precio, entre otros. Este análisis puede proporcionar información valiosa para los desarrolladores de aplicaciones, ayudándoles a optimizar sus productos y estrategias de mercado. Además, los hallazgos de este estudio pueden ser útiles para los usuarios de la Google Play Store, ya que pueden ayudarles a tomar decisiones informadas sobre qué aplicaciones descargar.
La población de estudio para el conjunto de datos de Google Play Store Apps comprende todas las aplicaciones disponibles en la Google Play Store. Esto incluye aplicaciones de diversas categorías, como juegos, productividad, salud y fitness, educación, entretenimiento, entre otras. Cada aplicación en la Google Play Store se considera una unidad de análisis en este estudio.
Para llevar a cabo este análisis, se utilizará una muestra aleatoria estratificada que incluirá una variedad de aplicaciones web.
La unidad de análisis en este estudio son las aplicaciones individuales listadas en el conjunto de datos de Google Play Store Apps.
El tipo de muestreo que se utiliza en este estudio es el muestreo no probabilístico de conveniencia.
Para llevar a cabo el análisis, primero importaremos el conjunto de datos al entorno de trabajo de R.
apps <- read.csv("googleplaystore.csv", sep=",", stringsAsFactors = TRUE, encoding = "latin1")
head(apps)
## App Category Rating
## 1 Photo Editor & Candy Camera & Grid & ScrapBook ART_AND_DESIGN 4.1
## 2 Coloring book moana ART_AND_DESIGN 3.9
## 3 U Launcher Lite – FREE Live Cool Themes, Hide Apps ART_AND_DESIGN 4.7
## 4 Sketch - Draw & Paint ART_AND_DESIGN 4.5
## 5 Pixel Draw - Number Art Coloring Book ART_AND_DESIGN 4.3
## 6 Paper flowers instructions ART_AND_DESIGN 4.4
## Reviews Size Installs Type Price Content.Rating Genres
## 1 159 19M 10,000+ Free 0 Everyone Art & Design
## 2 967 14M 500,000+ Free 0 Everyone Art & Design;Pretend Play
## 3 87510 8.7M 5,000,000+ Free 0 Everyone Art & Design
## 4 215644 25M 50,000,000+ Free 0 Teen Art & Design
## 5 967 2.8M 100,000+ Free 0 Everyone Art & Design;Creativity
## 6 167 5.6M 50,000+ Free 0 Everyone Art & Design
## Last.Updated Current.Ver Android.Ver
## 1 January 7, 2018 1.0.0 4.0.3 and up
## 2 January 15, 2018 2.0.0 4.0.3 and up
## 3 August 1, 2018 1.2.4 4.0.3 and up
## 4 June 8, 2018 Varies with device 4.2 and up
## 5 June 20, 2018 1.1 4.4 and up
## 6 March 26, 2017 1.0 2.3 and up
App: Nombre de la aplicación.
Category: Categoría a la que pertenece la aplicación.
Rating: Calificación de la aplicación.
Reviews: Número de reseñas de usuarios.
Size: Tamaño de la aplicación.
Installs: Número de instalaciones de la aplicación.
Type: Indica si la aplicación es gratuita (Free) o de pago (Paid).
Price: Precio de la aplicación.
Content Rating: Clasificación de contenido para la aplicación (por
ejemplo, Everyone, Teenager, Adult).
Genres: Categoría detallada a la que pertenece la aplicación.
Last Updated: Fecha de la última actualización de la aplicación.
Current Version: Versión actual de la aplicación.
Android Version: Versión de Android necesaria para ejecutar la
aplicación.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.2
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(modeest)
## Warning: package 'modeest' was built under R version 4.3.2
library(fBasics)
## Warning: package 'fBasics' was built under R version 4.3.2
##
## Attaching package: 'fBasics'
## The following objects are masked from 'package:modeest':
##
## ghMode, ghtMode, gldMode, hypMode, nigMode, skewness
head(apps)
## App Category Rating
## 1 Photo Editor & Candy Camera & Grid & ScrapBook ART_AND_DESIGN 4.1
## 2 Coloring book moana ART_AND_DESIGN 3.9
## 3 U Launcher Lite – FREE Live Cool Themes, Hide Apps ART_AND_DESIGN 4.7
## 4 Sketch - Draw & Paint ART_AND_DESIGN 4.5
## 5 Pixel Draw - Number Art Coloring Book ART_AND_DESIGN 4.3
## 6 Paper flowers instructions ART_AND_DESIGN 4.4
## Reviews Size Installs Type Price Content.Rating Genres
## 1 159 19M 10,000+ Free 0 Everyone Art & Design
## 2 967 14M 500,000+ Free 0 Everyone Art & Design;Pretend Play
## 3 87510 8.7M 5,000,000+ Free 0 Everyone Art & Design
## 4 215644 25M 50,000,000+ Free 0 Teen Art & Design
## 5 967 2.8M 100,000+ Free 0 Everyone Art & Design;Creativity
## 6 167 5.6M 50,000+ Free 0 Everyone Art & Design
## Last.Updated Current.Ver Android.Ver
## 1 January 7, 2018 1.0.0 4.0.3 and up
## 2 January 15, 2018 2.0.0 4.0.3 and up
## 3 August 1, 2018 1.2.4 4.0.3 and up
## 4 June 8, 2018 Varies with device 4.2 and up
## 5 June 20, 2018 1.1 4.4 and up
## 6 March 26, 2017 1.0 2.3 and up
summary(apps)
## App Category
## ROBLOX : 9 FAMILY :1972
## CBS Sports App - Scores, News, Stats & Watch Live: 8 GAME :1144
## 8 Ball Pool : 7 TOOLS : 843
## Candy Crush Saga : 7 MEDICAL : 463
## Duolingo: Learn Languages Free : 7 BUSINESS : 460
## ESPN : 7 PRODUCTIVITY: 424
## (Other) :10796 (Other) :5535
## Rating Reviews Size Installs
## Min. : 1.000 0 : 596 Varies with device:1695 1,000,000+ :1579
## 1st Qu.: 4.000 1 : 272 11M : 198 10,000,000+:1252
## Median : 4.300 2 : 214 12M : 196 100,000+ :1169
## Mean : 4.193 3 : 175 14M : 194 10,000+ :1054
## 3rd Qu.: 4.500 4 : 137 13M : 191 1,000+ : 907
## Max. :19.000 5 : 108 15M : 184 5,000,000+ : 752
## NA's :1474 (Other):9339 (Other) :8183 (Other) :4128
## Type Price Content.Rating Genres
## 0 : 1 0 :10040 : 1 Tools : 842
## Free:10039 $0.99 : 148 Adults only 18+: 3 Entertainment: 623
## NaN : 1 $2.99 : 129 Everyone :8714 Education : 549
## Paid: 800 $1.99 : 73 Everyone 10+ : 414 Medical : 463
## $4.99 : 72 Mature 17+ : 499 Business : 460
## $3.99 : 63 Teen :1208 Productivity : 424
## (Other): 316 Unrated : 2 (Other) :7480
## Last.Updated Current.Ver Android.Ver
## August 3, 2018: 326 Varies with device:1459 4.1 and up :2451
## August 2, 2018: 304 1.0 : 809 4.0.3 and up :1501
## July 31, 2018 : 294 1.1 : 264 4.0 and up :1375
## August 1, 2018: 285 1.2 : 178 Varies with device:1362
## July 30, 2018 : 211 2.0 : 151 4.4 and up : 980
## July 25, 2018 : 164 1.3 : 145 2.3 and up : 652
## (Other) :9257 (Other) :7835 (Other) :2520
ggplot(apps, aes(x = Category)) +
geom_bar(fill = "lightcoral", color = "black") +
labs(title = "Gráfico de Barras para la Categoría de las Aplicaciones") +
theme_minimal()
ggplot(apps, aes(x = Rating)) +
geom_histogram(binwidth = 0.5, fill = "lightblue", color = "black") +
labs(title = "Histograma para las Calificaciones de las Aplicaciones") +
theme_minimal()
## Warning: Removed 1474 rows containing non-finite values (`stat_bin()`).
ggplot(apps, aes(y = Rating)) +
geom_boxplot(fill = "lightblue", color = "black") +
labs(title = "Diagrama de Caja para las Calificaciones de las Aplicaciones") +
theme_minimal()
## Warning: Removed 1474 rows containing non-finite values (`stat_boxplot()`).
category_freq <- table(apps$Category)
pie(category_freq, main = "Gráfico Circular para la Categoría de las Aplicaciones")
ggplot(apps, aes(x = Rating)) +
geom_density(alpha = 0.5, fill = "orange") +
labs(title = "Gráfico de Densidad para las Calificaciones de las Aplicaciones") +
theme_minimal()
## Warning: Removed 1474 rows containing non-finite values (`stat_density()`).
mean_rating <- mean(apps$Rating, na.rm = TRUE)
cat("La media aritmética es:", mean_rating, "\n")
## La media aritmética es: 4.193338
median_rating <- median(apps$Rating, na.rm = TRUE)
cat("La Mediana es:", mean_rating, "\n")
## La Mediana es: 4.193338
table_rating <- table(apps$Rating)
moda_rating <- as.numeric(names(table_rating)[table_rating == max(table_rating)])
cat("La moda es:", mean_rating, "\n")
## La moda es: 4.193338
range_rating <- max(apps$Rating, na.rm = TRUE) - min(apps$Rating, na.rm = TRUE)
cat("El rango es:", range_rating, "\n")
## El rango es: 18
var_rating <- var(apps$Rating, na.rm = TRUE)
cat("La varianza es:", var_rating, "\n")
## La varianza es: 0.2888324
sd_rating <- sd(apps$Rating, na.rm = TRUE)
cat("La desviación estándar es:", sd_rating, "\n")
## La desviación estándar es: 0.5374313
cv_rating <- sd_rating / mean_rating * 100
cat("El coeficiente de variación es:", cv_rating, "\n")
## El coeficiente de variación es: 12.81631
cat("Medidas estadísticas de Rating\n")
## Medidas estadísticas de Rating
cat("Media:", mean_rating, "\n")
## Media: 4.193338
cat("Mediana:", median_rating, "\n")
## Mediana: 4.3
cat("Moda:", moda_rating, "\n")
## Moda: 4.4
cat("Rango:", range_rating, "\n")
## Rango: 18
cat("Varianza:", var_rating, "\n")
## Varianza: 0.2888324
cat("Desviación Estándar:", sd_rating, "\n")
## Desviación Estándar: 0.5374313
cat("Coeficiente de Variación:", cv_rating, "%\n")
## Coeficiente de Variación: 12.81631 %
str(apps)
## 'data.frame': 10841 obs. of 13 variables:
## $ App : Factor w/ 9660 levels "- Free Comics - Comic Apps",..: 7229 2563 8998 8113 7294 7125 8171 5589 4948 5826 ...
## $ Category : Factor w/ 34 levels "1.9","ART_AND_DESIGN",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ Rating : num 4.1 3.9 4.7 4.5 4.3 4.4 3.8 4.1 4.4 4.7 ...
## $ Reviews : Factor w/ 6002 levels "0","1","10","100",..: 1183 5924 5681 1947 5924 1310 1464 3385 816 485 ...
## $ Size : Factor w/ 462 levels "1,000+","1.0M",..: 55 30 368 102 64 222 55 118 146 120 ...
## $ Installs : Factor w/ 22 levels "0","0+","1,000,000,000+",..: 8 20 13 16 11 17 17 4 4 8 ...
## $ Type : Factor w/ 4 levels "0","Free","NaN",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ Price : Factor w/ 93 levels "$0.99","$1.00",..: 92 92 92 92 92 92 92 92 92 92 ...
## $ Content.Rating: Factor w/ 7 levels "","Adults only 18+",..: 3 3 3 6 3 3 3 3 3 3 ...
## $ Genres : Factor w/ 120 levels "Action","Action;Action & Adventure",..: 10 13 10 10 12 10 10 10 10 12 ...
## $ Last.Updated : Factor w/ 1378 levels "1.0.19","April 1, 2016",..: 562 482 117 825 757 901 76 726 1317 670 ...
## $ Current.Ver : Factor w/ 2834 levels "","0.0.0.2","0.0.1",..: 121 1020 466 2827 279 115 279 2393 1457 1431 ...
## $ Android.Ver : Factor w/ 35 levels "","1.0 and up",..: 17 17 17 20 22 10 17 20 12 17 ...
cuartiles_rating <- quantile(apps$Rating, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
cuartiles_rating
## 0% 25% 50% 75% 100%
## 1.0 4.0 4.3 4.5 19.0
deciles_rating <- data.frame(
Deciles = seq(0, 1, 0.1),
Valor = quantile(apps$Rating, probs = seq(0, 1, 0.1), na.rm = TRUE)
)
deciles_rating_ordenado <- deciles_rating[order(deciles_rating$Deciles), ]
deciles_rating_ordenado
## Deciles Valor
## 0% 0.0 1.0
## 10% 0.1 3.6
## 20% 0.2 3.9
## 30% 0.3 4.1
## 40% 0.4 4.2
## 50% 0.5 4.3
## 60% 0.6 4.4
## 70% 0.7 4.5
## 80% 0.8 4.6
## 90% 0.9 4.7
## 100% 1.0 19.0
percentiles_rating <- data.frame(
Percentiles = seq(0, 1, 0.01),
Valor = quantile(apps$Rating, probs = seq(0, 1, 0.01), na.rm = TRUE)
)
percentiles_rating_ordenado <- percentiles_rating[order(percentiles_rating$Percentiles), ]
percentiles_rating_ordenado
## Percentiles Valor
## 0% 0.00 1.0
## 1% 0.01 2.3
## 2% 0.02 2.7
## 3% 0.03 2.9
## 4% 0.04 3.1
## 5% 0.05 3.2
## 6% 0.06 3.3
## 7% 0.07 3.4
## 8% 0.08 3.5
## 9% 0.09 3.5
## 10% 0.10 3.6
## 11% 0.11 3.6
## 12% 0.12 3.7
## 13% 0.13 3.7
## 14% 0.14 3.8
## 15% 0.15 3.8
## 16% 0.16 3.8
## 17% 0.17 3.8
## 18% 0.18 3.9
## 19% 0.19 3.9
## 20% 0.20 3.9
## 21% 0.21 3.9
## 22% 0.22 4.0
## 23% 0.23 4.0
## 24% 0.24 4.0
## 25% 0.25 4.0
## 26% 0.26 4.0
## 27% 0.27 4.0
## 28% 0.28 4.1
## 29% 0.29 4.1
## 30% 0.30 4.1
## 31% 0.31 4.1
## 32% 0.32 4.1
## 33% 0.33 4.1
## 34% 0.34 4.1
## 35% 0.35 4.2
## 36% 0.36 4.2
## 37% 0.37 4.2
## 38% 0.38 4.2
## 39% 0.39 4.2
## 40% 0.40 4.2
## 41% 0.41 4.2
## 42% 0.42 4.2
## 43% 0.43 4.2
## 44% 0.44 4.2
## 45% 0.45 4.2
## 46% 0.46 4.3
## 47% 0.47 4.3
## 48% 0.48 4.3
## 49% 0.49 4.3
## 50% 0.50 4.3
## 51% 0.51 4.3
## 52% 0.52 4.3
## 53% 0.53 4.3
## 54% 0.54 4.3
## 55% 0.55 4.3
## 56% 0.56 4.3
## 57% 0.57 4.4
## 58% 0.58 4.4
## 59% 0.59 4.4
## 60% 0.60 4.4
## 61% 0.61 4.4
## 62% 0.62 4.4
## 63% 0.63 4.4
## 64% 0.64 4.4
## 65% 0.65 4.4
## 66% 0.66 4.4
## 67% 0.67 4.4
## 68% 0.68 4.4
## 69% 0.69 4.5
## 70% 0.70 4.5
## 71% 0.71 4.5
## 72% 0.72 4.5
## 73% 0.73 4.5
## 74% 0.74 4.5
## 75% 0.75 4.5
## 76% 0.76 4.5
## 77% 0.77 4.5
## 78% 0.78 4.5
## 79% 0.79 4.5
## 80% 0.80 4.6
## 81% 0.81 4.6
## 82% 0.82 4.6
## 83% 0.83 4.6
## 84% 0.84 4.6
## 85% 0.85 4.6
## 86% 0.86 4.6
## 87% 0.87 4.6
## 88% 0.88 4.6
## 89% 0.89 4.7
## 90% 0.90 4.7
## 91% 0.91 4.7
## 92% 0.92 4.7
## 93% 0.93 4.7
## 94% 0.94 4.8
## 95% 0.95 4.8
## 96% 0.96 4.8
## 97% 0.97 4.9
## 98% 0.98 5.0
## 99% 0.99 5.0
## 100% 1.00 19.0
asimetria_rating <- skewness(apps$Rating, na.rm = TRUE)
cat("Asimetría:", asimetria_rating, "\n")
## Asimetría: 0.595446
curtosis_rating <- kurtosis(apps$Rating, na.rm = TRUE)
cat("Curtosis:", curtosis_rating, "\n")
## Curtosis: 65.9442
Dado que el valor de asimetría es positivo, esto indica que la distribución de las calificaciones es asimétrica positiva. Esto significa que las calificaciones están concentradas en los valores más bajos y la cola de la distribución se extiende hacia la derecha.
El valor de la curtosis es significativamente mayor que 3, lo que indica que la distribución de las calificaciones es leptocúrtica. Esto implica que las calificaciones están muy concentradas alrededor de las medidas de tendencia central. Además, una curtosis tan alta sugiere que hay muchos valores atípicos en los datos.