Com a chegada dos smartphones, o mundo android tomou conta de todos os lugares do mundo e tudo se deve a chegada de aplicações que antes só poderiam ser utilizadas em um computador começaram a aparece numa pequena tela que cabe em sua mão. Essas aplicações variam de objetivos e funcionalidades com o intuito de conquista a todos pelo mundo. Um dos maiores acervos de aplicações mobiles que existe é o Google play store, nele nos é apresentado todas aplicações com base no seu genero e ainda nos mostra uma nota baseada nos usuarios que já utilizaram a aplicação. essa nota pode ser dados em um valor inteiro no intervalo de 1 a 5 e auxilia os usuario na hora de instalar a aplicação no seu celular. Com essa popularização, se abre um questionamento: é possivel que exista uma formula para o sucesso para os aplicativos mobile? Para responder essa pergunta, escolhemos alguns fatores que podem influenciar no sucesso de uma aplicação. e entre eles selecionamos a categoria de uma aplicaçãos, se ela é gratuita ou paga e a sua faixa etaria.
Para essas analises usaremos dados obtidos no aplicativo e site da Google Play Store e retirado do site kaggle. A partir disso, extraimos os dados de aplicativos presentes.
Dos dados extraídos que iremos referenciar durante a análise são:
Dataset: dados da Google Play Store (“googleplaystore.csv”) Campos nos dados: App: nome do aplicativo Category: categoria à qual o aplicativo pertence Rating: avaliação geral do usuário do aplicativo Reviews: número de resenhas de usuários para o aplicativo size: tamanho do aplicativo Installs: número de downloads / instalações do usuário para o aplicativo Type: pago ou gratuito Price: Preço do aplicativo Content Rating: faixa etária para a qual o aplicativo é direcionado - Crianças / Adultos com 21 anos ou mais / Adulto Genres: um aplicativo pode pertencer a vários gêneros (além de sua categoria principal). Por exemplo, o jogo musical familiar pertencerá aos gêneros Music, Game, Family. Last Updated: data em que o aplicativo foi atualizado pela última vez na Play Store Current See: Versão atual do aplicativo disponível na Play Store Android See: Versão mínima exigida do Android
dados = read_csv(here::here(params$arquivo_dados))
## Rows: 10840 Columns: 13
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (11): App, Category, Size, Installs, Type, Price, Content Rating, Genres...
## dbl (2): Rating, Reviews
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#dados %>% filter(across(.fns = function (x) { !is.na(x) }))
glimpse(dados)
## Rows: 10,840
## Columns: 13
## $ Rating <dbl> 4.1, 3.9, 4.7, 4.5, 4.3, 4.4, 3.8, 4.1, 4.4, 4.7, 4.4…
## $ App <chr> "Photo Editor & Candy Camera & Grid & ScrapBook", "Co…
## $ Category <chr> "ART_AND_DESIGN", "ART_AND_DESIGN", "ART_AND_DESIGN",…
## $ Reviews <dbl> 159, 967, 87510, 215644, 967, 167, 178, 36815, 13791,…
## $ Size <chr> "19M", "14M", "8.7M", "25M", "2.8M", "5.6M", "19M", "…
## $ Installs <chr> "10,000+", "500,000+", "5,000,000+", "50,000,000+", "…
## $ Type <chr> "Free", "Free", "Free", "Free", "Free", "Free", "Free…
## $ Price <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"…
## $ `Content Rating` <chr> "Everyone", "Everyone", "Everyone", "Teen", "Everyone…
## $ Genres <chr> "Art & Design", "Art & Design;Pretend Play", "Art & D…
## $ `Last Updated` <chr> "07-Jan-18", "15-Jan-18", "01-Aug-18", "08-Jun-18", "…
## $ `Current Ver` <chr> "1.0.0", "2.0.0", "1.2.4", "Varies with device", "1.1…
## $ `Android Ver` <chr> "4.0.3 and up", "4.0.3 and up", "4.0.3 and up", "4.2 …
Antes de começarmos uma analise sobre as variaveis selecionadas, devemos começar analisando a variavel principal dessa analise. As notas dos usuarios dada para as aplicações. Dispondo as notas em um grafico a fim de analisar uma curva temos:
dados %>%
na.omit() %>%
ggplot(aes(x = Rating)) +
geom_bar(width = .1)
Através do grafico gerado, podemos observar que existe uma tendência das aplicações ficarem proximas a 4,5 da nota, isso pode ser confirmado observando os seguintes valores:
dados %>%
na.omit() %>%
summarise(media = mean(Rating), desvio = sd(Rating), qtd = n(),
.groups = "drop")
## # A tibble: 1 × 3
## media desvio qtd
## <dbl> <dbl> <int>
## 1 4.19 0.515 9365
Com esses dados, percebemos que ,dentre 9365 aplicações, a média das notas é de 4,19 com um desvio padrão de meio ponto. A partir disso, podemos seguir analisando as variaveis escolhidas.
a faixa etaria de uma aplicativo é uma parte importante, pois ela tende a ditar um publico para sua aplicação. se fizermos uma distibuição das faixa etarias disponiveis na playstore com a nota aplicada a elas, podemos ver isso:
dados %>%
na.omit() %>%
ggplot(aes(x = `Content Rating`, y = Rating)) +
geom_quasirandom(width = .1) +
stat_summary(geom = "point", fun = "mean", color = "blue", size = 5) +
labs(title = "Distribuição e média (ponto vermelho) da faixa etária dos aplicativos")
Com os dados expostos no grafico, podemos perceber que existe uma quantidade bem abaixo de aplicações acima de 18 anos, então não vamos considera-las na análise futuro. A partir do gráfico podemos perceber que as notas são similares, porém com uma leve vantagem para o publico jovem. Analisando os valores de cada um, podemos ver que:
dados %>%
na.omit() %>%
group_by(`Content Rating`) %>%
filter(n() >= 100) %>%
summarise(media = mean(Rating), desvio = sd(Rating), qtd = n(),
.groups = "drop")
## # A tibble: 4 × 4
## `Content Rating` media desvio qtd
## <chr> <dbl> <dbl> <int>
## 1 Everyone 4.19 0.537 7419
## 2 Everyone 10+ 4.26 0.367 397
## 3 Mature 17+ 4.12 0.506 461
## 4 Teen 4.23 0.392 1084
Dados os valores de cada faixa etária, podemos ver que a faixa para todos os publicos é uma maioria nos dados e que todas as médias possuem uma variação baixa e são bastante similares, o que pode mostrar que a faixa etária não influência nas notas do publico.
É comum que coisas gratuitas sejam mais chamativas para o publico, mas será que adicionar um valor ao aplicativo eleva o status do mesmo? é isso que vamos analisar agora.
dados = dados %>%
na.omit()
ggplot(dados, aes(x=Type, y=Rating)) +
geom_boxplot(
# custom boxes
color="blue",
fill="blue",
alpha=0.2,
# Notch?
notch=TRUE,
notchwidth = 0.8,
# custom outliers
outlier.colour="red",
outlier.fill="red",
outlier.size=3
)
Analisando os blocos criados, podemos ver que as aplicações pagas tem uma leve média acima dos jogos gratis, porém os blocos permanecem similares o que não apresenta nenhuma discrepância visual. analisando seus valores, temos:
dados %>%
group_by(Type) %>%
summarise(media = mean(Rating), desvio = sd(Rating), qtd = n(),
.groups = "drop")
## # A tibble: 2 × 4
## Type media desvio qtd
## <chr> <dbl> <dbl> <int>
## 1 Free 4.19 0.512 8718
## 2 Paid 4.27 0.548 647
Com os dados fica evidente que o valor adicionada para a compra de um aplicativo não eleva tanto a média de uma aplicação, onde ambas apresentam um desvio similar.
Assim como a faixa etária, o gênero da aplicação tem o intuito de criar um enfoque em um determinado grupo que é ainda mais especifico que a faixa etária. a partir disso vamos analisar os dados dos diverso gêneros presentes na playstore, como existem varios separei os dados de apenas 10 com maior média:
agrupado = dados %>%
na.omit() %>%
group_by(Category) %>%
filter(n() >= 100) %>%
summarise(media = mean(Rating), desvio = sd(Rating), qtd = n(),
.groups = "drop")
agrupado = head(arrange(agrupado, desc(media), desc(desvio)), 10)
agrupado
## # A tibble: 10 × 4
## Category media desvio qtd
## <chr> <dbl> <dbl> <int>
## 1 EDUCATION 4.39 0.252 155
## 2 BOOKS_AND_REFERENCE 4.35 0.429 178
## 3 PERSONALIZATION 4.34 0.353 314
## 4 GAME 4.29 0.365 1097
## 5 HEALTH_AND_FITNESS 4.28 0.618 297
## 6 SHOPPING 4.26 0.405 238
## 7 SOCIAL 4.26 0.414 259
## 8 SPORTS 4.22 0.428 319
## 9 PRODUCTIVITY 4.21 0.505 351
## 10 FAMILY 4.19 0.508 1747
Com as médias ordenadas, podemos ver que a diferença do 10° para o 1° é de quase 0,2 com desvios pequenos dos dados. o mostra que subir alguns descimos na nota pode influenciar na sua posição, uma vez que a maiorias das notas esta proxima de 4.
dados %>%
filter(Category == "EDUCATION" |
Category == "BOOKS_AND_REFERENCE" |
Category == "PERSONALIZATION" |
Category == "GAME" |
Category == "HEALTH_AND_FITNESS" |
Category == "SHOPPING" |
Category == "SOCIAL" |
Category == "SPORTS" |
Category == "PRODUCTIVITY" |
Category == "FAMILY" ) %>%
ggplot( aes(x=Category, y=Rating, fill=Category))+
geom_boxplot() +
theme(axis.text.x = element_blank()) +
ggtitle("Boxplot das categorias") +
xlab("")
Analisando o gráfico, podemos ver box bem parecidas e com pontos distoantes para baixo, evidenciando que a maiorias das pessoas tendem a dar notas acima de 3.
Após ser feita a analise inicial das variaveis, vamos fazer uma análise mais aprofundanda das 3 sobre a variavel da nota dos aplicativos.
A partir de todas as análises feitas de cada variavel, vimos que grande parte não aparenta ter uma grande influência nas notas, porém precisamos de uma analise, mas profunda para tirarmos essas conclusão. Para finalizar nossa analise, vamos fazer a regressão logistica multivariada utilizando como equação:
Rating = (Category1Xcoef1 + Category2Xcoef2 + … + CategoryNXcoefN) + (Content_Rating1Xcoef1 + Content_Rating1Xcoef1 + Content_Rating1Xcoef1 + Content_Rating1Xcoef1) + (Type1Xcoef1 + Type2Xcoef2) + intercept
bm <- lm(Rating ~ Category + Type + `Content Rating`,
data = dados )
tidy(bm, conf.int = TRUE) %>% select(-p.value)
## # A tibble: 39 × 6
## term estimate std.error statistic conf.low conf.high
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) 4.49 0.304 14.8 3.89 5.08
## 2 CategoryAUTO_AND_VEHICLES -0.164 0.0877 -1.87 -0.336 0.00760
## 3 CategoryBEAUTY -0.0752 0.102 -0.740 -0.274 0.124
## 4 CategoryBOOKS_AND_REFERENCE -0.0133 0.0749 -0.178 -0.160 0.134
## 5 CategoryBUSINESS -0.234 0.0708 -3.31 -0.373 -0.0956
## 6 CategoryCOMICS -0.210 0.0937 -2.24 -0.394 -0.0266
## 7 CategoryCOMMUNICATION -0.201 0.0704 -2.85 -0.339 -0.0627
## 8 CategoryDATING -0.381 0.0794 -4.80 -0.537 -0.225
## 9 CategoryEDUCATION 0.0320 0.0763 0.419 -0.118 0.182
## 10 CategoryENTERTAINMENT -0.241 0.0776 -3.10 -0.393 -0.0885
## # … with 29 more rows
glance(bm)
## # A tibble: 1 × 12
## r.squared adj.r.squared sigma statistic p.value df logLik AIC BIC
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 0.0321 0.0282 0.508 8.14 2.14e-43 38 -6925. 13930. 14216.
## # … with 3 more variables: deviance <dbl>, df.residual <int>, nobs <int>
Após fazermos a regressão logistica, vemos que nenhuma das variaveis tem uma influência nas notas das aplicações onde a função resultou em um r squared baixo com 0.03. Isso mostra que para variaveis mais gerais não nos leva a encontrar uma formula para a o sucesso na playstore :( . Ainda sim, olhando as variaveis, podemos destacar 3 variaveis que foram:
Essas variaveis foram as unicas que apresentaram um valore positivo na regressão, mostrando que, por menor que seja, elas possuem um ganho positivo na nota da aplicação.
José Amândio.