Caratula

Aplicación de técnicas estadísticas

Autor: Walin Paredes
Fecha: 20/12/2023

Limpiar el workspace

# Para limpiar el workspace, por si hubiera algun dataset 
# o informacion cargada
rm(list = ls())

Cambiar directorio de trabajo

# Cambiar el directorio de trabajo
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
getwd()
## [1] "C:/Users/walinn/Documentos/2022 CLASES (INSTITUTO)/4toSEMESTRE/Estadistica"

I. Aspectos generales

1.1 Nombre de la organización y/o empresa (real o propuesta)

Google Play Store Apps

1.2 Misión y visión

Impulsar el éxito de las empresas de creación de aplicaciones

1.3 Descripción del servicio/productos que se va a analizar

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

1.4 Problemática de estudio

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?

II. Fundamentos básicos de la Estadística

2.1 Objetivo de estudio

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.

2.2 Población de estudio

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.

2.3 Muestra

Para llevar a cabo este análisis, se utilizará una muestra aleatoria estratificada que incluirá una variedad de aplicaciones web.

2.4 Unidad de análisis

La unidad de análisis en este estudio son las aplicaciones individuales listadas en el conjunto de datos de Google Play Store Apps.

2.5 Tipo de muestreo a utilizar

El tipo de muestreo que se utiliza en este estudio es el muestreo no probabilístico de conveniencia.

III. Variables y Tipo de Variables

3.1 Importación al entorno de trabajo

Para llevar a cabo el análisis, primero importaremos el conjunto de datos al entorno de trabajo de R.

Cargar datos

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

3.2 Variables y descripción de cada variable

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.

IV. Tablas estadísticas y gráficos adecuados (Considerar todos los estudiados)

Cargar las bibliotecas necesarias

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

Visualizar las primeras filas del conjunto de datos

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

Tabla estadística descriptiva

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

Gráfico de barras para la categoría de las aplicaciones

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()

Histograma para las calificaciones de las aplicaciones

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()`).

Diagrama de caja para las calificaciones de las aplicaciones

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()`).

Crear una tabla de frecuencias para la variable ‘Category’

category_freq <- table(apps$Category)

Crear un gráfico circular

pie(category_freq, main = "Gráfico Circular para la Categoría de las Aplicaciones")

Gráfico de densidad para las calificaciones 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()`).

V. Medidas estadísticas (Considerar todas las medidas estudiadas)

Medidas estadísticas de tendencia central para Rating

Media aritmética

mean_rating <- mean(apps$Rating, na.rm = TRUE)
cat("La media aritmética es:", mean_rating, "\n")
## La media aritmética es: 4.193338

Mediana

median_rating <- median(apps$Rating, na.rm = TRUE)
cat("La Mediana es:", mean_rating, "\n")
## La Mediana es: 4.193338

Moda

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

Medidas estadísticas de variabilidad o dispersión para Rating

Rango

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

Varianza

var_rating <- var(apps$Rating, na.rm = TRUE)
cat("La varianza es:", var_rating, "\n")
## La varianza es: 0.2888324

Desviación estándar

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

Coeficiente de variación

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

Resultados para Rating

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 %

Medidas de posicion

Visualizar la estructura del conjunto de datos para identificar las columnas

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 ...

Calcular cuartiles para rating

cuartiles_rating <- quantile(apps$Rating, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)

Mostrar los cuartiles calculados para Rating

cuartiles_rating
##   0%  25%  50%  75% 100% 
##  1.0  4.0  4.3  4.5 19.0

Calcular deciles para Rating

deciles_rating <- data.frame(
  Deciles = seq(0, 1, 0.1),
  Valor = quantile(apps$Rating, probs = seq(0, 1, 0.1), na.rm = TRUE)
)

Ordenar el dataframe por los valores de deciles

deciles_rating_ordenado <- deciles_rating[order(deciles_rating$Deciles), ]

Mostrar el dataframe ordenado

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

Calcular percentiles para Rating

percentiles_rating <- data.frame(
  Percentiles = seq(0, 1, 0.01),
  Valor = quantile(apps$Rating, probs = seq(0, 1, 0.01), na.rm = TRUE)
)

Ordenar el dataframe por los valores de percentiles

percentiles_rating_ordenado <- percentiles_rating[order(percentiles_rating$Percentiles), ]

Mostrar el dataframe ordenado

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

Asimetría

asimetria_rating <- skewness(apps$Rating, na.rm = TRUE)
cat("Asimetría:", asimetria_rating, "\n")
## Asimetría: 0.595446

Curtosis

curtosis_rating <- kurtosis(apps$Rating, na.rm = TRUE)
cat("Curtosis:", curtosis_rating, "\n")
## Curtosis: 65.9442

Para asimetría

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.

Para curtosis

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.